计算R中多元回归中变量的效应大小

机器算法验证 r 多重回归 r平方 规模效应
2022-04-10 07:52:54

我一直在尝试了解与线性回归相关的效应大小,并且想知道如何在 R 中实现它。当然,我有 p 值,它们表明解释变量的“预测性”如何。但是,对于线性模型中的每个变量,我想知道如何计算它对响应变量的影响程度的标准化分数。

如果您可以提供 R 解决方案,请提供一些示例数据。

x1 = rnorm(10)
x2 = rnorm(10)
y1 = rnorm(10)

mod = lm(y1 ~ x1 + x2)
summary(mod)
1个回答

我认为你想要的是半偏相关平方。这为您提供了由 x1 控制 x2 占 y 方差的比例。请注意,这不一定与 x1 占 y 的方差比例相同。这是正则相关平方。如果变量 x1 和 x2 不是完全不相关,它们会有所不同。此外,倍数将等于的总和(即,您的变量之一的零阶相关平方)加上(即半第一个变量的偏相关平方控制),加上等。R2ryx22ryx1|x2ryx1|x2x3

半偏相关公式为:

ryx1|x2=ryx1ryx2rx1x2(1rx1x22)

这是一个简单的R演示:

semi.r = function(y, x, given){  # this function will compute the semi-partial r
  ryx  = cor(y, x)
  ryg  = cor(y, given)
  rxg  = cor(x, given)
  num  = ryx - (ryg*rxg)
  dnm  = sqrt( (1-rxg^2) )
  sp.r = num/dnm
  return(sp.r)
}
set.seed(9503)                   # this makes the example exactly reproducible
x1 = rnorm(10)                   # these variables are uncorrelated in the population
x2 = rnorm(10)                   # but not perfectly uncorrelated in this sample:
cor(x1, x2)                      # [1]  0.1265472
y  = 4 + .5*x1 - .3*x2 + rnorm(10, mean=0, sd=1)
model = lm(y~x1+x2)
summary(model)
# ...
# Coefficients:
#             Estimate Std. Error t value Pr(>|t|)    
# (Intercept)   4.1363     0.4127  10.022 2.11e-05 ***
# x1            0.1754     0.3800   0.461    0.658    
# x2           -0.6181     0.3604  -1.715    0.130    
# ...
sp.x1 = semi.r(y=y, x=x1, given=x2);  sp.x1  # [1]  0.1459061
sp.x1^2                                      # [1]  0.02128858
c.x2 = cor(x2, y);  c.x2                     # [1] -0.5280958
c.x2^2                                       # [1]  0.2788852
c.x2^2 + sp.x1^2                             # [1]  0.3001738
summary(model)$r.squared                     # [1]  0.3001738