Which choice model to analyse my binary stated choice experiment data to estimate willingess-to-pay? 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!
 A: While I'm no expert in choice modeling, I believe I know enough about GLM's and have read a thing or two about choice modeling and I think I can help you.
If your response is binary, it doesn't make sense to use a multinomial logit. A multinomial logit is, under the hood, a bunch of logistic regressions of one vs all other categories.
I don't know how your data is organized, nor what is the standard in choice modeling, but if the respondent was confronted with 2 products, and each of them has a few characteristics each with a different factor, your data should be organized in the following manner:




choice
respondent_id
publicgoodtype1
publicgoodtype2
price1
price2




1
1
Library
Park
5
10


0
1
Museum
Park
10
25


1
2
Museum
Library
10
5




Where choice may be standardized as 'chose the first option or not'. This way, we have the covariates of both products determining the choice.
If the product has a name, such as  product A which is a library, product B which is a museum, and product C which is a park, each with its own characteristics, we can set up the table for a multinomial logit as:




choice
respondent_id
publicgoodtype1
publicgoodtype2
price1
price2




A
1
Library
Park
5
10


C
1
Museum
Park
10
25


B
2
Museum
Library
10
5




With this setup, I believe you are able to calculate willingness-to-pay.
