在R Mlogit中包括选择性退出作为替代特定常数
在我的硕士论文中,我正在做一个离散选择实验,研究一种治疗减肥的假想药物的属性偏好,我需要一些帮助 我的设计是通用的,有12个选项集,有三个选项:产品A、产品B和选项out 不知何故,我需要将option out作为一个可选的特定常量,但这里似乎我做错了什么。我对三个备选方案的12个选择集有197个回答,因此197*12*3个选择观察值=7092在R Mlogit中包括选择性退出作为替代特定常数,r,mlogit,R,Mlogit,在我的硕士论文中,我正在做一个离散选择实验,研究一种治疗减肥的假想药物的属性偏好,我需要一些帮助 我的设计是通用的,有12个选项集,有三个选项:产品A、产品B和选项out 不知何故,我需要将option out作为一个可选的特定常量,但这里似乎我做错了什么。我对三个备选方案的12个选择集有197个回答,因此197*12*3个选择观察值=7092 > head(choice3, 12*3) id choice_id mode.ids choice noadveff tab infreq_3
> head(choice3, 12*3)
id choice_id mode.ids choice noadveff tab infreq_3 cost weightloss weightlosssq optout
1 x1 A 0 1 -1 -1 550 3.5 12.25 -1
1 x1 B 0 -1 1 1 90 6.0 36.00 -1
1 x1 C 1 0 0 0 0 0.0 0.00 1
1 x10 A 0 1 -1 1 50 6.0 36.00 -1
1 x10 B 0 -1 1 -1 165 3.5 12.25 -1
1 x10 C 1 0 0 0 0 0.0 0.00 1
1 x11 A 0 -1 -1 1 165 2.0 4.00 -1
1 x11 B 1 1 1 -1 90 3.5 12.25 -1
1 x11 C 0 0 0 0 0 0.0 0.00 -1
1 x12 A 0 -1 -1 1 550 6.0 36.00 -1
1 x12 B 0 1 1 -1 1000 2.0 4.00 -1
1 x12 C 1 0 0 0 0 0.0 0.00 1
1 x13 A 0 -1 -1 -1 90 6.0 36.00 -1
1 x13 B 0 1 1 1 1000 6.0 36.00 -1
1 x13 C 1 0 0 0 0 0.0 0.00 1
1 x2 A 0 -1 -1 -1 1000 6.0 36.00 -1
1 x2 B 0 1 1 1 300 2.0 4.00 -1
1 x2 C 1 0 0 0 0 0.0 0.00 1
1 x3 A 0 -1 -1 1 1000 6.0 36.00 -1
1 x3 B 1 1 1 -1 50 6.0 36.00 -1
1 x3 C 0 0 0 0 0 0.0 0.00 -1
1 x4 A 0 1 -1 1 165 3.5 12.25 -1
1 x4 B 0 -1 1 -1 550 2.0 4.00 -1
1 x4 C 1 0 0 0 0 0.0 0.00 1
1 x5 A 0 -1 -1 -1 550 2.0 4.00 -1
1 x5 B 1 1 1 1 50 6.0 36.00 -1
1 x5 C 0 0 0 0 0 0.0 0.00 -1
1 x6 A 0 1 -1 -1 300 6.0 36.00 -1
1 x6 B 0 -1 1 1 50 3.5 12.25 -1
1 x6 C 1 0 0 0 0 0.0 0.00 1
1 x8 A 0 -1 -1 1 300 3.5 12.25 -1
1 x8 B 1 1 1 -1 165 6.0 36.00 -1
1 x8 C 0 0 0 0 0 0.0 0.00 -1
1 x9 A 0 -1 1 -1 300 6.0 36.00 -1
1 x9 B 0 1 -1 1 90 2.0 4.00 -1
1 x9 C 1 0 0 0 0 0.0 0.00 1
我对我的分类变量(noadfeff、tab、inferq_3和optout)使用效果编码
mode.id表示备选方案,即产品A或B,或选项out(mode.id==C)
optout变量已使用以下命令进行编码
choice2$optout <- ifelse(choice2$mode.ids == "C" & choice2$choice == 1, "1", "-1")
没有optout的类似模型不会出现任何问题,因此我的optout变量肯定出了问题
我希望你能看到问题在哪里?:)
最好的,
亨里克对不起,
我自己发现了错误-下面提供了解决方案
choice2$optout <- ifelse(choice2$mode.ids == "C", "1", "-1")
选择2$optout
model.all <- mlogit(formula = choice ~ noadveff + tab + infreq_3 + cost + weightloss | optout | 0 ,
data = mlogit.all,
rpar = c(noadveff = 'n', tab = 'n', infreq_3 = 'n', weightloss = 'n', optout = 'u'),
R = 100,
halton = NA,
print.level = 0,
panel = TRUE
)
Error in solve.default(H, g[!fixed]) :
Lapack routine dgesv: system is exactly singular: U[8,8] = 0
choice2$optout <- ifelse(choice2$mode.ids == "C", "1", "-1")
model.all <- mlogit(formula = choice ~ noadveff + tab + infreq_3 + cost + weightloss + optout | -1 | 0 ,
data = mlogit.all,
rpar = c(noadveff = 'n', tab = 'n', infreq_3 = 'n', weightloss = 'n'),
R = 100,
halton = NA,
print.level = 0,
panel = TRUE
)