ChoiceModelR - 分层贝叶斯多项Logit模型

时间:2013-07-08 08:37:00

标签: r bayesian multinomial

我希望你们中的一些人对Sermas和Colias的R包ChoiceModelR有一点经验,以估计一个Hierarchical Bayes Multinomial Logit Model。实际上,我是R和Hierarchical Bayes的新手。但是,我试图通过使用Sermas和Colias在帮助文件中提供的脚本来获得一些估计值。我有一个与它们使用相同结构的数据集(ID,选择集,替代,自变量和选择变量)。我有四个独立变量,所有这些变量都是二进制编码的分类变量,没有一个受到限制。我有八个选择集,每个集合中有三个选项,以及一个无选择选项作为第四选择。我尝试了以下脚本:

library (ChoiceModelR)
data <- read.delim("Z:/KLU/CSR/CBC/mp3_vio.txt")   
xcoding=c(0,0,0,0)  
mcmc = list(R = 10, use = 10)  
options = list(none=FALSE, save=TRUE, keep=1)  
attlevels=c(2,2,2,2)  
c1=matrix(c(0,0,0,0),2,2)  
c2=matrix(c(0,0,0,0),2,2)  
c3=matrix(c(0,0,0,0),2,2)  
c4=matrix(c(0,0,0,0),2,2)  
constraints = list(c1, c2, c3, c4)  
out = choicemodelr(data, xcoding, mcmc = mcmc, options = options, constraints = constraints) 

并收到以下错误消息:

Error in 1:nalts[i] : result would be too long a vector 

此外:有50个或更多警告(使用warnings()查看前50个警告)。上述警告如下:

  1. In max(temp[temp[, 2] == j, 3]) : no non-missing arguments to max; returning -Inf
  2. In max(temp[temp[, 2] == j, 3]) : no non-missing arguments to max; returning -Inf
  3. 实际上,我不知道出了什么问题,因为我使用相同的数据结构,即使我有更多的自变量,更多的选择集,以及选择集中的更多选择。如果有人可以在黑暗中发光,我会很棒。

1 个答案:

答案 0 :(得分:2)

我知道这可能因为您很久以前发布而没有帮助,但如果将来再次发布,这可能会有用。

出现此错误的最常见原因之一(根据我的经验),方案变量或替代变量在数据中不按升序排列。

id    scenario    alt    x1   ...    y
1     1           1      4           1
1     1           2      1           0
1     3           1      4           2
1     3           2      5           0
2     1           4      3           1
2     1           5      1           0
2     2           1      4           2
2     2           2      3           0

此数据集将为您提供错误,因为场景和替代变量必须是升序,​​并且它们不得跳过任何值。为了完全重申我的意思,必须按如下方式对场景和alt变量进行重新排序才能工作:

id    scenario    alt    x1   ...    y
1     1           1      4           1
1     1           2      1           0
1     2           1      4           2
1     2           2      5           0
2     1           1      3           1
2     1           2      1           0
2     2           1      4           2
2     2           2      3           0

我经常使用ChoiceModelR,这就是过去导致这些错误的原因。如果你有一个github帐户,你也可以在那里发布你的数据(或修改过的数据),如果你想让其他用户看看。