一个变量模型的 R 方还是调整后的 R 方?

数据挖掘 回归 线性回归
2022-03-10 20:01:26

我有像y = mx这样的模型。由于调整后的 R2 告诉您仅由实际影响因变量的自变量解释的变异百分比,并且我只有一个自变量,我是否需要考虑调整后的 r 平方值?或者,r-square 适合这种类型的模型?

3个回答

对于只有一个自变量的模型,它们将非常相似(实际上相同)。所以我想说,如果不更好地理解你使用 R2 / Adj R 的目的,这并不重要。

您对 R² 的解释不正确。

R2 告诉您仅由实际影响因变量的自变量解释的变异百分比

R² 不执行任何变量选择 - 它 [...]

是可从自变量预测的因变量的方差比例。

但是,对于 R² 经常存在误解——它不会告诉您模型是否正确指定(例如同方差性、无自相关等),也不会告诉您回归量是否显着。

极高 R² 也可能意味着虚假回归(因为模型未正确指定)

尽管如此,决定使用 adj R² 还是 R² 在某种程度上取决于您的样本量。如果您有足够的观察结果(并且您只有少量的回归量(自由度)),那么 adj R² 和 R² 几乎相同。如果您只有几个数据点来估计您的模型,请使用它。

你的问题归结为有什么区别R2R2¯是。

R平方由下式给出:

R2=1(SSR/n)/(SST/n).

调整后的R 平方由下式给出:

R2¯=1[SSR/(nk1)]/[SST/(n1)].

  • SSR是残差平方和ui2,

  • SST是平方的总和(yy¯)2,

  • n是观察的数量,

  • k是自变量的数量(的数量x变量)。

所以本质上,调整后的 R 平方“调整”了模型中的自由度。这是通过引入添加更多自变量的“惩罚”来完成的k.

在 R 中很容易这样写:

# Regression using mtcars data
reg = lm(mpg~cyl,data=mtcars)

# Define n, k
n = length(mtcars$mpg)
k = nrow(mtcars)-1-df.residual(reg)

# Calculate SSR, SST
ssr = sum(resid(reg)^2)
sst = sum((mtcars$mpg - mean(mtcars$mpg))^2)

# Calculate r2, r2_bar
r2  = 1-(ssr/n)/(sst/n)
r2_bar = 1-(ssr/(n-k-1))/(sst/(n-1))

# Compare results
r2
summary(reg)$r.squared
r2_bar
summary(reg)$adj.r.squared

使用模型中的自由度调整,因为当您添加更多x模型中的变量,新变量可能无助于解释y(所以在这种情况下没有任何改进)。但是,在模型中添加更多变量后,SSR下降,而且自由度下降。

所以R2可能会有点误导R2¯在比较(嵌套)模型与不同的模型时提供 - 由于自由度的调整 -k.

在下面的小练习中,我添加了一个“嘈杂”变量(x2) 这对解释没有多大帮助y. 添加后x2,R2上升,而R2¯下跌降落。这基本上是什么R2¯应该这样做:显示自由度的降低是否值得通过添加新变量进行改进。

# Use simulated data to compare r2, r2_bar
# Set seed for reproducible results
set.seed(81)

# Draw y, x1 from normal distribution
y = rnorm(100, mean = 0, sd = 1)
x1 = rnorm(100, mean = 0, sd = 1)

# Draw from uniform distribution 
# Lot of noise, little explanatory power
x2 = runif(100, min = 0, max = 1)

# Compare r2, r2_bar
summary(lm(y~x1))$r.squared
summary(lm(y~x1))$adj.r.squared
summary(lm(y~x1+x2))$r.squared
summary(lm(y~x1+x2))$adj.r.squared