在進行多元線性回歸分時,會遇到多變數彼此單位標準不一致的情況,如果想要比較回歸方程式不同解釋變數的估計參數彼此間的大小關係時,若沒有進行-資料標準化-之處理,是不能直接拿來做比較的。為了比較每一個解釋變數變動一單位對目標變數之影響大小,我們需事前將目標變數與解釋變數進行-資料標準化-處理。
多元線性回歸方程式
$$y=\beta_{0} + \beta_{1}*x_{1} + … + \beta_{i}*x_{i}+\epsilon_{i}$$
解釋變數\(X_{j}\)的參數估計值\(\hat{\beta}_{j}\)之含義
解釋變數\(X_{j}\)的參數估計值\(\hat{\beta}_{j}\)之含義為:在其他解釋變數不變下,解釋變數\(X_{j}\)變動一個衡量單位,目標變數將變動\(\hat{\beta}_{j}\)個衡量單位。即
$$\frac{dy}{dx_{j}}=\beta_{j}$$
若要比較不同解釋變數對目標變數之影響大小(\(\hat{\beta}_{j}\)),我們必須進行標準化回歸,即將目標變數與預測變數一併標準化。
標準化回歸
標準化回歸就將目標變數和預測變數分別減去各自的平均數再除以各自的標準差,即計算z-score,再將標準化的目標與解釋變數投入回歸模型。
$$Z=\frac{x-\bar{x}}{s_{x}}$$
step 1: Data scaling 資料標準化
在R程式語言中,我們則可以使用scale()函數。scale()函數預設將資料center到資料平均值,並除以標準差(standard deviation)來scale資料。
我們使用R內建mtcars資料集來進行示範。
1 2 3 4 5 6 7 8 9 10 11 12 |
data("mtcars") df summary(df) # mpg hp disp wt # Min. :10.40 Min. : 52.0 Min. : 71.1 Min. :1.513 # 1st Qu.:15.43 1st Qu.: 96.5 1st Qu.:120.8 1st Qu.:2.581 # Median :19.20 Median :123.0 Median :196.3 Median :3.325 # Mean :20.09 Mean :146.7 Mean :230.7 Mean :3.217 # 3rd Qu.:22.80 3rd Qu.:180.0 3rd Qu.:326.0 3rd Qu.:3.610 # Max. :33.90 Max. :335.0 Max. :472.0 Max. :5.424 |
我們將資料進行標準化。
1 2 3 4 5 6 7 8 9 |
scale_df summary(scale_df) # mpg hp disp wt # Min. :-1.6079 Min. :-1.3810 Min. :-1.2879 Min. :-1.7418 # 1st Qu.:-0.7741 1st Qu.:-0.7320 1st Qu.:-0.8867 1st Qu.:-0.6500 # Median :-0.1478 Median :-0.3455 Median :-0.2777 Median : 0.1101 # Mean : 0.0000 Mean : 0.0000 Mean : 0.0000 Mean : 0.0000 # 3rd Qu.: 0.4495 3rd Qu.: 0.4859 3rd Qu.: 0.7688 3rd Qu.: 0.4014 # Max. : 2.2913 Max. : 2.7466 Max. : 1.9468 Max. : 2.2553 |
並使用attribute()檢視各變數所使用的center和scale。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
attributes(scale_df) # $dim # [1] 32 4 # # $dimnames # $dimnames[[1]] # NULL # # $dimnames[[2]] # [1] "mpg" "hp" "disp" "wt" # # # $`scaled:center` # mpg hp disp wt # 20.09062 146.68750 230.72188 3.21725 # # $`scaled:scale` # mpg hp disp wt # 6.0269481 68.5628685 123.9386938 0.9784574 |
可以發現center和scale分別皆為預設的變數平均值與標準差。
1 2 3 4 5 6 |
apply(X = df,MARGIN = 2,FUN = mean) # mpg hp disp wt # 20.09062 146.68750 230.72188 3.21725 apply(X = df,MARGIN = 2,FUN = sd) # mpg hp disp wt # 6.0269481 68.5628685 123.9386938 0.9784574 |
step 2: 進行標準化回歸
- 標準化回歸模型中的各項估計參數通常被稱作為\(\beta\)係數「Beta Coefficents」。其估計值的大小可直接被拿來進行多元變數影響力之比較。
- 標準化模型中的解釋變數都是標準化後的Z-score,是以各變數的樣本標準差為衡量單位,因此每一個解釋變數的變動一單位的程度都是相同的。
- 解釋變數\(X_{j}\)的\(\beta_{j}\)係數代表著:其他解釋變數不變的情況下,解釋變數\(X_{j}\)變動一個單位(一個樣本標準差,\(s_{x}\)),目標變數將變動\(\beta_{j}\)個樣本標準差,即變動\(\beta_{j}\times s_{y}\)。
- 標準化回歸方程式:
$$y^*=\beta_{0}^* + \beta_{1}^**x_{1}^* + … + \beta_{i}^**x_{i}^*+\epsilon_{i}^*$$
其中,
$$y^*=\frac{y-\bar{y}}{s_{y}},\space x^*=\frac{x-\bar{x}}{s_{x}},\space \beta_{j}^*=\frac{\beta_{j}*s_{x}}{s_{y}}$$
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
mod_scale summary(mod_scale) # Call: # lm(formula = mpg ~ ., data = scale_df) # # Residuals: # Min 1Q Median 3Q Max # -0.64562 -0.27212 -0.02854 0.17607 0.97245 # # Coefficients: # Estimate Std. Error t value Pr(>|t|) # (Intercept) 3.568e-17 7.740e-02 0.000 1.00000 # hp -3.544e-01 1.301e-01 -2.724 0.01097 * # disp -1.927e-02 2.128e-01 -0.091 0.92851 # wt -6.171e-01 1.731e-01 -3.565 0.00133 ** # --- # Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 # # Residual standard error: 0.4379 on 28 degrees of freedom # Multiple R-squared: 0.8268, Adjusted R-squared: 0.8083 # F-statistic: 44.57 on 3 and 28 DF, p-value: 8.65e-11 |
我們同時執行未標準化回歸的結果。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
mod summary(mod) # Call: # lm(formula = mpg ~ ., data = df) # # Residuals: # Min 1Q Median 3Q Max # -3.891 -1.640 -0.172 1.061 5.861 # # Coefficients: # Estimate Std. Error t value Pr(>|t|) # (Intercept) 37.105505 2.110815 17.579 # hp -0.031157 0.011436 -2.724 0.01097 * # disp -0.000937 0.010350 -0.091 0.92851 # wt -3.800891 1.066191 -3.565 0.00133 ** # --- # Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 # # Residual standard error: 2.639 on 28 degrees of freedom # Multiple R-squared: 0.8268, Adjusted R-squared: 0.8083 # F-statistic: 44.57 on 3 and 28 DF, p-value: 8.65e-11 |
可發現:
- mod_scale和mod兩個模型的Multiple R-squared(0.8268)、Adjusted R-squared(0.8083) 、F-statistic(44.57 on 3 and 28 DF)、P-value(8.65e-11)等顯著性結果都相同。
- 資料標準化僅改變了「估計參數(estimate)」和「標準誤(std. error)」的部分。
Step 3: 比較標準化前後回歸係數差異
我們根據\(\beta_{j}^*=\frac{\beta_{j}*s_{x}}{s_{y}}\)的關係式來重新計算標準化前後估計參數間的關係。
先查看兩組模型的估計參數如下:
1 2 3 4 5 6 7 |
mod_scale$coefficients # (Intercept) hp disp wt # 3.567690e-17 -3.544385e-01 -1.926874e-02 -6.170635e-01 mod$coefficients # (Intercept) hp disp wt # 37.1055052690 -0.0311565508 -0.0009370091 -3.8008905826 |
查看data scaling各變數的平均數與標準差值。
1 2 3 4 5 6 7 |
# attr() : Get or set specific attributes of an object. attr(scale_df,'scaled:center') # mpg hp disp wt # 20.09062 146.68750 230.72188 3.21725 attr(scale_df,'scaled:scale') # mpg hp disp wt # 6.0269481 68.5628685 123.9386938 0.9784574 |
根據\(\beta_{j}^*=\frac{\beta_{j}*s_{x}}{s_{y}}\),使用未標準化估係數計算標準化係數如下:
1 2 3 |
(coeff_scale # (Intercept) hp disp wt # 37.10550527 -0.35443851 -0.01926874 -0.61706350 |
或是將標準化係數還原如下:
1 2 3 |
(coeff_orig # (Intercept) hp disp wt # 3.567690e-17 -3.115655e-02 -9.370091e-04 -3.800891e+00 |
結論
- 常用的資料標準化方法:使用平均值作為中心點,並使用樣本標準差作為衡量單位。
$$Z=\frac{x-\bar{x}}{s_{x}}$$ - 資料標準化僅影響各預測變數的係數與標準誤標準化前後之大小,其中係數標準化前(\(\beta\))後(\(\beta^*\))之關係如下:
$$\beta_{j}^*=\frac{\beta_{j}\times s_{x}}{s_{y}}$$ - 資料標準化並不會對各係數顯著性和模型顯著性與調整後R平方等統計量有所影響。
- 資料標準化的目的是讓各變數的估計參數大小可以彼此比較,並以此推論各解釋變數的影響力。並非建模必要步驟。
更多統計模型學習筆記連結:
參考連結: