R 包 ggeffects 不会打印所有类别的预测

Ran*_*tor 2 r

我有一个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会很方便。

Ben*_*ker 6

它很晦涩,但在下面?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

(强调已添加)。

\n

使用@Ventrilocus\'s 示例数据:

\n

因此

\n
print(ggemmeans(model.contcons, "Wshort"), n = Inf)\n
Run Code Online (Sandbox Code Playgroud)\n

(在这种情况下你可以说n=12......)

\n
 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]\n
Run Code Online (Sandbox Code Playgroud)\n

我觉得该函数应该打印一条消息,让用户知道某些级别已被删除......

\n

至于“为什么这些特定级别被删除/显示?” 表明 print 方法调用.get_sample_rows(i, n),并且该函数表明它本质上是在尝试选择均匀间隔的行来删除/包含...它正在执行与此计算相同的操作

\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 \n
Run Code Online (Sandbox Code Playgroud)\n

因此第 3、7、10、11 行被省略。

\n