我有一个glmer()带有十二个级别的分类预测器的模型。当我打印 时summary(),它包含所有十二个级别。
> model.contcons <- data %>%
glmer(bin_choice ~ Wshort + (1|id), data = ., family = binomial, control = glmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
> coef(summary(model.contcons))
Estimate Std. Error z value Pr(>|z|)
(Intercept) -1.844979105 0.08002527 -23.0549555 1.311832e-117
Wshortcutwelfare 0.028561627 0.10428477 0.2738811 7.841760e-01
Wshortdiscipline -0.349133890 0.11034237 -3.1640963 1.555653e-03
Wshortfreedom -0.003641179 0.10245239 -0.0355402 9.716490e-01
WshortineqincOK 0.107650142 0.10173642 1.0581278 2.899972e-01
Wshortleader 0.125679107 0.10041647 1.2515786 2.107235e-01
Wshortpolice 0.217560461 0.10133894 2.1468595 3.180447e-02
Wshortpolitduty 0.177802391 0.09991568 1.7795244 7.515383e-02
Wshortrefugees 0.109247617 0.10508525 1.0396094 2.985214e-01
WshortRussia 0.115529761 0.10101235 1.1437192 2.527401e-01
Wshorttaxesdown 0.176320660 0.10252782 1.7197347 8.548067e-02
Wshortworse-off -0.016075802 0.10455777 -0.1537504 8.778065e-01
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,使用ggeffects函数(ggpredict()或ggemmeans())只能打印八个。
> ggemmeans(model.contcons, "Wshort [all]")
# Predicted probabilities of bin_choice
Wshort | Predicted | 95% CI
-------------------------------------
climate | 0.14 | [0.12, 0.16]
cutwelfare | 0.14 | [0.12, 0.16]
freedom | 0.14 | [0.12, 0.15]
ineqincOK | 0.15 | [0.13, 0.17]
leader | 0.15 | [0.13, 0.17]
politduty | 0.16 | [0.14, 0.18]
refugees | 0.15 | [0.13, 0.17]
worse-off | 0.13 | [0.12, 0.15]
Run Code Online (Sandbox Code Playgroud)
怎样才能得到全部十二个呢?我看不到任何限制帮助中打印内容的参数,也看不到对预测器可能拥有的类别数量的任何限制。被丢弃的甚至似乎没有按任何特定顺序排列,那么为什么具体缺少这四个(纪律、警察、俄罗斯、减税)呢?
谷歌搜索 ggeffects 和类别也没有帮助。我知道如何手动计算边际均值,但ggeffects会很方便。
它很晦涩,但在下面?as.data.frame.ggeffects:
\n\n打印结果
\n
\n\n\xe2\x80\x98print()\xe2\x80\x99 方法给出了干净的输出(特别是对于按组进行的预测),并指示协变量保持不变的值。此外, \xe2\x80\x98print()\xe2\x80\x99 方法具有 \arguments \xe2\x80\x98digits\xe2\x80\x99 和\xe2\x80\x98n\xe2\x80\x99 来控制要打印的小数位数和行数\n ...
\n
(强调已添加)。
\n使用@Ventrilocus\'s 示例数据:
\n因此
\nprint(ggemmeans(model.contcons, "Wshort"), n = Inf)\nRun Code Online (Sandbox Code Playgroud)\n(在这种情况下你可以说n=12......)
Predicted probabilities of bin_choice\nWshort | Predicted | 95% CI\n-------------------------------------\nclimate | 0.48 | [0.36, 0.60]\ncutwelfare | 0.62 | [0.51, 0.72]\ndiscipline | 0.46 | [0.35, 0.57]\nfreedom | 0.39 | [0.29, 0.50]\nineqincOK | 0.53 | [0.42, 0.63]\nleader | 0.52 | [0.42, 0.63]\npolice | 0.47 | [0.38, 0.57]\npolitduty | 0.48 | [0.38, 0.58]\nrefugees | 0.56 | [0.46, 0.65]\nRussia | 0.54 | [0.44, 0.63]\ntaxesdown | 0.48 | [0.38, 0.59]\nworse-off | 0.45 | [0.34, 0.56]\nRun Code Online (Sandbox Code Playgroud)\n我觉得该函数应该打印一条消息,让用户知道某些级别已被删除......
\n至于“为什么这些特定级别被删除/显示?” 这表明 print 方法调用.get_sample_rows(i, n),并且该函数表明它本质上是在尝试选择均匀间隔的行来删除/包含...它正在执行与此计算相同的操作
nr.of.rows <- 1:12\nn <- 8\nround(c(\n min(nr.of.rows),\n stats::quantile(nr.of.rows, seq_len(n - 2) / n),\n max(nr.of.rows)\n )\n)\n 12.5% 25% 37.5% 50% 62.5% 75% \n 1 2 4 5 6 8 9 12 \nRun Code Online (Sandbox Code Playgroud)\n因此第 3、7、10、11 行被省略。
\n