本文中,我将描述用于衡量回歸模型性能的不同統計回歸名額。并且使用R語言,提供實際的例子-在社會經濟名額的基礎上預測生育率得分-用于比較兩個模型的性能,以便為我們的資料選擇最佳的模型。
常見評價名額概覽
在回歸模型中,最常見的評價名額包括。
R方 R-squared(R2),即預測變量所能解釋的結果變化的比例。在多元回歸模型中,R2對應于觀察到的結果值和模型預測值之間的平方關系。R-squared越高,模型就越好。
均方根誤差 Root Mean Squared Error(RMSE),衡量模型在預測一個觀察結果時産生的平均誤差。在數學上,RMSE是平均平方誤差(MSE)的平方根,即觀察到的實際結果值與模型預測值之間的平均平方差。是以,MSE=平均值((觀察值-預測值)^2),RMSE=sqrt(MSE)。RMSE越低,模型就越好。
殘差标準誤差 Residual Standard Error(RSE),也被稱為模型西格瑪,是RMSE的一個變體,根據模型中的預測因子數量進行調整。RSE越低,模型就越好。在實踐中,RMSE和RSE之間的差異非常小,特别是對于大型多變量資料。
平均絕對誤差 Mean Absolute Error(MAE),與RMSE一樣,MAE測量預測誤差。在數學上,它是觀察和預測結果之間的平均絕對差異,MAE = mean(abs(observeds - predicteds))。與RMSE相比,MAE對離群值不太敏感。
以上名額的問題在于,它們對于模型中包含額外變量的敏感性,即使這些變量在解釋結果方面沒有顯著的貢獻。換句話說,即使這些變量沒有實際意義,将它們包含在模型中仍會增加 R方 并降低 RMSE。是以,我們需要更穩健的名額來指導模型選擇。
關于R方,有一個經過調整的版本稱為adjusted R方,它為模型中過多變量進行了調整。
此外,還有四個重要的名額 - AIC,AICc,BIC和Mallows Cp - 常用于模型評估和選擇。這些名額是模型預測誤差MSE的無偏估計。這些名額越低,模型越好。
AIC是(Akaike's Information Criteria)的縮寫,是日本統計學家Hirotugu Akaike在1970年制定的一個名額。AIC的基本思想是懲罰将額外變量納入模型的行為。它增加了一個懲罰,在包括額外條款時增加了誤差。AIC越低,模型就越好。
AICc是AIC的另一個版本,針對小樣本量進行修正。
BIC(Bayesian information criteria)是AIC的一個變種,對包括額外變量的模型有更強的懲罰。
Mallows Cp 是由Colin Mallows開發的AIC的一個變體。
加載所需的R包
tidyverse用于資料處理和可視化
modelr提供了用于計算回歸模型性能名額的輔助函數
broom建立了一個包含模型統計名額的整潔的資料架構
library(tidyverse)
library(modelr)
library(broom)
執行個體資料
我們将使用R内置的 swiss資料集,該資料集在社會經濟名額的基礎上預測生育率得分。
# Load the data
data("swiss")
# Inspect the data
sample_n(swiss, 3)
建立回歸模型
我們首先建立兩個模型。
模型1,包括所有預測因素
模型2,包括除 "考試 "變量外的所有預測因素
model1 <- lm(Fertility ~., data = swiss)
model2 <- lm(Fertility ~. -Examination, data = swiss)
評估模型品質
有許多R函數和包用于評估模型品質,包括。
summary()函數,傳回R平方、adjusted R-squared、RSE
AIC()和BIC()函數,分别計算AIC和BIC
summary(model1)
AIC(model1)
BIC(model1)
rsquare(), rmse()和mae()[函數],分别計算R2, RMSE和MAE。
library(modelr)
data.frame(
R2 = rsquare(model1, data = swiss),
RMSE = rmse(model1, data = swiss),
MAE = mae(model1, data = swiss)
)
R2(), RMSE()和MAE()[函數],分别計算R2, RMSE和MAE。
library(caret)
predictions <- model1 %>% predict(swiss)
data.frame(
R2 = R2(predictions, swiss$Fertility),
RMSE = RMSE(predictions, swiss$Fertility),
MAE = MAE(predictions, swiss$Fertility)
)
比較回歸模型的性能
在這裡,我們将使用函數glance()來簡單比較我們兩個模型的整體品質。
模型一
# Metrics for model 1
glance(model1) %>%
dplyr::select(adj.r.squared, sigma, AIC, BIC, p.value)
結果
## adj.r.squared sigma AIC BIC p.value
## 1 0.671 7.17 326 339 5.59e-10
模型2
# Metrics for model 2
glance(model2) %>%
dplyr::select(adj.r.squared, sigma, AIC, BIC, p.value)
結果
## adj.r.squared sigma AIC BIC p.value
## 1 0.671 7.17 325 336 1.72e-10
從上面的輸出可以看出:
這兩個模型有完全相同的調整後的R2(0.67),意味着它們在解釋生育率得分結果的效果是相等的。此外,它們的殘差标準誤差(RSE或sigma=7.17)也相同。然而,模型2比模型1更簡單,因為它包含的變量更少。在同等條件下,簡單的模型在統計學上總是更好。
模型2的AIC和BIC都比模型1的低。在模型比較政策中,AIC和BIC得分最低的模型是首選。
最後,模型2的F統計量p.值低于模型1的。這意味着與模型1相比,模型2在統計上更有意義,這與上述結論一緻。
請注意,RMSE和RSE的測量尺度與結果變量相同。用RSE除以結果變量的平均值就可以得到預測錯誤率,這個錯誤率應該盡可能的小。
sigma(model1)/mean(swiss$Fertility)
結果
## [1] 0.102
在我們的例子中,平均預測錯誤率為10%。
讨論
本章介紹了評估回歸模型整體性能的幾個名額。
最重要的名額是調整後的R-square、RMSE、AIC和BIC。這些名額也被用來作為模型比較和優化模型選擇的基礎。
請注意,這些回歸名額都是内部衡量标準,即它們是在用于建立回歸模型的相同資料上計算出來的。它們告訴你模型與手中的資料(稱為訓練資料集)的比對程度。
一般來說,我們并不真正關心該方法在訓練資料上的效果如何。相反,我們感興趣的是,當我們将方法應用于以前未見過的測試資料時,我們獲得的預測的準确性。
然而,測試資料并不總是可用的,這使得測試誤差非常難以估計。在這種情況下,交叉驗證(cross-validation)和自舉法(bootstrap-resampling)等方法被應用于使用訓練資料來估計測試誤差(或預測錯誤率)。