gpt4 book ai didi

r - 多项式混合 logit 模型 mlogit r-package

转载 作者:行者123 更新时间:2023-12-04 11:12:51 34 4
gpt4 key购买 nike

我发现了 mlogit - package用于多项式 logit 模型,以寻找估计多项式混合 logit 模型。在阅读了优秀的小插图后,我发现我无法将我的数据应用于任何描述的示例。

我现在写信希望对我的问题有所帮助,并创建了一个最小的例子来说明我的情况。

问题如下:
在某处有辅音“Q”的单词。现在进行了一项实验,这些人的任务是听这些单词并说出他们是否听到了 Q、U 或其他辅音。这必须根据音节位置或真实/非真实单词等因素进行建模。

在最小的例子中,我用音节位置创建了 4 个人和他们的答案。

library(mlogit)
library(nnet)
set.seed(1234)
data <- data.frame(personID = as.factor(sample(1:4, 40, replace=TRUE)),
decision = as.factor(sample(c("Q","U", "other"), 40, replace=TRUE)),
syllable = as.factor(sample(1:4, 40, replace=TRUE)))
summary(data)
personID decision syllable
1:11 other:10 1:18
2:10 Q :18 2: 9
3:10 U :12 3: 5
4: 9 4: 8

据我所知 nnetmultinom功能不包括混合模型。
modNnet1 <- multinom(decision ~ syllable, data=data)

首先我使用了 mlogit.data - reshape 文件的功能。在与一位同事讨论后,我们得出的结论是没有替代的具体变量。
 dataMod <- mlogit.data(data, shape="wide", choice="decision", id.var="personID")

mod1 <- mlogit(formula = decision ~ 0|syllable,
data = dataMod,
reflevel="Q", rpar=c(personID="n"), panel=TRUE)
Error in names(sup.coef) <- names.sup.coef :
'names' attribute [1] must be the same length as the vector [0]

mod2 <- mlogit(formula = decision ~ personID|syllable,
data = dataMod,
reflevel="Q", rpar=c(personID="n"), panel=TRUE)
Error in solve.default(H, g[!fixed]) :
Lapack routine dgesv: system is exactly singular: U[3,3] = 0

不,我不知道该怎么做,所以我在这里寻求帮助。但是我相信这种问题可以通过 mlogit来解决。我只是还没有看到它;)

最佳答案

rpar参数只接受替代特定的变量。无需在模型公式中指定特定于人员的 id——这通过包含 id.var = something 来处理。在 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 中这样做。 (但见 this post )。

在没有替代特定协变量的情况下适合随机截距的一种选择是 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 实验室的博客有一个 short tutorial on multinomial models via MCMCglmm 除了 MCMCglmm 之外,您可能会觉得有帮助文档。

关于r - 多项式混合 logit 模型 mlogit r-package,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22020050/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com