R-获得自举模型或具有鲁棒SE的模型的标准化回归系数

问题描述 投票:0回答:1

当我们在R中拟合回归模型时,很遗憾无法获得标准化系数。幸运的是,有一个提取它们的包lm.beta。例如:

fit.model1.lm <- lm(Sepal.Length ~ Sepal.Width + Petal.Width, iris)
lm.beta(fit.model1.lm)

但是,如果我们使用引导程序(例如,从软件包simpleboot中获取):

fit.model1.boot <- lm.boot(fit.model1.lm)

或者如果我们使用可靠的标准错误(例如来自sandwich包的错误:

coeftest(fit.model1.lm, vcov = vcovHC(fit.model1.lm))

无法通过lm.beta获得标准化系数,因为它们仅适用于lm类的对象。

然后在这种情况下如何获得它们?

r regression linear-regression
1个回答
0
投票

为了获得标准化系数,我们还可以在估计之前将变量scale

library("lm.beta")
fit.model1.lm <- lm(Sepal.Length ~ Sepal.Width + Petal.Width, iris)
lm.beta(fit.model1.lm)
# Call:
#   lm(formula = Sepal.Length ~ Sepal.Width + Petal.Width, data = iris)
# 
# Standardized Coefficients::
# (Intercept) Sepal.Width Petal.Width 
#   0.0000000   0.2100575   0.8948486 
(fit.model1.lm.st <- lm(Sepal.Length ~ Sepal.Width + Petal.Width, 
                        cbind(lapply(iris[-5], scale), iris[5])))
# Call:
#   lm(formula = Sepal.Length ~ Sepal.Width + Petal.Width, data = cbind(lapply(iris[-5], 
#                                                                              scale), iris[5]))
# 
# Coefficients:
# (Intercept)  Sepal.Width  Petal.Width  
#  -1.422e-15    2.101e-01    8.948e-01  

因此,使用scale中的lm d fit.model1.lm.st拟合(此处为lm.boot)将为您提供所需的标准化自举系数。

library("simpleboot")
set.seed(42)  # for sake of reproducibility
(fit.model1.boot <- lm.boot(fit.model1.lm.st, R=200))
# BOOTSTRAP OF LINEAR MODEL  (method = rows)
# 
# Original Model Fit
# ------------------
# Call:
# lm(formula = Sepal.Length ~ Sepal.Width + Petal.Width, data = cbind(lapply(iris[-5], 
#                                                                              scale), iris[5]))
# 
# Coefficients:
# (Intercept)  Sepal.Width  Petal.Width  
#  -1.422e-15    2.101e-01    8.948e-01  
© www.soinside.com 2019 - 2024. All rights reserved.