偶然听说回归分析里,可决系数$R^2$可以小于0,未曾见过,不明觉厉。然细细斟酎后,倒也不过如此。
调整前的$R^2$
一般来讲,$R^2 = 1-\frac{RSS}{TSS}$,其中$RSS=\sum{(y_i-\hat{y_i})^2}$表示残差平方和,$TSS=\sum{(y-\bar{y}^2)}$表示总离差平方和。若有$R^2<0$,则须$\frac{RSS}{TSS}>1$,即$RSS>TSS$。
又有$TSS=RSS+ESS$,$ESS=\sum{(\hat{y_i}-\bar{y})}^2$,明显三者都是非负的,那么$RSS>TSS$是不可能了。
问题在哪里?这个帖子里的一句话让我醍醐灌顶:$TSS=ESS+RSS$在无截距项时是不成立的!且再推导一遍方差分解的过程得到:
\[TSS=RSS+ESS-2\bar{y}\sum{(y_i-\hat{y_i})}+2\beta\sum{(y_i-\hat{y_i})x_i}\]在有截距下的假设下,$Y=\beta_0+\beta_1X$,为最小化$TSS$,分别对$\beta_0$和$\beta_1$求偏导得到正规方程组:
\(\sum{(y_i-\hat{y_i})x_i}=0\) \(\sum{(y_i-\hat{y_i})}=0\)
刚好方差分解式右端的两项都为0,便有了$TSS=RSS+ESS$。去掉截距项即去掉$\beta_0$,正规方程组便只剩下前式。之前的$TSS=ESS+RSS$变成:
\[TSS=RSS+ESS-2\bar{y}\sum{(y_i-\hat{y_i})}\]如此一来,当$ESS-2\bar{y}\sum{(y_i-\hat{y_i})}<0$时,有$RSS>TSS$进而有$R^2<0$。
另外,若用公式$\frac{ESS}{TSS}$计算$R^2$,当$RSS-2\bar{y}\sum{(y_i-\hat{y_i})}<0$即$ESS>TSS$时,便有$R^2>1$。
最后,比较一下有无截距项的$R^2$,一般来讲,加一个截距项相当于增加一个变量,总是比不加要拟合的更好的,即有$RSS_{+} < RSS_{-}$,那么便有$R^2{+} > R^2{-}$。模拟一下:
set.seed(101)
a = 1:100
b = sort(runif(100))
summary(lm(b~a))$r.squared
summary(lm(b~a-1))$r.squared
0.9910709
0.997794
去掉截距项后$R^2$变大了?
经查证仍然是无截距回归中$TSS \neq RSS+ESS$不等的问题,在$R$语言里无截距回归的$R^2$计算方式变成$\frac{RSS}{RSS+ESS}$,通常有$RSS+ESS>TSS$,分子分母都增大,这才可能导致$R^2->R^2+$。
调整后的$R^2$
在多元情况下,需要对$R^2$进行调整,除以自由度,$R^2 = 1-\frac{RSS/p}{TSS/(n-p-1)}$。
此时若要$R^2<0$,则有$\frac{RSS/p}{TSS/(n-p-1)}>1$,由于除了自由度,这时只需$n»p$就可能使得$\frac{RSS}{p}>\frac{TSS}{n-p-1}$。模拟一下:
set.seed(101)
x1 = 1:10000
x2 = rnorm(10000)
y = rnorm(10000)
summary(lm(y~x1+x2))
set.seed(101)
x1 = 1:10000
x2 = rnorm(10000)
y = rnorm(10000)
summary(lm(y~x1+x2))
Call:
lm(formula = y ~ x1 + x2)
Residuals:
Min 1Q Median 3Q Max
-3.8688 -0.6775 -0.0251 0.6858 4.4694
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 2.546e-02 1.986e-02 1.282 0.200
x1 -4.295e-06 3.440e-06 -1.249 0.212
x2 5.588e-03 1.000e-02 0.559 0.576
Residual standard error: 0.9931 on 9997 degrees of freedom
Multiple R-squared: 0.0001878, Adjusted R-squared: -1.219e-05
F-statistic: 0.9391 on 2 and 9997 DF, p-value: 0.391