Skip to main content
 首页 » 编程设计

r之在 mclogit 中编码随机效应

2025年05月04日77haluo1

我正在尝试使用条件逻辑模型分析离散选择实验,使用 R 包 mclogit 中的 mclogit 函数对每个受试者产生随机效应。 .每个受试者 (ID) 对由 4 个备选方案组成的 4 个选择集进行评分。

我收到错误

Error in attributes(.Data) <- c(attributes(.Data), attrib) : cannot set attribute on a symbol



当我将其编码为

out2 <- mclogit(fm2, random=~1|ID, data=ds.pork)



我希望得到帮助正确编码。
library(support.CEs) 
library(survival) 
library(mclogit) 
 
d.pork <- Lma.design( 
  attribute.names = list( 
    Price = c("100", "130", "160", "190")), 
  nalternatives = 3, 
  nblocks = 4, 
  row.renames = FALSE, 
  seed = 987) 
 
data(pork) 
 
dm.pork <- make.design.matrix( 
  choice.experiment.design = d.pork, 
  optout = TRUE, 
  continuous.attributes = c("Price"), 
  unlabeled = FALSE) 
 
ds.pork <- make.dataset( 
  respondent.dataset = pork, 
  choice.indicators = 
    c("q1", "q2", "q3", "q4"), 
  design.matrix = dm.pork) 
 
ds.pork$ID<-factor(ds.pork$ID) 
 
fm1 <- RES ~ ASC1 + Price1 + ASC2 + Price2 + ASC3 + Price3 + strata(STR) 
fm2<-cbind(RES, STR) ~ ASC1 + Price1 + ASC2 + Price2 + ASC3 + Price3 
 
out1 <- clogit(fm1, data = ds.pork) 
out2 <- mclogit(fm2, random=~1|ID, data=ds.pork) 

请您参考如下方法:

错误来自使用 fm2而不是直接输入公式,如

out2 <- mclogit(cbind(RES, STR) ~ ASC1 + Price1 + ASC2 + Price2 + ASC3 + Price3, random = ~1|ID, data = ds.pork) 

现在还有另一个错误,但现在它纯粹是关于模型规范。