不幸的是,当我们拟合回归模型时,标准化系数不容易获得。幸运的是,有一个提取它们的包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
类的对象。
然后在这种情况下如何获得它们?
为了获得标准化系数,我们还可以在估计之前将变量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