我希望你们中的一些人对Sermas和Colias的R包ChoiceModelR有一点经验,以估计一个Hierarchical Bayes Multinomial Logit模型。目前,我正在分析联合(测试数据)中的数据,以便为实际数据做好准备。数据文件具有所需的格式(UnitID Set Alt X_1 ... X_natts y)y是离散的。在每个选择集中,我有3个替代方案(alt:1-3)以及无选择选项(alt:4)。自变量是有效编码的(1,0,-1)。据我所知,这些数据是所需的格式。但是,我无法估计系数。如果我运行没有人口统计变量的模型,我会收到以下错误:
Error in Ops.data.frame(data[, 1], ID[i]) :
‘==’ only defined for equally-sized data frames
使用人口统计变量我得到以下内容:
Error: number of rows in demos does not equal number of units
到目前为止,我在互联网上找不到错误解释,也不知道如何解决这个问题。我想,这是我看不到的数据文件中的一个简单错误。我已经尝试使用不同的编码,但我得到了相同的错误。这是我使用的代码:
> xcoding=c(0,0,0,0,0,0,0,0,0,0,0,0,0,0)
> mcmc = list(R = 20000, use = 10000)
> options = list(none=FALSE, save=TRUE, keep=1)
> out = choicemodelr(data=robottest_bayes, xcoding, mcmc = mcmc, options = options)
> #with demographic variables
> out = choicemodelr(data=robottest_bayes, demos=robottest_bayes_demo, xcoding, mcmc = mcmc, options = options)
数据文件如下:
> show(robottest_bayes)
# A tibble: 8,464 × 18
respid ques alt apperance_burly apperance_intelligent apperance_pink features_car features_laundry features_compute
<int> <int> <int> <int> <int> <int> <int> <int> <int>
1 1 1 1 1 0 0 1 0 0
2 1 1 2 0 1 0 0 1 0
3 1 1 3 0 0 1 0 0 1
4 1 1 4 0 0 0 0 0 0
5 1 2 1 0 1 0 0 0 0
6 1 2 2 0 0 1 0 0 0
7 1 2 3 1 0 0 0 0 0
8 1 2 4 0 0 0 0 0 0
9 1 3 1 0 0 1 0 0 0
10 1 3 2 1 0 0 0 0 0
# ... with 8,454 more rows, and 9 more variables: features_dog <int>, features_vaccuum <int>, features_splines <int>,
# brand_botpro <int>, brand_gizmobot <int>, price_10 <int>, price_11 <int>, nochoice <int>, choice <int>
> show(robottest_bayes_demo)
# A tibble: 529 × 3
respid sex age
<int> <int> <int>
1 1 0 42
2 2 0 55
3 3 0 37
4 4 0 35
5 5 1 41
6 6 1 35
7 7 0 56
8 8 0 27
9 9 1 36
10 10 1 42
# ... with 519 more rows
我非常感谢您的任何建议,并且已经感谢您花费在答案上的时间了!
贝斯茨, 迈克尔
答案 0 :(得分:0)
您可以尝试从数据文件中排除无选项的行,并将脚本修改为:
options = list(none = TRUE,save = TRUE,keep = 1)
由于你有3个选择,对于被选人选择&#34;无选择选项&#34;的选择集,选择nubmer将是&#34;替代数量+ 1&#34;,即, 4. ChoiceModelR将识别出&#34; no choice选项&#34;被选中。
根据p。 5,ChoiceModelR的插图,
&#34; none:设置为TRUE以估计无参数,并且数据不包括 “无”的行(即无选择)(默认为FALSE)。&#34;
尝试是否有效。