1

我希望你们中的一些人对ChoiceModelRSermas 和 Colias 的 R 包有一些经验,以估计分层贝叶斯多项式 Logit 模型。实际上,我在 R 和分层贝叶斯方面都是新手。但是,我尝试使用帮助文件中 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

实际上,我不知道出了什么问题,因为我使用了相同的数据结构,即使我有更多的自变量、更多的选择集和选择集中的更多备选方案。如果有人能在黑暗中照亮我会很棒

4

1 回答 1

3

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

此错误的最常见原因之一(根据我的经验)是场景变量或替代变量在您的数据中不是按升序排列的。

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 帐户,如果您最终想让其他用户查看,您也可以在那里发布您的数据(或修改的数据)。

于 2013-11-08T21:48:12.687 回答