偶然听说回归分析里,可决系数$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$在无截距项时是不成立的!且再推导一遍方差分解的过程得到:

在有截距下的假设下,$Y=\beta_0+\beta_1X$,为最小化$TSS$,分别对$\beta_0$和$\beta_1$求偏导得到正规方程组:

刚好方差分解式右端的两项都为0,便有了$TSS=RSS+ESS$。去掉截距项即去掉$\beta_0$,正规方程组便只剩下前式。之前的$TSS=ESS+RSS$变成:

如此一来,当$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