I followed the recipe of a stated-choice experiment in political science https://doi.org/10.1093/pan/mpt024 (they call it "conjoint" but I think this term is debated).
In the end I made the following stated-choice experiment about public good provision. This is also how I discovered a lot of economics and transport economics literature on the subject, which now confuses me.
Respondents get two public goods (described by 2 attributes and a price (tax), that is 3 attributes, and they all have very different levels).
These are the attributes:
publicgoodtype_levels <- c( "Library", "Child-care", "Park","Museum" )
price_levels <- c("1", "5", "10","15", "20", "25") #in monthly tax increase
buildingtime_levels <- c("120 months", "60 months", "30 months", ...)
There is actually around 30 time attributes in a fully randomised full-factorial design. However the n is large, so I hope it is not the problem.
I found an R package, I used and got quite understandable results, it is called "CREGG". However, it does not allow that any of the model inputs (in my case, price) to be imputed as a number, all inputs need to be factors (so the model creates dummies).
I want to calculate the willingness-to-pay so I decided I need to use another package. A way to calculate the willingness-to-pay is the following: Use a model "... where we estimate a single parameter for price, we can compute the average willingness-to-pay for a particular level of an attribute by dividing the coefficient for that level by the price coefficient." https://link.springer.com/chapter/10.1007/978-3-030-14316-9_13 This is why I want a numerical input for my price variable.
The book uses mlogit package. (However, I am not sure they look at binary cases, as in my example where respondents always only compare 2 goods and are forced to decide for one. (Each respondent does this comparison of 2 for multiple times in a row. In total 16 goods are evaluated (8 pairs-->8 decisions made).)
However, there is a small problem, when I use the R package "mlogit" , this is my model:
buggymodel <- mlogit (choice ~ 0 + publicgoodtype + buildingtime + priceasanumber, data = dataframewithdata )
This always leads to the error, as soon as I include building time. Error in solve.default(H, g[!fixed]) : system is computationally singular: reciprocal condition number = 1.7958e-19
So, I guess I need another model. I went back to basics and decided: a logit model it is!
glm(choice ~ publicgoodtype + buildingtime + priceasanumber, data = dataframewithdata,family = binomial(link = "logit"))
While this model seems fine, I still wonder: How could I introduce the information, that people did multiple comparisons? And this basically leads to the title? How do I decide for the right model? The pol-sci folks seem to use OLS but in other disciplines they use so fancy models. I am deeply confused and would like to find help on this issue.
Thank you so much!