【发布时间】:2021-09-20 23:20:12
【问题描述】:
在使用 R lme4 多级模型时,我正在努力计算连续预测变量的最大-最小值之间的效应大小。
模拟数据:预测变量“x”的范围为 1 到 3
library(tidyverse)
n = 100
a = tibble(y = rep(c("pos", "neg", "neg", "neg"), length.out = n), x = rep(3, length.out = n), group = rep(letters[1:7], length.out = n))
b = tibble(y = rep(c("pos", "pos", "neg", "neg"), length.out = n), x = rep(2, length.out = n), group = rep(letters[1:7], length.out = n))
c = tibble(y = rep(c("pos", "pos", "pos", "neg"), length.out = n), x = rep(1, length.out = n), group = rep(letters[1:7], length.out = n))
d = rbind(a, b)
df = rbind(d, c)
df = df %>% mutate(y = as.factor(y))
df
型号
library("lme4")
m = glmer(
y ~ x + (x | group),
data = df,
family = binomial(link = "logit"))
输出
ggpredict(m, "x")
.
# Predicted probabilities of y
x | Predicted | 95% CI
----------------------------
1 | 0.75 | [0.67, 0.82]
2 | 0.50 | [0.44, 0.56]
3 | 0.25 | [0.18, 0.33]
Adjusted for:
* group = 0 (population-level)
我无法计算预测变量的“x”最大值 (3) 和最小值 (1) 值之间的影响大小
我最好的尝试
library("emmeans")
emmeans(m, "x", trans = "logit", type = "response", at = list(x = c(1, 3)))
x response SE df asymp.LCL asymp.UCL
1 0.75 0.0387 Inf 0.667 0.818
3 0.25 0.0387 Inf 0.182 0.333
Confidence level used: 0.95
Intervals are back-transformed from the logit scale
如何计算 CI 在预测变量的“x”最大值 (3) 和最小值 (1) 之间的影响大小? 影响大小应该是概率尺度。
【问题讨论】:
-
也许是
pairs(emmeans(...))? -
似乎没有给出效果大小...
-
那我就难住了。通常要求效应量的人想要一些标准化的、无单位的度量。但你说你想要概率尺度。我的建议就是这样做的。你不能同时拥有它。
-
为什么会这样?在贝叶斯回归中,以概率尺度(也是 logit 链接模型)计算这种效应大小非常容易。也许常客类比只能给出不同连续预测器水平的概率(我上面的例子)?无法使用预测变量的最大值和最小值之间的 CI 计算效果大小?
标签: r regression logistic-regression lme4