我一直在尝试了解与线性回归相关的效应大小,并且想知道如何在 R 中实现它。当然,我有 p 值,它们表明解释变量的“预测性”如何。但是,对于线性模型中的每个变量,我想知道如何计算它对响应变量的影响程度的标准化分数。
如果您可以提供 R 解决方案,请提供一些示例数据。
x1 = rnorm(10)
x2 = rnorm(10)
y1 = rnorm(10)
mod = lm(y1 ~ x1 + x2)
summary(mod)
我一直在尝试了解与线性回归相关的效应大小,并且想知道如何在 R 中实现它。当然,我有 p 值,它们表明解释变量的“预测性”如何。但是,对于线性模型中的每个变量,我想知道如何计算它对响应变量的影响程度的标准化分数。
如果您可以提供 R 解决方案,请提供一些示例数据。
x1 = rnorm(10)
x2 = rnorm(10)
y1 = rnorm(10)
mod = lm(y1 ~ x1 + x2)
summary(mod)
我认为你想要的是半偏相关平方。这为您提供了由 x1 控制 x2 占 y 方差的比例。请注意,这不一定与 x1 占 y 的方差比例相同。这是正则相关平方。如果变量 x1 和 x2 不是完全不相关,它们会有所不同。此外,倍数将等于的总和(即,您的变量之一的零阶相关平方)加上(即半第一个变量的偏相关平方控制),加上等。
半偏相关公式为:
这是一个简单的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