【问题标题】:Plotting standard errors for effects绘制效果的标准误差
【发布时间】:2016-04-17 03:00:06
【问题描述】:

我有一个 lme4 模型,我已经运行了分层逻辑回归,我正在使用 effects 包绘制效果。我想创建一个以平均值的标准误差作为误差线的效果图。我可以将点估计值、95% 置信区间和标准误差放入数据框中。然而,标准误差似乎与置信限度参数不一致,请参见下面的常规 glm 中的示例。

library(effects)
library(dplyr)
mtcars <- mtcars %>%
mutate(vs = factor(vs))
glm1 <- glm(am ~ vs, mtcars, family = "binomial")
(glm1_eff <- Effect("vs", glm1) %>%
 as.data.frame())

  vs       fit        se     lower     upper
1  0 0.3333333 0.4999999 0.1580074 0.5712210
2  1 0.5000000 0.5345225 0.2596776 0.7403224

我的理解是,拟合列显示am 等于 1 的概率的点估计,并且lowerupper 对应于am 等于 1 的概率的 95% 置信区间. 请注意,标准误差似乎与置信区间不对应(例如,0.33+.49 > .57)。

这就是我的目标。与 95% 的置信区间相反,我想要一个带有 +- 均值标准误差的效果图。

标准错误是对数赔率而不是概率吗?有没有一种简单的方法可以将它们转换为概率并绘制它们以便我可以制作图表?

【问题讨论】:

  • 您能告诉我们lme4 包的位置吗? (我没有看到任何“层次结构。)
  • 我同意这在统计上没有意义。我会联系维护者 John Fox。你会收到他的电子邮件maintainer("effects")。 (他不一定是作者。)我认为 95% CI 的默认值应该是 est +/- 1.96 * se。如果是其他原因,应该有一个解释。我没有看到任何这样的解释。看起来在as.data.frame.eff-函数的构造过程中发生了脑放屁。这可能不是一个很常用的功能。

标签: r effects lme4


【解决方案1】:

John Fox 分享了这个有用的回复:

来自 ?Effect:“se:(对于“eff”对象)效果的标准误差向量,在线性预测变量的范围内。”所以标准误差在对数赔率范围内。”您可以使用 delta 方法来获得概率范围内的标准误差,但这是非常不明智的,因为估计概率的渐近正态性的方法将慢得多对数赔率。Effect() 计算线性预测变量规模的置信限(logit 模型的对数赔率),然后将它们逆变换为响应规模(概率)。

创建自定义绘图所需的所有信息都在 Effect() 返回的“eff”对象中;对象的内容记录在 ?Effect 中。

顺便说一句,我同意 as.data.frame.eff() 方法可以改进,如果有机会我会这样做。特别是,报告响应规模的影响和置信限但显示线性预测规模的标准误差会引起误解。

【讨论】:

    【解决方案2】:

    我先回答这个谜,然后解决“在情节上显示 SE”的问题

    1. SE 谜团的解释:GLM 中的所有数学运算都需要在链接尺度上完成,因为这是加法尺度(可以将东西相加)。所以...

    “拟合”列中的值是预测的成功概率(或“响应量表上的预测”)。它们的值是 expit(b0) 和 expit(b0 + b1)。 expit() 是逆 logit 函数。 SE 在链路规模上。响应量表上的 SE 没有多大意义,因为响应量表是非线性的(尽管在同一张表中包含响应和链接量表的统计数据有点奇怪)。 “较低”和“较高”在响应量表上,因此这些是预测成功概率的 CI。它们被计算为 expit(b0 ± 1.96SE) 和 expit(b0 + b1 ± 1.96SE)。用给定的东西恢复这些值

    library(boot) # inv.logit and logit functions
    
    expit.pred_0 <- 1/3 # fit 0
    expit.pred_1 <- 1/2 # fit 1
    se1 <- 1/2
    se2 <- .5345225
    
    inv.logit(logit(expit.pred_0) - qnorm(.975)*se1)
    inv.logit(logit(expit.pred_0) + qnorm(.975)*se1)
    inv.logit(logit(expit.pred_1) - qnorm(.975)*se2)
    inv.logit(logit(expit.pred_1) + qnorm(.975)*se2)
    
    > inv.logit(logit(expit.pred_0) - qnorm(.975)*se1)
    [1] 0.1580074
    > inv.logit(logit(expit.pred_0) + qnorm(.975)*se1)
    [1] 0.5712211
    > inv.logit(logit(expit.pred_1) - qnorm(.975)*se2)
    [1] 0.2596776
    > inv.logit(logit(expit.pred_1) + qnorm(.975)*se2)
    [1] 0.7403224
    
    1. 在响应(非相加)尺度上显示从 glm 计算的 SE 没有任何意义,因为 SE 仅在链接尺度上是相加的。换句话说,将 SE 乘以响应尺度上的某个分位数(您设想的绘图的尺度,y 轴上的概率)是没有意义的。 CI 是从链接尺度反向转换的点估计值,因此对于绘图很有意义。

    经常看到研究人员绘制从线性模型计算的 SE 条,就像您想象的那样,即使提供的统计数据来自 GLM。我猜这些 SE 在某种意义上是有意义的,但它们通常暗示着荒谬的后果(比如可能小于零或大于一的概率)所以......也不要这样做。

    【讨论】:

      猜你喜欢
      • 2018-10-08
      • 1970-01-01
      • 2014-02-27
      • 1970-01-01
      • 1970-01-01
      • 2019-12-04
      • 1970-01-01
      • 1970-01-01
      • 2020-12-10
      相关资源
      最近更新 更多