【问题标题】:Marginal effects from glmerglmer 的边际效应
【发布时间】:2018-08-24 13:21:38
【问题描述】:

之前有人问过这个问题的变体(例如Is there a way of getting "marginal effects" from a `glmer` object),其中大多数人建议使用 ggeffects(或 sjPlot)。但是,我们学院的一位统计学家在同意 ggeffects 的输出时遇到了一些麻烦。

我对统计和 R 都是新手(所以我可能不应该使用 glmer...),我在理解我做错了什么时遇到了一些麻烦。

我的模型最简单的形式是来自 lme4 的 glmer:outcome(binary) ~ FE (binary) + (1|RE)。 固定效应是对我的随机效应中的一些但不是所有个体进行的测试。

模型输出

Intercept: 1.2654

FE_2: -0.2305

RE Std. Dev.: 2.896

gg预测:

ggpredict(model, type = "fe", terms = "FE")

1: 0.780

2: 0.738

现在,据我所知,我可以像这样得到测试 2 的概率边际效应:

y <- 1.2654 - 0.2305
prob <- exp(y) / (1 + exp(y))

这与 ggpredict 的输出完全相同:0.738。

但是,他说这是每个人的条件概率,我需要“插入一些我不理解的东西”来获得我可以推广到总体的概率。他的快速解决方案示例:

y <- 1.2654 - 0.2305 + rnorm(100000000) * 2.896 
prob_trus <- exp(y) / (1 + exp(y))
mean(prob_trus)
0.62

使用与前面的 ggpredict 具有相同参数的 ggaverage 几乎给了我相同的概率,0.639。所以,最后我的问题:

  • ggaverage 是否与他的解决方案相同,只是存在一些模拟差异和/或舍入误差?
  • 如果他的方法是可行的方法,我如何从 ggeffects 获得相同的结果?

【问题讨论】:

    标签: lme4 mixed-models sjplot


    【解决方案1】:

    ggaverage() 与“我不明白的东西”方法不一样,类似的结果是偶然的。您可以阅读有关ggpredict()ggaverage() here in the vignette 之间差异的一些信息。

    我不会说随机效应方差,即您的同事也希望以预测为条件的影响,应该添加到 预测值 以计算 预测概率时间>。相反,应该在预测的标准误差中考虑这种不确定性(以及由此产生的置信区间)。

    ggpredict(model, type = "fe", terms = "FE")ggpredict(model, type = "re", terms = "FE") 进行比较时,您会发现不同之处。请注意更改后的type = "re",它现在考虑了随机效应,导致不同的预测值和更大的置信区间。

    这是一个包含包中示例数据的示例:

    data(efc_test)
    
    fit <- glmer(
      negc7d ~ c12hour + e42dep + c161sex + c172code + (1 | grp),
        data = efc_test,
        family = binomial(link = "logit")
      )
    
    ggpredict(fit, "c12hour", type = "fe")
    
    #> # Predicted probabilities for Negative impact with 7 items 
    #> # x = average number of hours of care per week 
    #> 
    #>   x predicted conf.low conf.high
    #>   0     0.342    0.249     0.449
    #>   5     0.344    0.251     0.450
    #>  10     0.346    0.254     0.452
    #>  15     0.348    0.256     0.453
    #>  20     0.350    0.258     0.455
    #>  25     0.352    0.260     0.456
    #>  30     0.354    0.261     0.458
    #>  35     0.356    0.263     0.460
    #>  40     0.357    0.265     0.463
    #>  45     0.359    0.266     0.465
    #>  ... and 25 more rows.
    #> 
    #> Adjusted for:
    #> *   e42dep = 2.92
    #> *  c161sex = 1.76
    #> * c172code = 1.97
    
    ggpredict(fit, "c12hour", type = "re")
    
    #> # Predicted probabilities for Negative impact with 7 items 
    #> # x = average number of hours of care per week 
    #> 
    #>   x predicted conf.low conf.high
    #>   0     0.472    0.107     0.870
    #>   5     0.475    0.108     0.871
    #>  10     0.477    0.109     0.872
    #>  15     0.479    0.110     0.873
    #>  20     0.481    0.111     0.873
    #>  25     0.483    0.111     0.874
    #>  30     0.485    0.112     0.875
    #>  35     0.487    0.113     0.876
    #>  40     0.489    0.114     0.877
    #>  45     0.491    0.115     0.878
    #>  ... and 25 more rows.
    #> 
    #> Adjusted for:
    #> *   e42dep = 2.92
    #> *  c161sex = 1.76
    #> * c172code = 1.97
    

    【讨论】:

    • 谢谢,这至少更直观。我开始意识到这个问题不仅有一个“正确”的答案。我还使用我自己的数据处理了这个 (stats.idre.ucla.edu/r/dae/mixed-effects-logistic-regression) 示例,并获得了类似于 ggaverage 的结果。但是,使用 ggaverage 不会给我两个结果的置信区间。这是我的错误,与数据有关,还是故意的?
    • 由于ggaverage() 使用模型中的数据,您可能会在 x 轴上的一个点获得多个不同的预测值 - 这就是我“平滑”这些预测的原因,但是,没有标准此“平滑”的错误表示预测值的标准错误。这就是为什么没有显示 CI。我很少使用这个函数,而是使用ggeffect()ggpredict()
    【解决方案2】:

    确实,您从具有非线性链接函数的混合模型(例如,混合效应逻辑回归)获得的系数通常具有随机效应的解释条件。

    Hedeker et al. (2018) 最近提出了一个新的想法,用于获得具有边际/总体解释的回归系数。这是在 R 包GLMMadaptive 的函数marginal_coefs() 中实现的,该函数使用自适应高斯正交拟合混合模型。混合效应逻辑回归的一般示例是:

    library("GLMMadaptive")
    fm <- mixed_model(fixed = y ~ x1 + x2 + x3, random = ~ x1 | id, data = DF, family = binomial())
    
    marginal_coefs(fm)
    marginal_coefs(fm, std_errors = TRUE)
    

    有关其他示例,例如,如何获得边际预测或产生效果图,请查看小插图:https://drizopoulos.github.io/GLMMadaptive/articles/Methods_MixMod.html

    【讨论】:

    • 这看起来很棒!我已经做了一些快速测试,并且从 GLMMadaptive 和 lme4 得到了大致相同的结果。我有一个问题(可能还有更多问题要问):margin_coefs() 的输出比例是多少?在小插图中,它说“函数计算我们案例中的边际概率”,但 coefs 的输出是负数。如果计算概率,它们不应该在 0-1 之间,还是这只是我的另一个误解?
    • marginal_coefs() 返回的系数与固定效应系数在同一尺度上,它们只是具有不同的解释(即,它们具有边际/总体解释)。因此,在混合效应逻辑回归的情况下,它们是对数优势比。
    猜你喜欢
    • 2014-08-02
    • 1970-01-01
    • 2022-08-20
    • 2014-11-08
    • 2021-07-03
    • 1970-01-01
    • 2020-05-07
    • 2020-04-19
    • 1970-01-01
    相关资源
    最近更新 更多