The rpar
参数仅接受替代特定变量。无需在模型公式中指定特定于人员的 ID——这是通过包含来处理的id.var = something
in the mlogit.data
命令。例如,如果您有一个替代的特定协变量acov
,您可以允许随机斜率acov
跨面板:
N = 200
dat <- data.frame(personID = as.factor(sample(1:4, N, replace=TRUE)),
decision = as.factor(sample(c("Q","U", "other"), N, replace=TRUE)),
syllable = as.factor(sample(1:4, N, replace=TRUE)),
acov.Q = rnorm(N), acov.U = rnorm(N), acov.other = rnorm(N))
dataMod <- mlogit.data(dat, shape="wide", choice="decision", id.var="personID", varying = 4:6)
mlogit(formula = decision ~ acov|syllable, rpar = c(acov = "n"), panel = T, data = dataMod)
看来您正在尝试为每个替代方案(而不是随机斜率)拟合一个随机的、特定于人的截距的模型。不幸的是,我认为你不能这样做mlogit
(但请参阅这个帖子 https://stats.stackexchange.com/questions/51148/unable-to-provide-random-parameter-with-mlogit).
在没有替代特定协变量的情况下,可以拟合随机截距的一种选择是MCMCglmm
.
library(MCMCglmm)
priors = list(R = list(fix = 1, V = 0.5 * diag(2), n = 2),
G = list(G1 = list(V = diag(2), n = 2)))
m <- MCMCglmm(decision ~ -1 + trait + syllable,
random = ~ idh(trait):personID,
rcov = ~ us(trait):units,
prior = priors,
nitt = 30000, thin = 20, burnin = 10000,
family = "categorical",
data = dat)
相关问题有先验选择、马尔可夫链的收敛等。Florian Jaeger实验室的博客有一篇多项式模型的简短教程通过MCMCglmm http://hlplab.wordpress.com/2009/05/07/multinomial-random-effects-models-in-r/除了以下内容之外,您可能会发现有帮助MCMCglmm
文档。