gpt4 book ai didi

r - 获取 "mlm"返回的 `lm()` 对象的回归系数的置信区间

转载 作者:行者123 更新时间:2023-12-04 18:05:12 30 4
gpt4 key购买 nike

我正在运行一个包含 2 个结果变量和 5 个预测变量的多元回归。我想获得所有回归系数的置信区间。通常我使用函数 lm 但它似乎不适用于多元回归模型(对象 mlm)。

这是一个可重现的例子。

library(car)
mod <- lm(cbind(income, prestige) ~ education + women, data=Prestige)
confint(mod) # doesn't return anything.

有什么替代方法吗? (我可以只使用标准误差的值并乘以正确的临界 t 值,但我想知道是否有更简单的方法来做到这一点)。

最佳答案

confint 不会返回任何东西,因为不支持“mlm”方法:

methods(confint)
#[1] confint.default confint.glm* confint.lm confint.nls*

如您所说,我们只需加上/减去标准误差的一些倍数即可得到置信区间的上限/下限。您可能打算通过 coef(summary(mod)) 执行此操作,然后使用一些 *apply 方法来提取标准错误。但是my answerObtain standard errors of regression coefficients for an “mlm” object returned by lm()为您提供了一种无需通过 summary 即可获得标准错误的 super 有效方法。将 std_mlm 应用到您的示例模型给出:

se <- std_mlm(mod)
# income prestige
#(Intercept) 1162.299027 3.54212524
#education 103.731410 0.31612316
#women 8.921229 0.02718759

现在,我们定义另一个小函数来计算下限和上限:

## add "mlm" method to generic function "confint"
confint.mlm <- function (model, level = 0.95) {
beta <- coef(model)
se <- std_mlm (model)
alpha <- qt((1 - level) / 2, df = model$df.residual)
list(lower = beta + alpha * se, upper = beta - alpha * se)
}

## call "confint"
confint(mod)

#$lower
# income prestige
#(Intercept) -3798.25140 -15.7825086
#education 739.05564 4.8005390
#women -81.75738 -0.1469923
#
#$upper
# income prestige
#(Intercept) 814.25546 -1.72581876
#education 1150.70689 6.05505285
#women -46.35407 -0.03910015

这很容易理解。例如,对于响应 income,所有变量的 95% 置信区间为

#(intercept)    (-3798.25140, 814.25546)
# education (739.05564, 1150.70689)
# women (-81.75738, -46.35407)

关于r - 获取 "mlm"返回的 `lm()` 对象的回归系数的置信区间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28442141/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com