gri*_*o06 5 r bayesian mcmc glm
我发现到处都发布了同样的问题,而且我似乎无法找到任何适合我的数据的解决方案,我想知道我是否正在尝试将我的数据拟合到一个模型太复杂了。
\n\n我正在尝试将我的数据拟合到 MCMCglmm 包中的多项逻辑回归模型。我查看了许多不同的文档、教程和 MCMCglmm 手册本身,主要是Florian Jaeger 的教程,它非常出色且全面。然而,我在他选择先验的 G 结构和 R 结构的值时迷失了方向,并且不断收到此错误消息
\n\nError in priorformat(if (NOpriorG) { : \n V is the wrong dimension for some prior$G/prior$R elements\nRun Code Online (Sandbox Code Playgroud)\n\n特别是,我不确定n在这两个数据中应该给我的数据赋予什么值,但有些不透明的错误消息表明这是一个问题V
这是我的数据的(相关)子集:
\n\nCG_imm locuteur enquete loc_age loc_sexe left liquid right articulation_C1 voice_C1 NC_C1 NC_right voice_right right2 pos logfreq realization\nabordable 44ajs1 Nantes 79 M bl l p stop V Vstop stop NV NVstop adj NA 2\nadmettre 91adb1 Brunoy 54 M tR R E stop N NVstop mid-vowel V mid-vowel verb 6.52209279 0\nadorable 91aal1 Brunoy 27 F bl l break stop V Vstop break break weak break adj NA 0\nagr\xc3\xa9able 92aaf2 PC 55 F bl l break stop V Vstop break break strong break adj 7.95191138 0\nagr\xc3\xa9able 21abm1 Dijon 31 M bl l k stop V Vstop stop NV NVstop adj 7.95191138 1\nagr\xc3\xa9able 75ccr2 Paris NA F bl l break stop V Vstop break break break adj 7.95191138 0\nagr\xc3\xa9able 69ajl1 Lyon 52 M bl l break stop V Vstop break break weak break adj 7.95191138 0\nAlexandre 91asl1 Brunoy 64 F dR R break stop V Vstop break break weak break noun NA 0\nRun Code Online (Sandbox Code Playgroud)\n\n从这个数据集中,我尝试realization使用许多不同的预测变量来预测三个级别的变量。这是我尝试过的模型之一:
CG_imm locuteur enquete loc_age loc_sexe left liquid right articulation_C1 voice_C1 NC_C1 NC_right voice_right right2 pos logfreq realization\nabordable 44ajs1 Nantes 79 M bl l p stop V Vstop stop NV NVstop adj NA 2\nadmettre 91adb1 Brunoy 54 M tR R E stop N NVstop mid-vowel V mid-vowel verb 6.52209279 0\nadorable 91aal1 Brunoy 27 F bl l break stop V Vstop break break weak break adj NA 0\nagr\xc3\xa9able 92aaf2 PC 55 F bl l break stop V Vstop break break strong break adj 7.95191138 0\nagr\xc3\xa9able 21abm1 Dijon 31 M bl l k stop V Vstop stop NV NVstop adj 7.95191138 1\nagr\xc3\xa9able 75ccr2 Paris NA F bl l break stop V Vstop break break break adj 7.95191138 0\nagr\xc3\xa9able 69ajl1 Lyon 52 M bl l break stop V Vstop break break weak break adj 7.95191138 0\nAlexandre 91asl1 Brunoy 64 F dR R break stop V Vstop break break weak break noun NA 0\nRun Code Online (Sandbox Code Playgroud)\n\n在我的完整数据集中,我选择作为随机效应的预测变量具有以下级别:
\n\nk <- length(levels(df$realization))\nI <- diag(k-1)\nJ <- matrix(rep(1, (k-1)^2), c(k-1, k-1))\n\nprior1<-list(\n R = list(fix=1, V=0.5 * (I + J), n = 2\n ),\n G = list(\n G1 = list(V = diag(4), n = 4),\n G2 = list(V = diag(8), n = 8),\n G3 = list(V = diag(4), n = 4),\n G4 = list(V = diag(4), n = 4),\n G5 = list(V = diag(14), n = 14),\n G6 = list(V = 3, n = 3),\n G7 = list(V = 3, n = 3),\n G8 = list(V = diag(6), n = 6)))\n\nm <- MCMCglmm(realization ~ -1 + trait + NC_C1*liquid + right2 + loc_age + logfreq + pos,\n random = ~ us(trait):CG_imm + us(NC_C1*liquid):CG_imm +\n us(trait):locuteur + us(trait):enquete + us(right2):CG_imm +\n us(loc_age):locuteur + us(log_freq):CG_imm + us(pos):CG_imm,\n rcov = ~ us(trait):units,\n prior = prior1,\n burnin = 15000,\n nitt = 40000,\n family = "categorical",\n data = df)\nRun Code Online (Sandbox Code Playgroud)\n\n所有固定效应预测变量都是分类变量,除了loc_age和log_freq 分类固定预测变量处于以下级别:
> length(levels(ol_north$CG_imm))\n[1] 181\n> length(levels(ol_north$enquete))\n[1] 13\n> length(levels(ol_north$locuteur))\n[1] 129\nRun Code Online (Sandbox Code Playgroud)\n\n我已经摆弄了nG 结构列表和 R 结构中的值,并且调整了 G 结构中参数的值,diag()但无济于事。对于如此复杂的模型,我不确定我的错误到底发生在哪里。我已将模型简化为这样,并使其收敛,但有一个警告:
> length(levels(ol_north$NC_C1))\n[1] 4\n> length(levels(ol_north$liquid))\n[1] 2\n> length(levels(ol_north$right2))\n[1] 14\n> length(levels(ol_north$pos))\n[1] 6\nRun Code Online (Sandbox Code Playgroud)\n\n非常感谢您提前提供的任何帮助!
\n小智 0
除非您期望从数据中获得特定的内容,否则您可以尝试按以下方式设置先验:
priors <- list(R = list(diag(1), nu = 10^-6), G = list(G1 = list(V = 1, nu = 10^-6)))
Run Code Online (Sandbox Code Playgroud)
设置这么小的 nu 意味着你设置了一个“平坦先验”,即你说“方差可能是 1,但我对此完全不确定”,所以你基本上不会影响马尔可夫链的开始位置。
您也可以查看这个教程。祝你好运!