在 linear model 中判斷模型配適好壞(goodness of fit)常見的指標 為 \(R^{2}\), 以下將介紹 \(R^{2}\) 的用途
\(R^{2}\)
\(R^{2}\) 被定義成 \[\begin{align*} R^{2} &= \frac{TSS - RSS}{TSS}\\ &=1-\frac{\sum_{i = 1}^{n}(y_{i}-\hat{y_{i}})^{2 }}{\sum_{i = 1}^{n}(y_{i} - \bar{y})^{2}}\\ &= \frac{\sum_{i = 1}^{n}(\hat{y_{i}}-\bar{y})^{2}}{\sum_{i = 1}^{n}(y_{i} - \bar{y})^{2}}\\ &= \left( \frac{\sum_{i = 1}^{n}(y_{i} - \bar{y})(\hat{y_{i}} - \bar{y})}{\sqrt{\sum_{i = 1}^{n}(y_{i} - \bar{y})^{2}\sum_{i = 1}^{n}(\hat{y_{i}} - \bar{y})^{2}}}\right)^{2}\\ &= corr(Y, \hat{Y})^{2}\text{ (也就是 }Y, \hat{Y}\text{ 有多像)} \end{align*}\] 從中可以做一些討論 :
(1.) 從中不難看出 \(0<R^{2}<1\), 因為 correlation 介於 [0,1] 之間, 故平方也介於 [0,1] 之間
(2.) linear model 中的目的從來不是用一個 \(\hat{Y}\) 去完全估計 \(Y\), 而是 \(\hat{Y}\) 完美估計 mean structure \(X\beta\), \(\hat\epsilon\) 完美估計 error structure \(\epsilon\), \(\hat{Y}\) 過度解釋 \(Y\) 反而有很大的機會造成 overfitting
(3.) 若模型中沒有截距項 \(\beta_{0}\), 那 \(R^{2}\) 可能會高的不合理
(4.) 假設我們配適一個 saturated model (\(\hat{y_{i}} = y_{i}, \ \forall i\)), \(R^{2}\) 會直接變成 1
這時候就要問 : 是否 \(R^{2}\) 越高, 模型就越好, 答案是否定的, 要根據資料是哪個領域的來判斷, 或是根據過去已有的分析去做對照, 舉例來說, 抽菸和肺炎研究已有很多結果(利用 linear model), 在這些結果中普遍得到的 \(R^{2}\) 假設為 0.4, 今天你也做(利用 linear model)這筆資料, 得到 \(R^{2}\) 為 0.8 你心裡不會毛毛的嗎 ? 看 \(R^{2}\) 的意義就在於和過去的分析做比對, 若 \(R^{2}\) 差不多, 那 model 可能設定的不錯
操弄 \(R^{2}\)
生成 200 筆體重與身高的資料, 體重單位為公斤, 身高為公尺, 可以看到資料分布
現在對“體重”做回歸, 看看是否能夠用身高解釋,
##
## Call:
## lm(formula = weight ~ height)
##
## Residuals:
## Min 1Q Median 3Q Max
## -10.834 -1.911 0.113 2.090 10.504
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -11.568 7.538 -1.535 0.126
## height 56.865 4.552 12.493 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.198 on 198 degrees of freedom
## Multiple R-squared: 0.4408, Adjusted R-squared: 0.438
## F-statistic: 156.1 on 1 and 198 DF, p-value: < 2.2e-16
可以看到 \(R^{2}\) 為 0.4408
假若我們將截距項移除看看 \(R^{2}\) 大小
##
## Call:
## lm(formula = weight ~ height - 1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -10.9184 -1.7917 0.2092 2.1096 10.1811
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## height 49.883 0.137 364 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.209 on 199 degrees of freedom
## Multiple R-squared: 0.9985, Adjusted R-squared: 0.9985
## F-statistic: 1.325e+05 on 1 and 199 DF, p-value: < 2.2e-16
可以看到 \(R^{2}\) 變得異常的高, 要知道 correlation = 0.9985 幾乎會使得 \(Y\) 和 \(\hat Y\) 連成一條線, 但此資料並未顯示此狀況
現在我們故意收集一些比較極端的身高與體重, 去找 150 公分 以及 185 公分的樣本量測其體重並加數據中, 可以看到現在資料長這樣
##
## Call:
## lm(formula = weight_merge ~ height_merge)
##
## Residuals:
## Min 1Q Median 3Q Max
## -10.8867 -2.1297 -0.0239 2.0671 10.3416
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -6.255 3.717 -1.683 0.0936 .
## height_merge 53.667 2.237 23.993 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.195 on 248 degrees of freedom
## Multiple R-squared: 0.6989, Adjusted R-squared: 0.6977
## F-statistic: 575.7 on 1 and 248 DF, p-value: < 2.2e-16
只是故意收集一些比較極端的資料, 我就直接將 \(R^{2}\) 拉至 0.6989, 那假若我今天故意將比較接近樣本平均的數值移除, \(R^{2}\) 會怎麼變化呢, 先看看資料分布
看一下 summary
##
## Call:
## lm(formula = weight_adj ~ height_adj)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.6510 -2.1795 -0.4411 1.7313 9.2761
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -4.936 3.937 -1.254 0.215
## height_adj 52.881 2.358 22.423 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.052 on 59 degrees of freedom
## Multiple R-squared: 0.895, Adjusted R-squared: 0.8932
## F-statistic: 502.8 on 1 and 59 DF, p-value: < 2.2e-16
若我直接將中間的資料移除, 可以看到 \(R^{2}\) 被我操弄至 0.895,
現在我只保留中間的數值看 \(R^{2}\) 會怎麼變化
##
## Call:
## lm(formula = weight_adj2 ~ height_adj2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -10.8319 -1.9550 0.0192 2.1211 10.5191
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -12.235 8.929 -1.37 0.172
## height_adj2 57.270 5.381 10.64 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.251 on 187 degrees of freedom
## Multiple R-squared: 0.3772, Adjusted R-squared: 0.3739
## F-statistic: 113.3 on 1 and 187 DF, p-value: < 2.2e-16
可以發現, \(R^{2}\) 甚至被我操弄至 0.4408 以下, 可見在收集資料的時候, 我真的可以操弄 \(R^{2}\) , 將一些資料視而不見, \(R^{2}\) 甚至可以達到 0.895 或是 0.3772, 看到這裡你大概可以猜到, 在工業統計裡, 我們可以調控溫度濕度等等, 刻意製造我們想要得到的數據, 所以在工業相關的資料中 \(R^{2}\) 通常較高, 在生物的資料中, 總不可能去控制日照雨淋, 這就導致在生物相關的資料中 \(R^{2}\) 通常較低