You are on page 1of 68

19

Chương 4: Mô hình hồi quy tuyến tính hai biến số

Mục tiêu của chương này là hướng dẫn các thực hành cho mô hình hồi quy hai biến số (còn gọi là hồi
quy đơn với ngụ ý rằng chỉ có một biến độc lập trong mô hình), kiểm định giả thuyết về các hệ số hồi
quy, ước lượng khoảng, ước lượng điểm, cũng như kiểm tra một số giả thuyết cơ bản về phần dư.

Trong chương này chúng ta sẽ thực hành với file dữ liệu có tên ch2_health.wf1 được cung cấp bởi
khoa Toán thuộc ĐH Kinh Tế Quốc Dân. File dữ liệu này gồm các thông tin về chi cho hệ thống chăm
sóc y tế (biến HEALTH), dân số (biến POP) và thu nhập từ các thuế và phí (biến INCOME) từ 50 bang
và khu vực hành chính Washington DC của Hoa Kì. Mục tiêu nghiên cứu là đánh giá xem chi cho hệ
thống y tế có liên hệ thế nào với nguồn thu nhập của các bang.

4.1 Một số thống kê cơ bản về bộ dữ liệu


Trướ c hết chú ng ta yêu cầ u R nhậ p bộ dữ liệu ch2_health.wf1 dướ i dạ ng mộ t data.frame tên mớ i là
dung đồ ng thờ i chỉ định R chỉ là m việc vớ i file dữ liệu nà y như sau:

setwd("D:/KTLR")
library(hexView)
dung <- readEViews("ch2_health.wf1", as.data.frame = TRUE)

Thố ng kê mô tả sơ bộ cho cá c biến số trong bộ dữ liệu:

summary(dung)

## HEALTH INCOME POP


## Min. : 1407 Min. : 11700 Min. : 480
## 1st Qu.: 5134 1st Qu.: 35800 1st Qu.: 1454
## Median : 13669 Median : 87300 Median : 3840
## Mean : 19929 Mean 144153 Mean : 5299
## 3rd Qu.: 22141 3rd Qu.:176650 3rd Qu.: 6026
## Max. :110057 Max. :920500 Max. 32683

Chú ng ta có kết quả hoà n toà n tương tự vớ i toá n tử pipe:

library(tidyverse)
dung %>% summary()

Nếu chú ng ta quan tâ m đến ngũ phâ n vị củ a biến INCOME:

with(dung, quantile(dung$INCOME))

## 0% 25% 50% 75% 100%


## 11700 35800 87300 176650 920500

Điều nà y có nghĩa là có (25%)⨉51 = 13 bang có INCOME bé hơn 35800. Chú ý rằ ng giá trị ứ ng vớ i
50% là 87300 chính là trung vị (Median) – giá trị mà chú ng ta đã thấ y ở phầ n trướ c.

Nguyễn Chí Dũng http://rpubs.com/chidungkt


170

Kết quả trên cũ ng có thể thu đượ c theo mộ t cá ch khá c vớ i toá n tử pipe (khô ng hiển thị kết quả ):

dung %>% with(., quantile(.$INCOME))

Chú ý rằ ng khi đã sử dụ ng toá n tử pipe thì dấu chấm (.) trong câ u lệnh trên có nghĩa là chú ng ta
đang “á m chỉ” đến data frame có tên dung.

Nếu chú ng ta quan tâ m đến cá c chi tiết thố ng kê chi tiết hơn cho bộ số liệu chú ng ta có thể sử dụ ng
gó i pastecs (xem lạ i chương 3):

options(scipen = 100)
options(digits = 8)
library(pastecs)
stat.desc(dung)

## HEALTH INCOME POP


## nbr.val 51.0000000 51.0000000 51.0000000
## nbr.null 0.0000000 0.0000000 0.0000000
## nbr.na 0.0000000 0.0000000 0.0000000
## min 1407.0000000 11700.0000000 480.0000000
## max 110057.0000000 920500.0000000 32683.0000000
## range 108650.0000000 908800.0000000 32203.0000000
## sum 1016385.0000000 7351800.0000000 270251.0000000
## median 13669.0000000 87300.0000000 3840.0000000
## mean 19929.1176471 144152.9411765 5299.0392157
## SE.mean 3094.9213438 23684.3867414 828.5198770
## CI.mean.0.95 6216.3324664 47571.4908040 1664.1311486
## var 488505444.3458824 28608458941.1764717 35008704.5184314
## std.dev 22102.1592689 169140.3527878 5916.8154034
## coef.var 1.1090385 1.1733396 1.1165827

Chú ng ta có thể, chẳ ng hạ n, tìm ra quã ng đá ng tin 95% củ a HEALTH nằ m trong khoả ng từ 19929 –
6216 đến 19929 + 6216. Cò n giá trị coef.var = 1.109 chính là thương số củ a std.dev chia cho mean.
Giá trị CI.mean.0.95 là quã ng đá ng tin 95% cho cá c biến số (CI là viết tắ t củ a chữ Confidence
Interval
– quã ng đá ng tin).

Ma trậ n hệ số tương quan giữ a cá c biến số :

cor(dung)

## HEALTH INCOME POP


## HEALTH 1.00000000 0.99089362 0.98597260
## INCOME 0.99089362 1.00000000 0.99300219
## POP 0.98597260 0.99300219 1.00000000
171

Hệ số tương quan giữ a POP và INCOME gầ n bằ ng 1 (lớ n hơn 0.8) nên nếu cả hai biến nà y xuấ t hiện
vớ i tư cá ch là biến độ c lậ p trong phương trình hồ i quy thì mô hình có thể mắ c lỗ i đa cộ ng tuyến ở
mứ c độ nghiên trọ ng. Chú ng ta sẽ xem xét vấ n đề nà y ở chương 7.

4.2 Thực hiện hồi quy và một số kiểm định thường gặp
Mụ c nà y chú ng ta xem xét việc thự c hiện hồ i quy đơn cũ ng như thự c hiện cá c kiểm định thườ ng gặ p
vớ i R.

4.2.1 Hồi quy đơn, khoảng tin cậy cho các hệ số và bảng ANOVA
Chú ng ta xét mô hình hồ i quy hai biến số sau:

HEALTH = β1 + β2INCOME + ui (1)

Để ướ c lượ ng mô hình nà y trong R:

hoiquy <- lm(data = dung, HEALTH ~ INCOME)


options(scipen = 10)
summary(hoiquy) ## Call:
## lm(formula = HEALTH ~ INCOME, data = dung) ##
## Residuals:
##Min

1QMedian3QMax
## -10396.27 -1272.71-361.281087.989019.47
##
## Coefficients:
##EstimateStd. Error t value Pr(>|t|) ## (Intercept) 1263.6871121 555.4167236 2.2752
0.0273 *
## INCOME 0.1294835 0.0025135 51.5143<2e-16 ***
## ---
## Signif. codes: ##
0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

## Residual standard error: 3006.2 on 49 degrees of freedom


## Multiple R-squared: 0.98187,Adjusted R-squared: 0.9815 ## F-statistic: 2653.7 on 1 and

Vớ i toá n tử pipe thì toà n bộ kết quả nà y có thể đượ c thự c hiện ngắ n gọ n như sau:

dung %>% lm(data = ., HEALTH ~ INCOME) %>% summary()

Cá c bạ n có thể nâ ng độ chính xá c củ a cá c kết quả bằ ng cá ch như sau:

options(digits = 10)
summary(hoiquy)
## Call:
## lm(formula = HEALTH ~ INCOME, data = dung)
172

##
## Residuals:
## Min 1Q Median 3Q Max
## -10396.2691 -1272.7115 -361.2774 1087.9789 9019.4712
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1263.687112078 555.416723600 2.27521 0.027305 *
## INCOME 0.129483522 0.002513543 51.51434 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3006.205 on 49 degrees of freedom
## Multiple R-squared: 0.9818702, Adjusted R-squared: 0.9815002
## F-statistic: 2653.727 on 1 and 49 DF, p-value: < 2.2204e-16

Lú c nà y, thố ng kê F đượ c lấ y tớ i 3 chữ số sau dấ u phẩ y. Rõ rà ng, nếu că n cứ theo cá c tiêu chuẩ n
truyền thố ng thì mô hình hồ i quy củ a chú ng ta là tố t thể hiện ở : (1) tấ t cả cá c hệ số hồ i quy có ý
nghĩa thố ng kê ở mứ c 5%, (2) R2 rấ t cao, và (3) thố ng kê F có giá trị lớ n.

Chú ng ta cũ ng có thể biểu diễn đườ ng hồ i quy (Regression Line) vớ i khoả ng tin cậ y 95%:

library(ggplot2)
ggplot(dung, aes(INCOME, HEALTH)) + geom_point() + geom_smooth(method = "lm")

Có thể vẽ đườ ng hồ i quy theo mộ t cá ch khá c:

plot(HEALTH ~ INCOME, data = dung)


abline(hoiquy)

Phầ n trên chú ng ta đã quen thuộ c vớ i hà m summary(). Chẳ ng hạ n để tính khoả ng tin cậ y 95% cho
cá c hệ số hồ i quy:

confint(hoiquy)

## 2.5 % 97.5 %
## (Intercept) 147.5354180444 2379.8388061115
## INCOME 0.1244323678 0.1345346762
173

Tính khoả ng tin cậ y 90% cho cá c hệ số hồ i quy:

confint(hoiquy, level = 0.9)

## 5 % 95 %
## (Intercept) 332.5027083524 2194.8715158035
## INCOME 0.1252694389 0.1336976051

Mộ t trong nhữ ng thô ng tin quan trọ ng khi thự c hiện hồ i quy là phâ n tích bả ng ANOVA:

anova(hoiquy)

## Analysis of Variance Table


##
## Response: HEALTH
## Df Sum Sq Mean Sq F value Pr(>F)
## INCOME 1 23982446067 23982446067 2653.7273 < 2.22e-16 ***
## Residuals 49 442826151 9037268
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Ở đâ y RSS (vớ i df2 = 51 – 2 = 49 bậ c tự do) là 442826151 và ESS (vớ i df1 = 1 bậ c tự do) là


23982446067. Vớ i chú ý rằ ng TSS = RSS + ESS chú ng ta có thể kiểm tra lạ i là R 2 =ESS/TSS = 0.982.
Bả ng ANOVA nà y cũ ng hiển thị giá trị thố ng kê F là 2653.727 = (ESS/df1)/(RSS/df2) =
(23982446067/1)/( 442826151/49). Kết quả nà y chính là giá trị F đượ c hiển thị ở kết quả phâ n
tích hồ i quy.

4.2.2 Thực hiện một số kiểm định thường gặp cho mô hình hồi quy
Dướ i đâ y trình bà y mộ t số kiểm định thườ ng gặ p cho mô hình hồ i quy. Cá c kiểm định nà y có thể
phâ n thà nh hai nhó m. Nhó m thứ nhấ t là cá c kiểm định nhằ m đá nh giá mô t số giả thuyết củ a mô
hình hồ i quy tuyến tính cổ điển, chẳ ng hạ n, kiểm định tính phâ n phố i chuẩ n củ a phầ n dư. Nhó m thứ
hai là cá c kiểm định liên quan đến hệ số hồ i quy củ a mô hình.

4.2.2.1 Kiểm định Wald về một giá trị cụ thể của một hệ số hồi quy
Giả sử chú ng ta tin rằ ng số hồ i quy β2 = 0.15. Chú ng ta có thể kiểm định giả thuyết nà y vớ i gó i AER
như sau:

library(AER)
hoiquy <- lm(data = dung, HEALTH ~ INCOME)# Chạy lại mô hình hồi quy
linearHypothesis(hoiquy, "INCOME = 0.15")

## Linear hypothesis test


##
## Hypothesis:
## INCOME = 0.15
##
## Model 1: restricted model
## Model 2: HEALTH ~ INCOME
##
174

## Res.Df RSS Df Sum of Sq F Pr(>F)


## 1 50 1044928171
## 2 49 442826151 1 602102021 66.62434 0.00000000010799 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Cộ t giá trị Pr(>F) = 10.79⨉10-11 là rấ t bé nên ta bá c bỏ giả thiết β2 = 0.15. bạ n có thể thự c hiện kiểm
định nà y bằ ng gõ linear.hypothesis(hoiquy,"INCOME=0.15"). Tấ t nhiên kết quả là khô ng thay
đổ i.

4.2.2.2 Kiểm định Wald đồng thời cho nhiều hệ số hồi quy
Nếu chú ng ta tin rằ ng β1 = 1300 và β2 = 0.15 chú ng ta có thể thự c hiện kiểm định Wald như sau:
## Linear hypothesis testc("(Intercept) = 1300", "INCOME = 0.13"))
linearHypothesis(hoiquy,
##
## Hypothesis:
## (Intercept) = 1300
## INCOME = 0.13
##
## Model 1: restricted model
## Model 2: HEALTH ~ INCOME
##
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 51 443833425
## 2 49 442826151 2 1007274.4 0.05573 0.94586

Cộ t giá trị Pr(>F) = 0.94 > 5% nên chú ng ta có bằ ng chứ ng thố ng kê cho rằ ng β1 = 1300 và β2 = 0.15.
Ở đâ y cá c bạ n cầ n chú ý rằ ng mặ c dù chú ng ta bắ c bỏ giả thuyết β2 = 0.15 (mụ c 4.5) nhưng chú ng ta
lạ i chấ p nhậ n giả thuyết rằ ng β1 = 1300 và β2 = 0.15.

Kiểm định Wald về sự rà ng buộ c củ a cá c hệ số hồ i quy á p dụ ng cho cặ p giả thuyết H0: mβ2 + nβ3 = p;
H1: mβ2 + nβ3 # p. Kiểm định nà y á p dụ ng cho hồ i quy bộ i và ta sẽ xét trong chương 5.

Sử dụng kết quả hồi quy cho ước lượng


Mộ t trong nhữ ng ứ ng dụ ng củ a cá c mô hình hồ i quy là sử dụ ng cho cá c mụ c đích ướ c lượ ng. Chú ng
ta trở lạ i vớ i mô hình đượ c nghiên cứ u trướ c đó ở mụ c 4.2:

HEALTH = β1 + β2INCOME. + ui

Để thuậ n tiện và ngắ n gọ n khi đá nh má y, đặ t HEALT = Y và INCOME = X ta có :

Y = β1 + β2X + ui
175

Giả sử chú ng ta muố n ướ c lượ ng:

Ŷ 0= E(Y|X0 =20.000) = β̂ 1 + β̂ 2X0

Trong đó X0 là mộ t giá trị cụ thể na o đo . Vì Ŷ 0 là mộ t ướ c lượ ng nên nó có thể khác giá trị thự c và
tuâ n theo mộ t phân phố i nà o đó . Khoa họ c thố ng kê đã chỉ ra rằ ng Ŷ 0 tuâ n theo phâ n phố i chuẩ n vớ i
phương sai như sau:
1
var(𝑌̂0 ) = 𝜎 2 [ ( 𝑋0 − 𝑋̅ ) 2
+ 2 ] (𝑎)
𝑛 ∑ 𝑥𝑖
Hay:

𝑠𝑒(𝑌̂0 ) = √var(𝑌̂0 ) (𝑏)

Nhưng do σ2 là khô ng biết nên chú ng ta phả i thay thế nó bằ ng σ̂ 2 là ướ c lượ ng củ a σ2 và do vậ y


chú ng ta thấ y rằ ng biến:

𝑌̂0 − (𝛽1 + 𝛽2 𝑋0 )
𝑡= (𝑐)
𝑠𝑒(𝑌̂ ) 0

Tuâ n theo phâ n phố i student t vớ i n – 2 bậ c tự do và khoả ng tin cậ y α là :


𝑃𝑟[𝛽̂ + 𝛽̂ 𝑋 −𝑡 𝑠𝑒(𝑌̂ ) ≤ + 𝛽 𝑋 ≤ 𝛽̂ + +𝑡 𝑠𝑒(𝑌̂ )] = 1 − 𝛼 (𝑑)
𝛽 𝛽̂ 𝑋
1 2 0 𝛼/2 0 1 2 0 1 2 0 𝛼/2 0

Chú ý rằ ng ướ c lượ ng σ̂ 2 củ a σ2 ở cô ng thứ c (2) đượ c tính theo cô ng thứ c sau:


∑ û𝑖2
σ̂ 2 = (𝑒)
𝑛−
2
Vớ i đó X0 = 20000 (chẳ ng hạ n thu nhậ p củ a bang California) thì chi cho ý tế Ŷ 0 là :

1263.6871121 + 0.1294835*20000

## [1] 3853.357553

Con số 3853.687nà y gâ y ra nhiều nhầ m lẫ n trong diễn giả i ý nghĩa củ a nó . Thự c vậ y, nhiều bạ n hiểu
mộ t cá ch sai trá i rằ ng khi income củ a Carlifornia bằ ng 20000 thì chi cho y tế củ a bang nà y là
3853.687. Nguyên nhâ n là chi cho y tế củ a bang California là mộ t biến ngẫ u nhiên và ta khô ng biết
chính xá c biến ngẫ u nhiên nà y là bao nhiêu mà chỉ biết nó nằ m trong mộ t khoả ng giá trị nà o đó mà
thô i. Giá trị 3853.687 ở trên đượ c gọ i là ước lượng điểm (Point Prediction, tên gọ i khá c là ước
lượng trung bình – Mean Prediction). Sử dụ ng cá c cô ng thứ c từ (a) đến (e) chú ng ta có thể tính
ướ c lượ ng khoả ng tin cậ y 95% cho ướ c lượ ng củ a Ŷ 0 khi X0 = 20000. Tuy nhiên tính toá n thủ cô ng
như vậ y rấ t lâ u. R cho phép ta tính con số ướ c lượ ng điểm 3853.687 cù ng vớ i khoả ng tin cậ y 95%
mộ t cá ch nhanh chó ng chỉ vớ i mộ t dò ng lệnh:

khiINCOMEla20000 <- data.frame(INCOME = 20000)


predict(hoiquy, khiINCOMEla20000, interval = "confidence")
176

## fit lwr upr


## 1 3853.357553 2800.322593 4906.392513
Ở đâ y giá trị fit chính là giá trị ướ c lượ ng điểm mà ta đã tính ở trên cò n lwr và upr lầ n lượ t là cá c
cậ n dướ i và cậ n trên củ a ướ c lượ ng điểm theo cô ng thứ c (d). Chú ý rằ ng hai câ u lệnh trên có thể viết
thà nh mộ t câ u lệnh duy nhấ t như sau:

predict(hoiquy, newdata = data.frame(INCOME = 20000), interval ="confidence")

## fit lwr upr


## 1 3853.357553 2800.322593 4906.392513
Nếu muố n thự c hiện ướ c lượ ng khoả ng tin cậ y 99% thì:

predict(hoiquy, newdata = data.frame(INCOME = 20000), interval="confidence",


level = 0.99)

## fit lwr upr


## 1 3853.358 2449.039 5257.676
Tương tự chú ng ta có thể tính cá c ướ c lượ ng điểm cù ng vớ i khoả ng tin cậ y 95% cho 51 quan sá t (lấ y
kết quả cho 5 quan sá t đầ u tiên) như sau:

predict(hoiquy, interval = "confidence")

## fit lwr upr


## 1 13694.105227 12813.895925 14574.314529
## 2 3477.855339 2416.031617 4539.679061
## 3 15895.325102 15034.877412 16755.772792
## 4 8216.952245 7255.516515 9178.387975
## 5 120453.269144 116441.615058 124464.923230

Chú ng ta cũ ng có thể ướ c lượ ng HEALTH khi INCOME lầ n lượ t là 20000,21000, và 22000 cù ng mộ t


lú c như sau:

predict(hoiquy, newdata = data.frame(INCOME = c(20000, 21000, 22000)),


interval = "confidence")

## fit lwr upr


## 1 3853.357553 2800.322593 4906.392513
## 2 3982.841075 2932.806397 5032.875753
## 3 4112.324597 3065.274430 5159.374764

Nếu bạ n muố n dự bá o mộ t chuỗ i cá c ướ c lượ ng ứ ng vớ i mứ c thu nhậ p từ 12000 cho đến 100000
nhưng cá c mứ c thu nhậ p cá ch nhau 1000. Tứ c là quan sá t đầ u tiên ứ ng vớ i INCOME = 12000, quan
sá t thứ hai ứ ng vớ i INCOME = 13000 cho đến quan sá t cuố i cù ng ứ ng vớ i INCOME = 100000 thì
chú ng ta là m như sau (lấ y 10 kết quả đầ u tiên) :
177

predict(hoiquy, newdata = data.frame(INCOME = seq(from = 12000, to = 100000,


by = 1000)), interval = "confidence")

## fit lwr upr


## 1 2817.489376 1739.900374 3895.078379
## 2 2946.972899 1872.505574 4021.440223
## 3 3076.456421 2005.096056 4147.816785
## 4 3205.939943 2137.671690 4274.208195
## 5 3335.423465 2270.232347 4400.614582
## 6 3464.906987 2402.777898 4527.036076
## 7 3594.390509 2535.308210 4653.472807
## 8 3723.874031 2667.823153 4779.924909
## 9 3853.357553 2800.322593 4906.392513
## 10 3982.841075 2932.806397 5032.875753

Tuy nhiên nếu chú ng ta quan tâ m đến cá c ước lượng cá nhân (Individual Prediction) củ a Y0 (Y0 chứ
khô ng phả i la` Ŷ 0 ) tương ứ ng vớ i X0 thì giá trị ướ c lượ ng Y0 có phương sai tính theo cô ng thứ c sau:
1 (𝑋0 − 𝑋̅ )2
2 = 𝜎2 [1 +
var(𝑌0 − 𝑌̂0 ) = 𝐸[𝑌0 −
𝑛+ ] (𝑓)
𝑌̂0 ] ∑ 𝑥𝑖2

Thay thế σ2 bằ ng σ̂ 2 thì có thể thấ y rằ ng:


𝑌0 −
𝑌̂0
𝑡= (𝑔)
𝑠𝑒(𝑌0 − 𝑌0̂ )
Tuâ n theo phâ n phố i t, có thể ướ c lượ ng khoả ng tin cậ y ở ngưỡ ng α (mặ c định là 5%) cho Y 0 khi X0 =
20000 mộ t cá ch nhanh chó ng vớ i lự a chọ n interval="prediction":

predict(hoiquy, newdata = data.frame(INCOME = 20000),interval = "prediction")

## fit lwr upr


## 1 3853.357553 -2278.928 9985.643

Giá trị fit (ướ c lượ ng) thì khô ng thay đổ i và vẫ n là 3853.357553 nhưng có thể thấ y khoả ng tin cậ y
trở nên rộ ng hơn.

4.3 Một số tiêu chí thường sử dụng để đánh giá chất lượng mô hình
Khi thự c hiện cá c phâ n tích cũ ng như nghiên cứ u, chú ng ta có thể phả i đưa ra quyết định lự a chọ n
mô hình nà o là phù hợ p. Hoặ c chú ng ta cũ ng cầ n phả i đá nh giá phẩ m chấ t, độ phù hợ p củ a mô hình
chẳ ng hạ n. Để là m điều nà y, trướ c hết chú ng ta phả i quyết định cầ n phả i sử dụ ng nhữ ng tiêu chí gì
để đá nh giá mộ t mô hình là tố t hơn nhữ ng mô hình khá c cũ ng như chấ t lượ ng củ a mộ t mô hình cụ
thể. Ví dụ , để lự a chọ n mộ t mô hình trong số cá c mô hình cạ nh tranh nhau chú ng ta phả i dự a và o
mộ t loạ t cá c yếu tố cũ ng như tiêu chí khá c nhau. Trong mụ c nà y, chú ng ta xem xét mộ t số tiêu chí
thố ng kê thườ ng sử dụ ng để đá nh giá và so sá nh cá c mô hình.
178

4.5.1 Tiêu chí R2 và tương quan giữa Y và Ŷ


Đâ y là hai tiêu chí đo lườ ng mứ c độ phù hợ p củ a mô hình (Measures of Fit). Về cơ bả n, trong hai mô
hình thì mô hình nà o có R2 hoặ c R2 hiệu chỉnh cao hơn là mô hình tố t hơn. Theo Gujarati & Porter
(2009), hạ n chế củ a tiêu chí nà y là chú ng ta chỉ so sá nh và đá nh giá đượ c cá c mô hình có : (1) biến
phụ thuộ c là giố ng nhau, và (2) có kích cỡ mẫ u như nhau. Điều nà y có nghĩa là chú ng ta khô ng thể
lấ y R2 là m tiêu chuẩ n để đá nh giá hai mô hình sau:

ln(Y) = β1 + β2X + u (mô hình a)

Y = ψ1 + ψ2X + u (mô hình b)

Vớ i hồ i quy đơn (là mô hình chỉ có 1 biến độ c lậ p) như ở mô hình a thì R2 = [cor(Y,X)]2 hay là bình
phương tương quan giữ a X và Y. Vớ i hồ i quy đa biến (mô hình có nhiều hơn 1 biến độ c lậ p) thì R 2 =
[cor(Y,Ŷ )]2 trong đo ,Ŷ la` gia trị dự bá o củ a củ a Y thu đượ c từ mô hình.

Trong tình huố ng mà hai mô hình khô ng có biến phụ thuộ c như nhau như mô hình a và mô hình b
thì để đá nh giá và so sá nh chú ng ta có thể so sa nh cor(Y,Ŷ a) va` cor(Y,Ŷ b) vớ i Ŷ a va` Ŷ b lầ n lượ t là cá c
giá trị ướ c lượ ng thu đượ c củ a Y từ mô hình a và b. Giá trị tương quan mà cà ng cao thì có nghĩa là
ướ c lượ ng củ a Y thu đượ c cà ng gầ n vớ i giá trị thự c củ a nó , và do đó mô hình nà o có giá trị tương
quan nà y cao hơn thì sẽ là mô hình tố t hơn.

4.5.2 Các tiêu chí đánh giá theo phần dư


Nhó m cá c tiêu chí sử dụ ng giá trị củ a phầ n dư là mộ t trong nhữ ng tiêu chí sử dụ ng phổ biến khi so
sá nh, đá nh giá mô hình. Trong số cá c tiêu chí thuộ c nhó m nà y thì RMSE và MSE là hai tiêu chí sử
dụ ng phổ biến hơn. MSE đượ c tính theo cô ng thứ c sau:
1 𝑛
MSE = ∑(𝑌
− 𝑌 )2
𝑖 𝑖
𝑛
𝑖=1

Cò n RMSE đượ c tính bằ ng că n bậ c hai củ a MSE.

Mộ t giá trị MSE (hoặ c RMSE) cà ng bé thì có nghĩa là nhữ ng giá trị ướ c lượ ng củ a Y sẽ cà ng sá t vớ i giá
trị thự c và do đó , mộ t mô hình có MSE (RMSE) bé hơn sẽ là mộ t mô hình tố t hơn.

Ngoà i ra mộ t số tiêu chí thuộ c nhó m nà y là MD, MAD, MPE và MAPE cũ ng có thể đượ c sử dụ ng để
đá nh giá mô hình.

4.5.3 Các tiêu chuẩn thông tin AIC, SIC, và Cp của Mallow
Đâ y là nhó m tiêu chí thườ ng đượ c sử dụ ng thay thế cho R2 trong nhiều tình huố ng và nó hạ n chế
đượ c cá c nhượ c điểm củ a tiêu chí R2.

Vớ i cá c kí hiệu cá c bạ n đã quen thuộ c, tiêu chuẩ n thô ng tin Akaike (AIC) đượ c tình theo cô ng thứ c:
∑ 𝑢̂ 2 RSS
2𝑘/𝑛 𝑖 2𝑘/𝑛
AIC = 𝑒 = 𝑒
𝑛 n
179

Vớ i chú ý rằ ng n là số quan sá t, k là số biến số trong mô hình. Că n cứ và o tiêu chuẩ n thô ng tin


Akaike AIC, mô hình có AIC thấ p hơn sẽ đượ c lự a chọ n. Hầ u hết cá c phầ n mềm thố ng kê, kể cả R đều
bá o cá o tiêu chuẩ n thô ng tin nà y. Vớ i mô hình 1 như ở mụ c 4.2 để có tiêu chuẩ n thô ng tin Akaike cá c
bạ n sử dụ ng câ u lệnh:

AIC(hoiquy)

Tương tự , tiêu chuẩ n thô ng tin Schwarz (SIC) cũ ng đượ c sử dụ ng để so sá nh và đá nh giá cá c mô hình
cạ nh tranh. SIC đượ c tính theo cô ng thứ c sau:
∑ 𝑢̂ 2
RSS
𝑘/𝑛 𝑘/𝑛
SIC = 𝑛 =𝑛
𝑛 n
Hiện tạ i, trong R chưa có sẵ n hà m tính SIC nhưng cá c bạ n có thể trự c tiếp SIC trong R theo cô ng thứ c
nà y.

Mộ t tiêu chuẩ n nữ a là hệ số Cp củ a Mallow (Mallow’s Cp Criterion) đượ c tính theo cô ng thứ c:


RSS𝑝
𝐶𝑝 = − (𝑛 − 2𝑝)
𝜎̂ 2
Trong đó p là số biến độ c lậ p (chú ý vớ i mô hình k biến thì p = k – 1). Chú ng ta cũ ng biết rằ ng E(σ̂ 2)
là ướ c lượ ng khô ng chệch củ a phương sai sai số ngẫ u nhiên σ2 – đạ i lượ ng mà chú ng ta không bao
giờ biết chính xá c. Do vậ y, chú ng ta có thể xấ p xỉ E(Cp) như sau:
(𝑛 − 𝑝)𝜎2
𝐸(𝐶𝑝) ≈ − (𝑛 − 2𝑝) ≈ 𝑝
𝜎2
Că n cứ theo tiêu chí Cp nà y, chú ng ta sẽ ưu tiên lự a chọ n mô hình có Cp thấ p hơn và có hệ số R2 hoặ c
R2 hiệu chỉnh cà ng cao cà ng tố t. Thườ ng thì hai mụ c tiêu nà y mâ u thuẫ n vớ i nhau và việc lự a chọ n
mô hình cũ ng cò n nên că n cứ và o, chẳ ng hạ n, mố i quan hệ củ a cá c biến số trong thự c tế. Chú ng ta sẽ
nghiên cứ u kĩ hơn vớ i tiêu chuẩ n nà y ở mụ c 7.3 thuộ c chương 7.

4.5.4 Tỉ lệ sai sót huấn luyện, sai sót kiểm định và hiện tượng quá khớp
Nhữ ng gì cá c bạ n sắ p đọ c chắ c chắ n là mộ t thử thá ch. Khô ng phả i vì nhữ ng gì đượ c trình bà y ở đâ y
là quá khó so vớ i tư duy củ a cá c bạ n mà vì mộ t lí do khá c rấ t đặ c trưng củ a hầ u hết chú ng ta: chưa
quen vớ i suy nghĩ mộ t cá ch thố ng kê (Thinking Statistically) – điều mà hầ u hết cá c giá o trình thố ng
kê cũ ng như kinh tế lượ ng bằ ng tiếng Việt khô ng đề cậ p.

Thô ng thườ ng việc so sá nh chấ t lượ ng giữ a hai mô hình hình cạ nh tranh nhau hoặ c đá nh giá chấ t
lượ ng củ a mộ t mô hình chú ng ta thườ ng dự a và o, chẳ ng hạ n, tiêu chí R 2 hoặ c MSE. Nếu chọ n MSE để
đá nh giá thì mô hình nà o có MSE bé hơn sẽ là mô hình tố t hơn. Trong tình huố ng đặ c biệt, nếu MSE
= 0 (tương đương vớ i R2 =1) thì có nghĩa là chú ng ta có mộ t mô hình hoà n hả o vớ i ngụ ý rằ ng cá c
biến số giả i thích 100% biến độ ng củ a biến phụ thuộ c. Tương tự , khi đá nh giá mộ t mô hình chú ng ta
thườ ng că n cứ và o R2 – chỉ số nà y cà ng cao cà ng tố t. Hoặ c chú ng ta ta că n cứ và o MSE – chỉ số nà y
cà ng thấ p cà ng tố t. Phả i chă ng, chẳ ng hạ n, chỉ căn cứ vào MSE để đánh giá (hay so sá nh) chấ t
lượ ng củ a cá c mô hình là đủ ?
180

Câ u trả lờ i là khô ng. Để đá nh giá chấ t lượ ng củ a mộ t mô hình, theo James et al. (2013), chúng ta
cần căn cứ vào đồng thời cả hai tiêu chí: (1) sai số huấn luyện – training test error, và (2) sai
số kiểm định – testing test error. Để là m rõ hai khá i niệm nà y chú ng ta trở lạ i vớ i bộ số liệu ở mụ c
CPS1988 đã sử dụ ng ở chương 3 nhằ m ướ c lượ ng mô hình sau:

wage = β1 + β2education + u (2)

Tuy nhiên thay vì ướ c lượ ng mô hình 2 vớ i tấ t cả 28155 quan sá t chú ng ta chỉ ướ c lượ ng mô hình
nà y vớ i 16.000 quan sá t mà thô i. Rõ rà ng là có đến K= 28155!/[16000!⨉(28155-16000)!] cá ch lấ y
ra 16000 quan sá t từ 28155 quan sá t và do vậ y chú ng ta cũ ng có chừ ng đó cặ p giá trị ướ c lượ ng củ a
β1 và β2 cũ ng như MSE. Dướ i đâ y là 2 bộ số liệu rú t ra từ K bộ số liệu có 16000 quan sá t và do vậ y có
2 bộ ướ c lượ ng β1 và β2 cũ ng như MSE:
data(CPS1988, package = "AER")
dim(CPS1988)

## [1] 28155 7

head(CPS1988)

## wage education experience ethnicity smsa region parttime


## 1 354.94 7 45 cauc yes northeast no
## 2 123.46 12 1 cauc yes northeast yes
## 3 370.37 9 9 cauc yes northeast no
## 4 754.94 11 46 cauc yes northeast no
## 5 593.54 12 36 cauc yes northeast no
## 6 377.23 16 22 cauc yes northeast no

set.seed(2611)
p <- 16000 / 28155
id1 <- sample(nrow(CPS1988), round(p*nrow(CPS1988)))
data1 <- CPS1988[id1, ] # Lấy bộ số liệu thứ nhất gồm 16000 quan sát.
data11 <- CPS1988[-id1, ] # Bộ số liệu còn lại sau khi loại ra tất cả các
quan sát đã có ở data1.
id2 <- sample(nrow(CPS1988), round(p*nrow(CPS1988)))
data2 <- CPS1988[id2, ] # Lấy bộ số liệu thứ hai gồm 16000 quan sát.
data22 <- CPS1988[-id2, ] # Lấy phần số liệu còn lại sau khi loại ra tất cả c
ác quan sát đã có ở data2.
head(data1)

## wage education experience ethnicity smsa region parttime


## 27187 1115.86 12 26 cauc yes west no
## 3590 325.68 14 3 cauc yes northeast no
## 5040 569.80 12 26 cauc yes northeast no
## 19729 550.09 12 16 cauc no south no
181

## 25187 474.83 18 0 cauc yes west no


## 18329 246.91 12 10 cauc no south no

head(data2)

## wage education experience ethnicity smsa region parttime


## 20135 74.07 5 56 cauc yes south yes
## 1967 1234.57 18 32 cauc yes northeast no
## 6773 427.35 12 15 cauc yes midwest no
## 17046 379.87 12 16 cauc yes south no
## 5639 469.14 11 47 cauc yes northeast no
## 10730 379.87 12 9 cauc yes midwest no

ols1 <- lm(wage ~ education, data = data1)


ols2 <- lm(wage ~ education, data = data2)
library(stargazer)
stargazer(ols1, ols2, type = "text")

##
## =============================================================
## Dependent variable:
## ----------------------------
## wage
## (1) (2)
##
## education 48.268*** 46.491***
## (1.150) (1.246)
##
## Constant -24.752 -1.028
## (15.432) (16.696)
##
##
## Observations 16,000 16,000
## R2 0.099 0.080
## Adjusted R2 0.099 0.080
## Residual Std. Error (df = 15998) 421.488 455.417
## F Statistic (df = 1; 15998) 1,760.477*** 1,393.024***
## =============================================================
## Note: *p<0.1; **p<0.05; ***p<0.01

library(Metrics)
MSE1 <- mse(data1$wage, predict(ols1, data1))
MSE2 <- mse(data2$wage, predict(ols2, data2))
print(paste(MSE1, MSE2))
182

## [1] "177630.272890156 207379.168767557"

Ở đâ y cá c bạ n có thể thấ y MSE1 thu đượ c từ bộ dữ liệu data1 bé hơn MSE2 thu đượ c từ data2. Phả i
chă ng cá c ướ c lượ ng từ data1 sẽ là đạ i diện hợ p lí hơn so vớ i cá c ướ c lượ ng từ data2 để mô tả mố i
quan hệ thự c giữ a wage và education?.

Câ u trả lờ i là chưa chắ c. MSE1 và MSE2 mà chú ng ta thu đượ c ở trên chính là tỉ lệ sai sót huấn
luyện (training error rate). Nguyên nhâ n là ta thu đượ c cá c ướ c lượ ng OLS từ data1 và data2 rồ i ta
sử dụ ng chính hai mô hình thu đượ c dự a trên hai bộ số liệu nà y để ướ c lượ ng wage thuộ c chính
data1 và data2. Ở đâ y, bộ dữ liệu đượ c sử dụ ng để xâ y dự ng mô hình là data1 và data2 nên trong
nghiên cứ u thố ng kê và kinh tế lượ ng, chú ng có mộ t tên gọ i cụ thể hơn thể hiện bả n chấ t và và i trò
củ a bộ số liệu: dữ liệu huấn luyện (training data, hoặ c training set).

Tương tự khá i niệm tỉ lệ sai só t huấ n luyện, tỉ lệ sai sót kiểm định (testing error rate) đượ c tính
toá n dự a trên data11 và data22 – là hai bộ dữ liệu cò n lạ i sau khi chú ng ta lấ y ra data1 và data2 –
nhằ m đá nh giá mô hình. Hai bộ dữ liệu data11 và data22 có tên gọ i là dữ liệu kiểm định (testing
data, hay testing set). Tên gọ i nà y có ngụ ý rằ ng, chẳ ng hạ n, ols1 được xây dựng dựa trên bộ số
liệu data1 và sau đó bộ dữ liệu kiểm định tương ứng của data1 là data11 được sử dụng để
đánh giá lại mô hình. Chú ng ta có thể tính toá n tỉ lệ sai só t kiểm định ứ ng vớ i hai bộ số liệu:

MSE11 <- mse(data11$wage, predict(ols1, data11))


MSE22 <- mse(data22$wage, predict(ols2, data22))
print(paste(MSE11, MSE22))

## [1] "199326.100766556 160158.933656659"

Như vậ y, mặ c dù tỉ lệ sai só t huấ n luyện ứ ng vớ i data1 là thấ p hơn tỉ lệ sai só t huấ n luyện ứ ng vớ i
data2 nhưng tỉ lệ sai só t kiểm định ứ ng vớ i data1 lạ i cao hơn tỉ lệ sai só t tỉ lệ sai só t kiểm định ứ ng
vớ i data2.

Cá c khá i niệm về tỉ lệ sai só t kiểm định và tỉ lệ sai só t huấ n luyện là nền tả ng củ a mộ t khá i niệm rấ t
quan trọ ng trong nghiên cứ u thố ng kê nó i chung và kinh tế lượ ng nó i riêng, nhấ t là bà i toá n dự bá o:
hiện tượng quá khớp (overfitting). Hiện tượ ng quá khớ p đượ c hiểu là mộ t mô hình rấ t phù hợ p
vớ i bộ dữ liệu huấ n luyện (MSE thấ p và R2 cao chẳ ng hạ n) nhưng lạ i khô ng phù hợ p vớ i bộ dữ liệu
kiểm định (MSE cao và R2 thấ p). Khi mộ t mô hình xẩ y ra hiện tượ ng quá khớ p thì mặ c dù nó có thể
dự bá o rấ t tố t trên mộ t tậ p quan sá t nhưng nó lạ i thấ t bạ i trong việc dự bá o khi chú ng ta sử dụ ng bộ
dữ liệu khá c. Nó i cá ch khá c, một mô hình quá khớp không có giá trị phổ quát vì nó chỉ phù hợp
(fitting) với một bộ dữ liệu cụ thể nào đó nhưng lại không phù hợp với những bộ dữ liệu khác
và do vậy, mô hình không có nhiều ý nghĩa trong bài toán dự báo cũng như mô tả.

Ngượ c lạ i vớ i hiện tượ ng quá khớ p là underfitting, theo đó , khả nă ng dự bá o (hay khớ p) vớ i số liệu
củ a mô hình ở bộ số liệu huấ n luyện là thấ p hơn so vớ i khả nă ng dự bá o (hay khớ p) củ a mô hình ở
bộ số liệu kiểm định.

Mộ t mô hình tố t là mộ t mô hình có cả hai thứ : tỉ lệ sai só t huấ n luyện và tỉ lệ sai só t kiểm định đều
thấ p. Thô ng thườ ng khi đá nh giá mô hình (hoặ c so sá nh cá c mô hình) thì chú ng ta cầ n phả i lưu tâ m
đồng thời cả hai yếu tố nà y.
183

Nhữ ng khá i niệm cá c bạ n vừ a nghiên cứ u ở trên là nền tả ng cho mộ t nhá nh củ a khoa họ c thố ng kê
gọ i là cá c phương pháp tái chọn mẫu (Resampling Methods) đượ c trình bà y ở mụ c sau.

Cuố i cù ng để giú p cá c bạ n hiểu rõ hơn về hai loạ i tỉ lệ sai só t, dướ i đâ y là R code dướ i đâ y thự c hiện
hồ i quy OLS cho mô hình 2 vớ i bộ dữ liệu huấ n luyện là 16000 quan sá t và bộ dữ liệu kiểm định là
28155 – 16000 quan sá t cò n lạ i. Sau khi thự c hiện OLS xong tính MSEtraining (tỉ lệ sai só t huấ n
luyện) và MSEtesting (tỉ lệ sai só t kiểm định). Quá trình nà y lặ p đi lặ p lạ i 1000 lầ n và do đó có 1000
cặ p giá trị củ a MSEtesting và MSEtraining đượ c lưu lạ i ở data frame tên trangyeu. Cuố i cù ng chú ng
ta so sá nh mean (trung bình) củ a cá c giá trị MSE nà y:

# Tạo ra hai vector trống:


MSEtraining <- c()
MSEtesting <- c()
p <- 16000 / 28155
set.seed(26111996)
for(i in 1:1000){
set.seed(i)
id <- sample(nrow(CPS1988), round(p*nrow(CPS1988)))
# Dữ liệu huấn luyện gồm 16000 quan sát:
training <- CPS1988[id, ]
# Dữ liệu kiểm định gồm 28155 quan sát còn lại:
testing <- CPS1988[-id, ]
ols <- lm(wage ~ education, data = training)
# Tính MSEtraining và MSEtesting:
MSEtraining <- c(MSEtraining, mse(training$wage, predict(ols,training)))
MSEtesting <- c(MSEtesting, mse(testing$wage, predict(ols,testing)))
# Tạo data frame gồm 1000 quan sát cho MSEtraining và MSEtesting:
trangyeu <- data.frame(MSEtraining, MSEtesting)
}

# Hình ảnh hóa:


trangyeu %>% gather(Sampling, Value) %>%
ggplot(aes(Sampling, Value, color = Sampling, fill = Sampling)) +
geom_boxplot(alpha = 0.3, show.legend = FALSE) + theme_bw()
184

# Các thống kê bằng số:


summary(trangyeu)

## MSEtraining MSEtesting
## Min. 149297 Min. 145566
## 1st Qu.:177345 1st Qu.:173207
## Median :188070 Median :185580
## Mean 187115 Mean 186834
## 3rd Qu.:197456 3rd Qu.:199717
## Max. 218484 Max. 236670

Kết quả chỉ ra rằ ng MSEtesting (tỉ lệ sai só t kiểm định) có trung bình là 186834 thấ p hơn
MSEtraining (tỉ lệ sai só t huấ n luyện) có trung bình 187115 khi cho mô hình chạ y vớ i 1000 bộ dữ
liệu khá c nhau nên có có thể thấ y mô hình (2) có dấ u hiệu củ a hiện tượ ng underfitting (mộ t hiện
tượ ng ngượ c lạ i overfitting).

4.4 Đánh giá chất lượng của mô hình bằng các phương pháp tái chọn mẫu
Cá c phương phá p tá i chọ n mẫ u (Resampling Methods) là mộ t cá ch tiếp cậ n đầ y sứ c mạ nh và tin cậ y
để đá nh giá chấ t lượ ng củ a mộ t mô hình thố ng kê nó i chung cũ ng như cá c mô hình kinh tế lượ ng
(James et al., 2013). Trướ c đâ y, trong mộ t thờ i gian khá dà i, do sứ c mạ nh tính toá n củ a má y tính cò n
hạ n chế nên cá c phương phá p tá i chọ n mẫ u dù rấ t hoà n thiện về lý thuyết nhưng trong thự c tế ít
đượ c sử dụ ng. Tuy nhiên, nhữ ng hạ n chế nà y khô ng cò n là trở ngạ i lớ n khi mà sứ c mạ nh tính toá n
củ a má y tính ngà y cà ng mạ nh và nhanh như hiện nay.

Đú ng như tên gọ i củ a nó , phương phá p nà y sử dụ ng việc tá i chọ n mẫ u lặ p đi lặ p lạ i, sử dụ ng cá c


thô ng tin thu đượ c từ mỗ i lầ n chọ n mẫ u đó để đá nh giá chấ t lượ ng củ a mộ t mô hình. Chẳ ng hạ n, việc
tá i chọ n mẫ u 1000 lầ n để nghiên cứ u chấ t lượ ng củ a mô hình thô ng qua tỉ lệ sai só t kiểm định và
huấ n luyện như cá c bạ n đã thự c hiện ở mụ c 4.5.4 chính là mộ t phương phá p tá i chọ n mẫ u. Mụ c nà y
chú ng ta sẽ nghiên cứ u chi tiết hơn về hai nhó m phương phá p tá i chọ n mẫ u là Bootstrap và Cross-
validation.
185

4.6.1 Phương pháp Bootstrap


Bootstrap là mộ t phương phá p tá i chọ n mẫ u do giá o sư Bradley Efron thuộ c khoa Thố ng Kê củ a đạ i
họ c Stanford phá t triển từ nă m 1979 và đã là m nên mộ t cuộ c cá ch mạ ng vì nó giả i quyết đượ c nhiều
vấ n đề mà cá c phương phá p cũ củ a thố ng kê khô ng giả i quyết đượ c. Trướ c đâ y, phương phá p nà y
chỉ đượ c sử dụ ng giớ i hạ n trong cá c Lab củ a cá c trườ ng đạ i họ c lớ n nhưng hiện tạ i chú ng ta có thể
dễ dà ng thự c hiện phương phá p tá i chọ n mẫ u nà y mộ t cá ch dễ dà ng.

Mụ c nà y cũ ng giớ i thiệu phương phá p bootstrap thay thế cho sử dụ ng hồ i quy tuyến tính OLS vố n
phụ thuộ c nhiều và o cá c giả định chặ t chẽ và do vậ y cá c kết quả ướ c lượ ng thu đượ c từ OLS là rấ t
nhậ y vớ i nhữ ng giả định nà y. Vì lý do nà y, cá c ướ c lượ ng thu đượ c từ phương phá p bootstrap sẽ là
tin cậ y hơn.

Để minh họ a cho phương phá p tiếp cậ n nà y, chú ng ta nghiên cứ u tình huố ng sau. Giả sử chú ng ta có
mộ t số tiền cố định và đầ u tư số tiền nà y và o hai cổ phiếu A và B vớ i lợ i tứ c lầ n lượ t là X và Y. Chú ý
rằ ng X và Y là nhữ ng biến nghẫ u nhiên. Nếu gọ i α là tỉ trọ ng đầ u tư và o cổ phiếu A thì (1- α) sẽ là tỉ
trọ ng đầ u tư và o cổ phiếu B. Như vậ y rủ i ro củ a danh mụ c đầ u tư nà y đượ c đo bằ ng:

Var(𝛼𝑋 + (1 − 𝛼)𝑌)
Chú ng ta đã biết rằ ng nhằ m tố i thiểu hó a rủ i ro, tỉ trọ ng đầ u tư và o cổ phiếu A phả i thỏ a mã n:
𝜎2 − 𝜎𝑋𝑌
𝛼 = 𝜎2 +𝑌𝜎2 − 2𝜎
𝑋𝑌
𝑋 𝑌

Trong đó :

σ2X = Var(X), đó σ2Y = Var(Y), và σ2XY = Cov(X,Y).

Vấ n đề ở đâ u là trong thự c tế chú ng ta khô ng biết ba đạ i lượ ng trên, do vậ y chú ng ta buộ c phả i ướ c
lượ ng cá c giá trị nà y để tính giá trị ướ c lượ ng củ a α la` α̂ . Điều nà y đượ c tiến hà nh như sau. Chú ng
ta lấy 100 cặ p quan sát củ a X và Y để tì nh α̂ 1. Lặ p lại quá trình này 1000 lần và như vậy chú ng ta có
1000 giá trị củ a α̂ . Lú c nà y trung bình củ a α̂ đượ c tính như sau:
1,000
1
𝛼̅ = ∑ 𝛼̂𝑟
1,000 𝑟=1

Cò n độ lệch chuẩ n củ a α̂ đượ c tính theo cô ng thứ c sau:

1 1,000
√ 1,000 − 1
∑ (𝛼̂𝑟 − 𝛼̅ )2
𝑟=1

Nhữ ng bướ c mô tả như trên trong thự c tế chú ng ta khó có thể á p dụ ng đượ c trong thự c tế vì khó có
thể lấ y ra 1000 mẫ u khác nhau gồ m 100 cặ p giá trị X, Y từ mẫ u nguyên thủ y ban đầ u.
186

Tuy nhiên chú ng ta có thể sử dụ ng phương phá p Bootstrap để thự c hiện điều nà y bằ ng cá ch tá i lấy
mẫu có hoàn lại. Nghĩa là cá c quan sá t có thể đượ c lấ y mộ t cá ch trù ng lặ p. Thủ tụ c nà y đượ c mô tả
chi tiết ngay sau đâ y.

Giả sử mẫ u nguyên thủ y (Original Data) ban đầ u Z củ a chú ng ta có n = 3 quan sá t . Chú ng ta lấ y ra


mẫ u Z*1 cũ ng vớ i ba quan sá t – tứ c là đú ng bằ ng số lượ ng quan sá t ở mẫ u nguyên thủ y. Do mộ t quan
sá t bấ t kì có thể đượ c chọ n nhiều hơn 1 lầ n nên chú ng ta thấ y mẫ u nà y có quan sá t thứ ba (ở mẫ u
nguyên thủ y) xuấ t hiện hai lầ n. Quá trình nà y đượ c lặ p lạ i nhiều lầ n và cứ vớ i mộ t mẫ u thứ cấ p,
chẳ ng hạ n, mẫ u Z*1 chú ng ta có mộ t giá trị ướ c lượ ng α̂ *1. Lặ p lạ i quá trình nà y B lầ n và do đó chú ng
ta có B giá trị củ a α̂ * .

Khi đó độ lệch chuẩ n củ a α từ phương phá p Bootstrap đượ c tính theo cô ng thứ c tổ ng quá t sau:

𝐵
1
SE𝐵 (𝛼̂ ) = √ ∑(𝛼̂𝑟 − 𝛼̅ )2
𝐵−1
𝑟=1

Chú ng ta sẽ sử dụ ng bộ số liệu Portfolio tích hợ p cù ng gó i ISLR (cà i đặ t gó i nà y bằ ng lệnh


install.packages(“ISLR”)) để thự c hiện phương phá p nà y vớ i R. Bộ số liệu nà y là thô ng tin về lợ i
tứ c X và Y củ a hai cổ phiếu trong 100 ngà y. Trướ c hết chú ng ta cầ n viết hà m tính α tố i ưu theo cô ng
thứ c:
𝜎𝑌2 − 𝜎𝑋𝑌
𝛼 = 𝜎2 + 𝜎2 − 2𝜎
𝑋𝑌
𝑋 𝑌

# Tạo hàm có tên alpha để tính tỉ trọng đầu tư vào tài sản A.
alpha <- function(data, index){
X = data$X[index]
187

Y = data$Y[index]
return((var(Y) - cov(X,Y)) / (var(X) + var(Y) - 2*cov(X,Y)))
}

Chú ng ta gọ i bộ số liệu Portfolio củ a gó i ISLR. Đâ y là bộ dữ liệu về lợ i tứ c củ a hai cổ phiếu (chưa rõ


đơn vị đo) trong 100 ngà y liên tiếp:
library(ISLR)
data(Portfolio)
head(Portfolio)

## X Y
## 1 -0.8952509 -0.2349235
## 2 -1.5624543 -0.8851760
## 3 -0.4170899 0.2718880
## 4 1.0443557 -0.7341975
## 5 -0.3155684 0.8419834
## 6 -1.7371238 -2.0371910

tail(Portfolio)

## X Y
## 95 2.2608577 0.6732248
## 96 0.4790909 1.4547745
## 97 -0.5350200 -0.3991748
## 98 -0.7731293 -0.9571748
## 99 0.4036343 1.3960382
## 100 -0.5884964 -0.4972851

Chú ng ta có thể tính ướ c lượ ng củ a α (tứ c α̂ ) ứ ng vớ i mẫ u cụ thể nà y:

alpha(Portfolio)

## [1] 0.5758321

Chú ý rằ ng con số 0.5758 ở đâ y là ướ c lượ ng củ a α ứ ng vớ i mẫ u gố c. Dướ i đâ y chú ng ta tạ o ra mộ t


mẫ u bằ ng phương phá p Bootstrap và tính ướ c lượ ng củ a α ứ ng vớ i mẫ u nà y:

m <- Portfolio[sample(nrow(Portfolio), 100, replace = T),] # Tạo một mẫu theo


phương pháp Bootstrap.
alpha(m) # Tính alpha.

## [1] 0.5220407

Tấ t nhiên kết quả củ a bạ n sẽ khô ng phả i lf 0.5220407 như trên vì tính chấ t ngẫ u nhiên củ a mẫ u
đượ c chọ n. Và mỗ i lầ n thự c hiện thì sẽ ra mộ t kết quả khá c. Chú ng ta có thể lặ p lạ i quá trình nà y
1000 lầ n, và do vậ y có 1000 giá trị ướ c lượ ng củ a α. Chú ng ta ghi lạ i 1000 giá trị nà y và tính mean
cũ ng như độ
188

lệch chuẩ n. Tuy nhiên R có gó i boot có thể tự độ ng là m việc nà y mộ t cá ch nhanh chó ng. Để tá i tạ o kết
quả , chú ng ta sử dụ ng hà m set.seet() như sau:
library(boot)
set.seed(2611) # Để đảm bảo kết quả là trùng lặp.
trang <- boot(Portfolio, alpha, R = 1000)
trang

##
## ORDINARY NONPARAMETRIC BOOTSTRAP
##
##
## Call:
## boot(data = Portfolio, statistic = alpha, R = 1000)
##
##
## Bootstrap Statistics :
## original bias std. error
## t1* 0.5758321 0.002269671 0.09310941

0.1294835 2.513543e-03 51.514341 2.449579e-44

Chú ng ta thấ y giá trị ứ ng vớ i cộ t original chính là ướ c lượ ng củ a alpha ứ ng vớ i mẫ u gố c. Mộ t kết quả
mà ta đã có từ trướ c. Kết quả chỉ ra rằ ng sai số chuẩ n ướ c lượ ng cho ướ c lượ ng củ a alpha là
0.09310941. Chú ng ta có thể tính trung bình, tính lạ i giá trị củ a sai số chuẩ n nà y:

head(trang$t) # Xem 6 quan sát đầu trong số 1000 ước lượng của alpha.

## [,1]
## [1,] 0.5081016
## [2,] 0.3961208
## [3,] 0.5432477
## [4,] 0.7088269
## [5,] 0.4465900
## [6,] 0.6602969

tail(trang$t) # Xem 6 quan sát cuối.

## [,1]
## [995,] 0.5278409
## [996,] 0.5216640
## [997,] 0.7314720
## [998,] 0.5328849
## [999,] 0.6543257
## [1000,] 0.5533597

sd(trang$t) # Tính sai số chuẩn


189

## [1] 0.09310941

mean(trang$t) # Trung bình các ước lượng ứng với 1000 mẫu Bootstrap.

## [1] 0.5781017

Chú ng ta có thể hình ả nh hó a cho 1000 giá trị ướ c lượ ng củ a alpha:

par(mfrow = c(1, 2))


plot(trang$t, main=mean(trang$t), type="b",xlab="So lan chon mau",col="blue")
hist(trang$t, col="blue", main = "Histogram cua alpha tu 1000 mau bootstrap")

par(mfrow = c(1, 1)) # Đặt chế độ hiển thị mặc định của R

Hoà n toà n tương tự chú ng ta có thể sử dụ ng phương phá p Bootstrap để đá nh giá chấ t lượ ng cũ ng
như cá c khía cạ nh khá c cho kết quả hồ i quy thu đượ c ở mụ c 4.2. Trướ c hết chú ng ta viết hà m có tên
boot.hesohoiquy để hiển thị cá c hệ số hồ i quy:

boot.hesohoiquy <- function(data, index) # Viết hàm


return(coef(lm(HEALTH ~ INCOME, data = dung, subset = index)))
boot.hesohoiquy(dung, 1:51)

## (Intercept) INCOME
## 1263.6871121 0.1294835

Kết quả trên là trù ng khớ p vớ i kết quả thu đượ c ở mụ c 4.2 khi chú ng ta thự c hiện hồ i quy. Dướ i đâ y
là cá c câ u lệnh thự c hiện bootstrap cho hai mẫ u. Chú ý rằ ng nhữ ng ướ c lượ ng thu đượ c tương ứ ng
là khá c nhau:

set.seed(123)
boot.hesohoiquy(dung, sample(51, 51, replace = T))

## (Intercept) INCOME
##65.794685 0.139344

boot.hesohoiquy(dung, sample(51, 51, replace = T))


190

## (Intercept) INCOME
## 1720.8031663 0.1258176

Chú ng ta có thể lặ p lạ i quá trình nà y 1000 lầ n để nghiên cứ u sự ổ n định củ a mô hình hồ i quy thu
đượ c ở mụ c 4.2:

trangyeu <- boot(dung, boot.hesohoiquy, 1000)


trangyeu

##
## ORDINARY NONPARAMETRIC BOOTSTRAP
##
##
## Call:
## boot(data = dung, statistic = boot.hesohoiquy, R = 1000)
##
##
## Bootstrap Statistics :
## original bias std. error
## t1* 1263.6871121 -2.136956e+02 7.374884e+02
## t2* 0.1294835 1.849314e-03 6.860844e-03

Chú ng ta có thể hiểu rõ hơn nhữ ng kết quả trên như sau:

love <- trangyeu$t


head(love) # Xem 6 quan sát đầu trong số 1000 cặp giá trị ước lượng

## [,1] [,2]
## [1,] 1122.742 0.1311281
## [2,] 1433.357 0.1234588
## [3,] 1407.709 0.1262977
## [4,] 1565.651 0.1269054
## [5,] 1789.845 0.1278887
## [6,] 924.016 0.1332488

tail(love)

## [,1] [,2]
## [995,] 1305.4825 0.1295534
## [996,] -250.2552 0.1447241
## [997,] 1906.9541 0.1247074
## [998,] 1892.8701 0.1269881
## [999,] 1153.3988 0.1288668
## [1000,] 734.9050 0.1325789

summary(love)
191

## V1 V2
## Min. :-850.5 Min. :0.1179
## 1st Qu.: 412.1 1st Qu.:0.1259
## Median :1199.1 Median :0.1300
## Mean :1050.0 Mean :0.1313
## 3rd Qu.:1612.8 3rd Qu.:0.1370
## Max. :2852.6 Max. :0.1490

So sá nh, chẳ ng hạ n sai số chuẩ n củ a cá c ướ c lượ ng từ phương phá p Bootstrap vớ i hồ i quy ở mụ c 4.2:

summary(lm(HEALTH ∼ INCOME, data = dung))$coef

## EstimateStd. Errort value Pr(>|t|)


## (Intercept) 1263.6871121 5.554167e+02 2.275205 2.730473e-02
## INCOME0.1294835 2.513543e-03 51.514341 2.449579e-44

Hệ số chặ n và hệ số gó c thu đượ c từ phương phá p bootstrap lầ n lượ t là 1050 và 0.1313. Nhữ ng kết
quả nà y là khá sá t vớ i nhữ ng kết quả khi sử dụ ng OLS. Tuy nhiên độ lệch chuẩ n ứ ng vớ i cá c ướ c
lượ ng có sai khá c đá ng kể hơn. Phả i chă ng cá c ướ c lượ ng thu đượ c từ phương phá p bootstrap là có
vấ n đề? Sự thự c thì ngượ c lạ i. Thậ t vậ y, cá c ướ c lượ ng cho sai số chuẩ n ứ ng vớ i cá c hệ số hồ i quy
OLS phụ thuộ c và o phương sai σ2 nhưng giá trị nà y là khô ng bao giờ biết và do vậ y buộ c phả i ướ c
lượ ng giá trị nà y bằ ng sử dụ ng RSS. Ngoà i ra, OLS giả định rằ ng cá c giá trị củ a INCOME là cố định và
do đó nhữ ng sai lệch (variation) đượ c “nhó m” và o sai số ngẫ u nhiên. Cá c ướ c lượ ng thu đượ c từ
bootstrap không dựa vào các giả định này vào do vậy nó đưa ra những ước lượng hợp lí hơn
(James et al., 2013; Chernick, 2008) so vớ i cá c ướ c lượ ng thu đượ c từ OLS như chú ng ta đã là m ở
mụ c 4.2.

4.6.2 Phương pháp kiểm tra chéo


Tương tự Bootstrap, mộ t cá ch tiếp cậ n khá c thườ ng đượ c sử dụ ng để nghiên cứ u tính ổ n định cũ ng
như chấ t lượ ng củ a mô hình là sử dụ ng mộ t trong hai phiên bả n củ a mộ t thủ tụ c thố ng kê gọ i là
kiểm tra chéo (Cross-validation).

4.6.2.1 Kiểm tra chéo LOOCV


Kiểm tra chéo để lại một phần tử LOOCV (Leve-one-out cross-validation) sẽ chia bộ dữ liệu cá c
quan sá t thà nh hai phầ n. Phầ n thứ nhấ t chỉ có mộ t phầ n tử (x1, y1) – tứ c chỉ mộ t quan sá t và phầ n
thứ hai là toà n bộ cá c quan sá t sau khi đã trừ ra quan sá t (x1, y1) nà y. Nghĩa là bộ dữ liệu ban đầ u
nếu có n quan sá t thì bộ dữ liệu nà y cò n n-1 quan sá t. Mộ t mô hình thố ng kê hay thủ tụ c thố ng kê
nà o đó , chẳ ng hạ n, hồ i quy OLS sẽ đượ c chạ y trên bộ dữ liệu gồ m n-1 quan sá t nà y. Sau đó , mộ t tiêu
chí đượ c lự a chọ n để đá nh giá mô hình, chẳ ng hạ n, là MSE1 sẽ đượ c tính toá n cho phầ n tử đượ c trừ
ra (x1, y1) theo cô ng thứ c:

MSE1 = (y - ŷ 1)2

Rõ rà ng, bộ dữ liệu gồ m n-1 phầ n tử đượ c sử dụ ng để dự ng mô hình OLS chính là dữ liệu huấ n luyện
và phầ n tử duy nhấ t đượ c trừ ra (x 1, y1) đó ng vai trò là bộ dữ liệu kiểm định. Như vậ y, MSE 1 sẽ là sai
số kiểm định và sẽ đượ c sử dụ ng để đá nh giá mô hình ứ ng vớ i bộ dữ liệu huấ n luyện gồ m n-1 phầ n
tử nà y.
192

Chú ng ta sẽ lặ p lạ i quá trình bằ ng trên bằ ng cá ch giữ lạ i phầ n tử (x2, y2), chạ y mô hình OLS cho n-1
quan sá t cò n lạ i và tính MSE1 theo cô ng thứ c MSE2 = (y - ŷ 2)2. Do bộ dữ liệu ban đầ u có n phầ n tử nên
quá trình nà y đượ c lặ p lạ i n lầ n và trung bình củ a cá c MSE, kí hiệu là CV (n) đượ c tính theo cô ng thứ c
dướ i đâ y sẽ là tiêu chí đá nh giá sai só t kiểm định toà n cụ c củ a mô hình:
𝑛
1
CV(𝑛) = ∑ MSE𝑖
𝑛𝑖=1
Chú ng ta sẽ sử dụ ng bộ số liệu ở mụ c 4.2 để thự c hà nh LOOCV. Dướ i đâ y là R code thự c hiện mộ t
vò ng lặ p 51 lầ n cho bộ dữ liệu vì rằ ng chú ng ta có 51 quan sá t. Chú ý rằ ng, nếu bộ dữ liệu có 1 triệu
quan sá t, thì chú ng ta hoà n toà n có thể chạ y mộ t vò ng lặ p 1 triệu lầ n. Tuy nhiên, thự c tế khô ng nhấ t
thiết phả i là m thế vì để đá nh giá chấ t lượ ng và độ ổ n định củ a mô hình ta chỉ cầ n mộ t vò ng lặ p đủ
lớ n, chẳ ng hạ n, 10000 lầ n là đủ .
cacMSE <- c()
for (i in 1:51){
testing <- dung[i,]
training <- dung[-i,]
ols <- lm(HEALTH ~ INCOME, data = training)
mse <- mse(testing$HEALTH, predict(ols, testing))
cacMSE <- c(cacMSE, mse)
}
mean(cacMSE)

## [1] 14388750

# Tạo ra một data frame mới nhưng vẫn tên cũ là cacMSE


# rồi hình ảnh hóa. Cột biến PT hàm ý là phần tử được
# lấy riêng ra (LOOCV):
cacMSE <- data.frame(cacMSE, PT = 1:51)
cacMSE %>%
ggplot(aes(PT, cacMSE)) +
geom_line() + geom_point() + theme_minimal()

Chú ng ta có thể thấ y trong số 51 giá trị MSE, chỉ có 4 giá trị MSE là khá c biệt so vớ i nhó m cò n lạ i.
Nghĩa là kết quả dự bá o củ a mô hình cũ ng khá ổ n định. Tính ổ n định củ a mô hình cũ ng là mộ t tiêu
chí quan trọ ng cầ n đá nh giá nhấ t là vớ i mụ c đích dự bá o. Trong tình huố ng củ a chú ng ta, hầ u hết
cá c
193

MSE đều có giá trị khá sá t nhau, ngoạ i trừ có 4 tình huố ng cá c MSE mà chú ng ta thấ y trên graph, đặ c
biệt là đố i vớ i phầ n tử thứ 5. Vớ i mụ c đích dự bá o, chú ng ta sẽ tự tin hơn khi sử dụ ng mộ t mô hình
mà tạ o ra cá c kết quả dự bá o là ổ n định, khô ng sai khá c quá nhiều so vớ i nhau trên cá c mẫ u dữ liệu
khá c nhau. Do vậ y, sử dụ ng LOOCV cũ ng như cá c thủ tụ c tá i chọ n mẫ u khá c để đá nh giá mô hình là
cầ n thiết.

4.6.2.2 Kiểm tra chéo k lớp


Kiểm định chéo k lớp (k-Fold Cross-Validation) liên quan đến việc chia dữ liệu ban đầ u thà nh k lớ p
bằ ng, hoặ c xấ p xỉ bằ ng nhau. Để minh họ a, chú ng ta xem xét mẫ u ban đầ u chỉ có 12 quá n sá t vớ i k
=3:

Theo cá ch tiếp cậ n nà y, bộ dữ liệu ban đầ u sẽ đượ c chia thà nh ba phầ n (gọ i là 3 folds). Phầ n thứ
nhấ t đượ c giữ lạ i và đó ng vai trò là dữ liệu kiểm định (Testing Data 1), hai phầ n cò n lạ i là dữ liệu
huấ n luyện (Training Data 1). Mô hình sẽ đượ c xâ y dự ng trên bộ dữ liệu huấ n luyện nà y. Sau đó , bộ
dữ liệu kiểm định tương ứ ng vớ i nó (là Testing Data 1) sẽ đượ c sử dụ ng để đá nh giá lạ i mô hình că n
cứ và o mộ t tiêu chí nà o đó , chẳ ng hạ n, là MSE. Vớ i kiểm tra chéo 3 lớ p thì quá trình nà y lặ p lạ i 3 lầ n
và chú ng ta sẽ có 3 giá trị MSE tương ứ ng. Sai só t kiểm định toà n cụ c củ a mô hình trong tình huố ng
nà y đượ c tính theo cô ng thứ c:
3
1
CV(3) = ∑ MSE𝑖
3𝑖=1
Dễ dà ng thấ y rằ ng LOOCV là trườ ng hợ p đặ c biệt củ a kiểm định chéo k lớ p khi mà k = n. Tuy nhiên
trong thự c tế chú ng ta thườ ng sử dụ ng kiểm định chéo k lớ p vớ i mộ t trong hai giá trị tố i ưu là k= 5
hoặ c k = 10. Có ít nhấ t hai lý do để lự a chọ n k như vậ y. Thứ nhấ t là cá i giá phả i trả khi thự c hiện tính
toá n nếu chú ng ta chọ n k = n nếu số quan sá t là rấ t lớ n vì chú ng ta sẽ phả i chạ y mô hình n lầ n, mỗ i
lầ n cho n-1 quan sá t cò n lạ i. Thứ hai, và cũ ng là quan trọ ng nhấ t, theo Molinaro (2005) và Kim
(2009), đó là sự đá nh đổ i Bias – Variance (Bias-Variance Trade-off). Lí do thứ hai sẽ đượ c giả i thích
chi tiết ở mụ c sau.

Để minh họ a, cá c bạ n có thể sử dụ ng bộ số liệu ở mụ c 4.1 để thự c hiện kiểm tra chéo vớ i k = 3:

# Tính MSE1 cho lớp thứ nhất


testing1 <- dung[1:17, ]
training1 <- dung[-c(1:17), ]
ols1 <- lm(HEALTH ~ INCOME, data = training1)
MSE1 <- mse(testing1$HEALTH, predict(ols1, testing1))
# Tính MSE2 cho lớp thứ hai
testing2 <- dung[18:34, ]
194

training2 <- dung[-c(18:34), ]


ols2 <- lm(HEALTH ~ INCOME, data = training2)
MSE2 <- mse(testing2$HEALTH, predict(ols2, testing2))
# Tính MSE3 cho lớp thứ ba
testing3 <- dung[35:51, ]
training3 <- dung[-c(35:51), ]
ols3 <- lm(HEALTH ~ INCOME, data = training3)
MSE3 <- mse(testing3$HEALTH, predict(ols3, testing3))
# Tính trung bình các MSE
(1 / 3)*(MSE1 + MSE2 + MSE3)

## [1] 14948088

Chú ng ta có thể viết mộ t vò ng lặ p for loop cho ngắ n gọ n chứ khô ng nên là m dà i dò ng như trên:

# Tạo một cột biến có tên là lop:


dung$lop <- c(rep("f1", 17), rep("f2", 17), rep("f3", 17))
fold <- unique(dung$lop)

# Vòng lặp for loop tính các MSE:


MSE <- c()
for (i in fold) {
testing <- dung %>% filter(lop == i)
training <- dung %>% filter(lop != i)
ols <- training %>% lm(HEALTH ~ INCOME, data = .)
MSE <- c(MSE, mse(testing$HEALTH, predict(ols, testing)))
}
# Kết quả là không có gì thay đổi:
mean(MSE)

## [1] 14948088

Tấ t nhiên trong thự c tế, để kiểm định chấ t lượ ng cũ ng như tính ổ n định củ a mô hình, quá trình nà y
có thể đượ c lặ p lạ i hà ng tră m, thậ m chí hà ng ngà n lầ n. Tấ t nhiên chú ng ta khô ng thể thự c hiện thủ
cô ng như trên. R có mộ t gó i hỗ trợ cho việc thự c hiện kiểm tra chéo k lớ p mộ t cá ch tự độ ng rấ t
thuậ n tiện là caret. Chú ng ta sẽ thự c hà nh vớ i gó i caret ở mụ c 4.6.3.

4.6.2.3 Sự đánh đổi Bias – Variance


Giả sử chú ng ta sử dụ ng ướ c lượ ng OLS và cá c giả thuyết củ a mô hình hồ i quy tuyến tính cổ điển
đượ c thỏ a mã n, thì chú ng ta dễ dà ng thấ y rằ ng cá c ướ c lượ ng thu đượ c từ LOOCV cũ ng là khô ng
chệch (unbiased) và cá c ướ c giá trị dự bá o cũ ng sẽ gầ n hơn vớ i cá c giá trị thự c do kích cỡ củ a dữ
liệu huấ n luyện là n – 1 gầ n như xấ p xỉ kích cỡ mẫ u ban đầ u, nhấ t là vớ i tình huố ng n lớ n thì sai khá c
nà y khô ng đá ng kể nếu xét theo tỉ số (n-1)/n (giớ i hạ n củ a tỉ số nà y là 1 khi n tiến đến vô cù ng). Cò n
khi thự c hiện kiểm định chéo k lớ p (chẳ ng hạ n k =5, hoặ c k = 10) thì số quan sá t trong bộ dữ liệu
huấ n luyện là (k-1)n/k quan sá t ít hơn so vớ i cá ch tiếp cậ n LOOCV và do đó cá c ướ c lượ ng thu đượ c
sẽ bị chệch ở mộ t mứ c độ nà o đó . Rõ rà ng đứ ng trên quan điểm ưu tiên tính chấ t khô ng chệch, thì
LOOCV sẽ đượ c ưa thích hơn.

Tuy nhiên, tính khô ng chệch chưa phả n á nh toà n bộ câ u chuyện. Vì chú ng ta cò n quan tâ m đến sự ổ n
định (hay Variance) củ a cá c ướ c lượ ng. Dễ dà ng thấ y rằ ng LOOCV có mứ c độ ổ n định kém hơn kiểm
195

định chéo. Nguyên nhâ n là khi chú ng ta thự c hiện LOOCV, cá c mô hình đượ c dự ng trên bộ dữ liệu là
gần như không thay đổi so vớ i nhau (chỉ khá c duy nhấ t mộ t quan sá t) do đó cá c ướ c lượ ng (kết
quả ) thu đượ c là tương quan dương cao vớ i nhau. Nhưng chú ng ta thự c hiện kiểm tra chéo k lớ p
thì nhữ ng ướ c lượ ng (kết quả ) thu đượ c từ k mô hình sẽ ít tương quan vớ i nhau hơn do bộ dữ liệu
huấ n luyện là khá c biệt hơn. Điều nà y dẫ n đến, chẳ ng hạ n, cá c MSE thu đượ c từ LOOCV có xu hướ ng
biến độ ng hơn so vớ i sử dụ ng kiểm tra chéo k lớ p. Nếu chú ng ta chọ n MSE là tiêu chí đá nh giá chấ t
lương củ a mô hình thì giá trị kì vọ ng củ a MSE có thể đượ c phâ n thà nh ba bộ phậ n sau:

E[MSE]= σ2 + (Bias của mô hình)2 + (Variance của mô hình)

Ở đâ y bộ phậ n thứ nhấ t σ2 đượ c gọ i là nhiễu không thể loại trừ (irreducible noise) vớ i ý nghĩa
rằ ng chú ng ta khô ng thể loạ i bỏ nhiễu nà y dù sử dụ ng mô hình nà o đi chă ng nữ a. Bộ phậ n thứ hai
phả n á nh mứ c độ chính xá c về mố i quan hệ giữ a biến độ c lậ p và biến phụ thuộ c. Bộ phậ n cuố i cù ng
phả n á nh mứ c độ sai lệch củ a mô hình ứ ng vớ i cá c bộ dữ liệu khá c nhau. Rõ rà ng, để nâ ng cao chấ t
lượ ng củ a mô hình chú ng ta sẽ tìm kiếm mộ t mô hình, mộ t phương phá p mà tố i thiểu hóa cả hai bộ
phận của MSE của phương trình trên.

Vớ i cá c phương phá p tá i chọ n mẫ u, cá c nghiên cứ u lý thuyết và thự c nghiệm đã chỉ ra rằ ng k tố i ưu


để câ n bằ ng giữ a tính khô ng chệch và ổ n định là 5 (vớ i mẫ u lớ n) hoặ c 10 (nếu mẫ u là nhỏ ). Thự c tế,
cá c phầ n mềm thố ng kê – kinh tế lượ ng nếu có chứ c nă ng kiểm định chéo thì thườ ng mặ c định k là 5
hoặ c 10, chẳ ng hạ n gó i caret củ a R mặ c định giá trị k là 5.

4.6.3 Giới thiệu về các phương pháp tái chọn mẫu bằng gói caret
Như đã thấ y, việc thự c hiện tra chéo LOOCV hay k lớ p theo cá ch thứ c thủ cô ng là nhà m chá n và mấ t
thờ i gian gõ lệnh. R có rấ t nhiều gó i cho phép thự c hiện nhữ ng cô ng việc nà y mộ t cá c tự độ ng. Mộ t
trong nhữ ng gó i rấ t mạ nh là caret củ a Kuhn (2013) . Gó i nà y khô ng chỉ đượ c sử dụ ng cho hầ u hết
cá c phâ n tích kinh tế lượ ng thườ ng thấ y mà cò n sử dụ ng cho Machine Learning (thự c tế gó i nà y
đượ c Kuhn thiết kế vớ i mụ c đích xâ y dự ng cá c mô hình Machine Learning).

Trướ c hết chú ng ta so sá nh việc thự c hiện OLS vớ i gó i caret bằ ng hà m train() và so sá nh vớ i sử


dụ ng hà m lm() mà chú ng ta đã biết. Dữ liệu đượ c sử dụ ng, để minh họ a, chú ng ta chọ n chỉ 10 quan
sá t đầ u củ a bộ dữ liệu CPS1988. Mô hình hồ i quy nghiên cứ u là wage = β1 + β2education Đá nh giá
tá c độ ng củ a số nă m đi họ c (education) lên mứ c lương (wage):

library(AER)
data(CPS1988)
dung <- CPS1988 %>% slice(1:10)
ols1 <- dung %>% lm(wage ~ education, data = .) ols1 %>% summary()

##
## Call:
## lm(formula = wage ~ education, data = .) ##
## Residuals:
##Min1Q Median
3QMax
## -449.05 -246.57 -21.75 54.60 957.97
##
196

## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) ##-107.57
education ##
608.80 -0.177 0.864
56.67 52.53 1.079 0.312

## Residual standard error: 427.1 on 8 degrees of freedom


## Multiple R-squared: 0.127, Adjusted R-squared: 0.01788 ## F-statistic: 1.164 on 1 a

So sá nh vớ i thự c hiện OLS bằ ng hà m train() củ a gó i caret. Ý nghĩa củ a mộ t số dò ng lệnh khá c đượ c


giả i thích sau:

library(caret)
set.seed(1709)
ctrl <- trainControl(method = "repeatedcv", number = 2, repeats = 1) ols2 <- dung %>%
train(wage ~ education, method = "lm", trControl = ctrl, data = .) ols2 %>% summary()

##
## Call:
## lm(formula = .outcome ~ ., data = dat) ##
## Residuals:
##Min1Q Median

3QMax
## -449.05 -246.57 -21.75 54.60
957.97
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) ##-107.57 608.80 -0.177
education ## 0.864
56.67 52.53 1.079 0.312

## Residual standard error: 427.1 on 8 degrees of freedom


## Multiple R-squared: 0.127, Adjusted R-squared: 0.01788 ## F-statistic: 1.164 on 1 and

Có thể thấ y cá c hệ số hồ i quy (cũ ng như tấ t cả cá c kết quả khá c) thu đượ c từ hai cá ch thứ c thự c hiện
OLS là như nhau.

Dướ i đâ y là mộ t số giả i thích về sử dụ ng gó i caret cho thự c hiện OLS. Trướ c khi thự c hiện OLS chú ng
ta đã ngầ m chỉ thị cho caret thự c hiện OLS đồng thời vớ i kiểm tra chéo 2 lớ p vớ i hà m
trainControl() và đượ c giả i thích ngay sau đâ y:

 method = "repeatedcv" : lự a chọ n nà y để thự c hiện kiểm tra chéo k lớ p có lặ p lạ i.


 number = 2 : chỉ rõ số lớ p là 2 (tứ c là k=2).
 repeats = 1 : chỉ rõ số lầ n lặ p là 1.

Để hiểu ý nghĩa củ a cá c lự a chọ n nà y chú ng ta hã y xem đố i tượ ng ols2:

ols2
197

## Linear Regression
##
## 10 samples
## 1 predictor ##
## No pre-processing
## Resampling: Cross-Validated (2 fold, repeated 1 times) ## Summary of sample sizes: 6,
## Resampling results: ##

## RMSE Rsquared
## ##449.4058 0.09213921

## Tuning parameter 'intercept' was held constant at a value of TRUE


Kết quả đượ c giả i thích dướ i đâ y. Vớ i lự a chọ n như trên thì số liệu đượ c sử dụ ng cho chạ y mô hình
(10 quan sá t) sẽ đượ c chia là m 2 phầ n dữ liệu nhỏ xấ p xỉ bằ ng nhau. Trong tình huố ng củ a chú ng ta
hai phầ n nà y có số lượ ng lầ n lượ t là 6 và 4 và có thể thấ y ở dò ng Summary of sample sizes: 6, 4.

Phầ n thứ nhấ t (gọ i là training1) gồ m 6 quan sá t sẽ đượ c sử dụ ng để chạ y mộ t mô hình OLS con thứ
nhấ t (gọ i là tom) và mứ c độ phù hợ p củ a mô hình nà y đượ c đá nh giá thô ng qua RMSE và R2 vớ i
phầ n dữ liệu cò n lạ i là 4 quan sá t (gọ i là testing 1). Tiếp tụ c, phầ n dữ liệu con thứ hai gồ m 4 quan sá t
(gọ i là training2) sẽ đượ c sử dụ ng để chạ y mộ t mô hình OLS con thứ hai (gọ i là ca) và mô hình thu
đượ c sẽ tiếp tụ c đượ c đá nh giá thô ng qua RMSE và R2 vớ i phầ n dữ liệu cò n lạ i là 6 quan sá t (gọ i là
testing2).

Vì k = 2 nên cá c bạ n có thể thấ y rằ ng training1 chính là testing2 và training2 chính là testing1 (chú ý
rằ ng điều nà y chỉ đú ng khi k =2 mà thô i). Như vậ y sẽ có hai giá trị RMSE, hai giá trị R 2 tương ứ ng vớ i
hai mô hình con nà y. Cầ n nhắ c lạ i rằ ng cá c cặ p RMSE và R2 nà y chính là sai só t kiểm định. Con số R2
= 0.092139 và RMSE = 449.4058 mà chú ng ta thấ y là trung bình củ a hai cặ p giá trị R2 và RMSE.

Vì phầ n dữ liệu thứ nhấ t (6 quan sá t) đượ c lấ y ra từ 10 quan sá t ban đầ u nên cơ bả n chú ng ta sẽ có
tổ hợ p chậ p 6 củ a 10 cá ch lấ y khá c nhau và do đó kết quả thu đượ c ở trên nó chỉ là mộ t tình huố ng
cá biệt. Nếu khô ng có lệnh gieo hạ t set.seed(1709) thì kết củ a củ a bạ n sẽ khá c vì tính chấ t ngẫ u
nhiên củ a việc chọ n mẫ u.

Điều nà y cũ ng có nghĩa là con số R2 = 0.092139 sẽ có thể khô ng trù ng vớ i R2 = 0.127 củ a mô hình sử


dụ ng cả 10 dữ liệu khi bạ n sử dụ ng lệnh summary(ols2).

Từ phâ n tích trên chú ng ta cũ ng có thể thấ y ngay rằ ng, chẳ ng hạ n, tổ ng củ a hai bộ dữ liệu testing1
và training1 phả i trù ng hợ p vớ i bộ dữ liệu tên dung có 10 quan sá t ban đầ u. Có thể kiếm tra lạ i nhậ n
định nà y bằ ng mộ t số lệnh sau (khô ng hiển thị kết quả ):
total <- rbind(training1, testing1)
summary(total)

summary(dung)
198

Chú ng ta trở lạ i vớ i cá c kết quả R2 = 0.092139 và RMSE = 449.4058 và phâ n tích kĩ hơn nhữ ng con
số nà y đến từ đâ u và bằ ng cá ch nà o:

ols2$results

##intercept RMSERsquaredRMSESD RsquaredSD


## 1TRUE 449.4058 0.09213921 210.7423 0.1264615

ols2$resample
## RMSERsquaredResample
## 1 598.4231 0.18156100 Fold1.Rep1
## 2 300.3885 0.00271741 Fold2.Rep1

Kết quả trên nghĩa là RMSE và R2 củ a mô hình con thứ nhấ t lầ n lượ t là 598.4231 và 0.181561, cò n
đố i vớ i mô hình con thứ hai sẽ là 300.3885 và 0.00271741. Chú ng ta có thể kiểm tra lạ i để thấ y rằ ng
trung bình củ a cá c RMSE và R2 chính là 449.4058 và 0.09213921:
(598.4231 + 300.3885) / 2

## [1] 449.4058

(0.18156100 + 0.00271741) / 2

## [1] 0.09213921

Chú ng ta cũ ng có thể tính toá n thủ cô ng, ví dụ , là R2 cho mô hình con thứ nhấ t như sau:
d1 <- ols2$control$index$Fold1.Rep1
training1 <- dung[d1,] # Mẫu huấn luyện thứ nhất.
testing1 <- dung[-d1,] # Mẫu kiểm định thứ nhất.
tom <- training1 %>% lm(wage ~ education, data = .)
dubao1 <- predict(tom, testing1)
Rsquared1 <- cor(dubao1, testing1$wage)^2
Rsquared1

## [1] 0.181561

Tính toá n trự c tiếp R2 cho mô hình con thứ 2 theo cá ch hoà n toà n tương tự (dù cá ch là m hơi khá c):
d2 <- ols2$control$index$Fold2.Rep1
training2 <- dung[d2,]
testing2 <- dplyr::setdiff(dung, training2)
ca <- training2 %>% lm(wage ~ education, data = .)
dubao2 <- predict(ca, testing2)
Rsquared2 <- cor(dubao2, testing2$wage)^2
Rsquared2

## [1] 0.00271741

Đến đâ y cá c bạ n có thể tò mò rằ ng tạ i sao chú ng ta lạ i dù ng nhữ ng lệnh kiểu như ols2$results hay
d2 <- ols2$control$index$Fold2.Rep1. Đâ y chính là cá ch thứ c để khai thá c thô ng tin từ đố i tượ ng
có tên là ols2. Nó là mộ t list, tạ m hiểu như sau: ols2 bao gồ m nhiều “đố i tượ ng con” đượ c hiển thị
sau dấ u $ bằ ng câ u lệnh sau (hiển thị mộ t phầ n kết quả trong mộ t danh sá ch rấ t dà i) :
199

str(ols2)

## List of 23
## $ method : chr "lm"
## ##
$ ## ## ## ## :List of 13
modelInfo
..$ label : chr "Linear Regression"
..$ library : NULL
..$ loop : NULL
..$ type : chr "Regression"
..$ parameters:'data.frame': 1 obs. of 3 variables:
Quan sá t thì cá c bạ n có suy đoá n rằ ng nếu gõ lệnh ols2$modelInfo$type sẽ cho ra chữ “Regression”.

Trong thự c tế, chú ng ta thườ ng thự c hiện kiểm tra chéo 5 hoặ c 10 lớ p vớ i số lầ n lậ p lạ i đủ nhiều để
chú ng ta có thể đá nh giá chính xá c hơn mô hình. Sử dụ ng toà n bộ cá c quan sá t củ a bộ dữ liệu
CPS1988 chú ng ta có thể đá nh giá nhiều khía cạ ch về chấ t lượ ng củ a mô hình OLS chứ khô ng chỉ că n
cứ và o, chẳ ng hạ n, R2 khô ng thô i. Dướ i đâ y chú ng ta thự c hiện OLS đồ ng thờ i vớ i thự c hiện đá nh giá
mô hình vớ i kiểm tra 10 lớ p, lặ p lạ i 10 lầ n. Nghĩa là chú ng ta thự c hiện tấ t cả 10*10 + 1 bằ ng 101 mô
hình tấ t cả . Cụ thể có 100 mô hình con và mộ t mô hình chính sử dụ ng toà n bộ cá c quan sá t. Do số
quan sá t là rấ t lớ n nên chú ng ta nên biết thêm cầ n bao nhiêu thờ i gian để chạ y cá c mô hình:

set.seed(29) # Sử dụng lệnh này để tái lập kết quả.


love <- trainControl(method = "repeatedcv", number = 10, repeats = 10)
system.time(all <- train(wage ~ education, method = "lm",
trControl = love, data = CPS1988))

## user system elapsed


## 5.96 0.05 6.09
Mấ t chừ ng 6 giâ y để chạ y 101 mô hình. Mộ t số tình huố ng chú ng ta có thể mấ t hà ng giờ và thậ m chí
hà ng chụ c giờ để chạ y mô hình.

Chú ng ta có thể trích xuấ t ra data frame và đặ t tên là k chứ a cá c thô ng tin về RMSE , R2 củ a 100 mô
hình con:
k <- all$resample
summary(k)

## RMSE Rsquared Resample


## Min. :360.8 Min. :0.05090 Length:100
## 1st Qu.:393.9 1st Qu.:0.08063 Class :character
## Median :410.0 Median :0.09969 Mode :character
## Mean :429.4 Mean :0.09498
## 3rd Qu.:456.2 3rd Qu.:0.10876
## Max. :599.3 Max. :0.13540

Cá c giá trị trung bình lầ n lượ t là 429.4 và 0.09498. Nhữ ng giá trị trung bình nà y có thể thấ y bằ ng hai
cá ch khá c nhau:

all$results # Cách 1.
200

##intercept RMSERsquaredRMSESD RsquaredSD


## 1TRUE 429.4022 0.09497748 51.44891 0.01952883

all # Cách 2.

## Linear Regression ##
## 28155 samples
##1 predictor ##
## No pre-processing
## Resampling: Cross-Validated (10 fold, repeated 10 times)
## Summary of sample sizes: 25339, 25340, 25339, 25339, 25339, 25340, ... ## Resampling
##

## RMSE Rsquared
## ##429.4022 0.09497748

## Tuning parameter 'intercept' was held constant at a value of TRUE


##
Ở đâ y cá c bạ n có thể thấ y 100 bộ dữ liệu huấ n luyện có kích thướ c lầ n lượ t là 25339, 25340, 25339,
25339, 25339, 25340… Con số nà y chính là xấ p xỉ 90% củ a 28155 quan sá t ban đầ u:
28155*0.9

## [1] 25339.5

Chú ng ta có thể đá nh giá , chẳ ng hạ n, mứ c độ ổ n định củ a mô hình mộ t cá ch hình ả nh:


k %>%
select(-Resample) %>%
gather(Metric, Value) %>%
ggplot(aes(Metric, Value, fill = Metric)) +
geom_boxplot(show.legend = FALSE) + theme_minimal() +
facet_wrap(~ Metric, scales = "free")

Hoặ c vừ a hiển thị Histogram và Density:


201

k %>%
select(-Resample) %>%
gather(Metric, Value) %>%
ggplot(aes(Value)) +
geom_density(color = "red", fill = "red", alpha = 0.3) +
geom_histogram(aes(y = ..density..), color = "blue", fill = "blue", alpha = 0.3
) +
facet_wrap(~ Metric, scales = "free")

Có thể thấ y rằ ng mộ t tỉ lệ lớ n cá c mô hình con có RMSE thấ p (tin tố t) vì Histogram (Density) bị méo
về phía dương. Tấ t nhiên chú ng ta cò n đá nh giá mứ c độ ổ n định củ a mô hình nà y că n cứ và o độ méo
nữ a. Mộ t mô hình tố t, ngoà i RMSE thấ p thì cầ n tiêu chí ổ n định. Nghĩa là phâ n phố i củ a cá c RMSE
cà ng tiến về phâ n phố i chuẩ n cà ng tố t. Nếu nhìn và o Boxplot thì tiêu chí nà y có nghĩa là median Q2
gầ n như nằ m chính giữ a củ a hộ p. Tấ t nhiên trong tình huố ng củ a chú ng ta thì khô ng phả i vậ y.

4.5 Dữ liệu thiếu và xử lý dữ liệu thiếu trong phân tích kinh tế lượng
Trong cá c giá o trình thố ng kê – kinh tế lượ ng tiêu chuẩ n, chú ng ta chỉ gặ p duy nhấ t mộ t trườ ng hợ p
sau: khô ng có quan sá t nà o thiếu. Tuy nhiên, trong thự c tế, dữ liệu thiếu mớ i là trườ ng hợ p chú ng
gặ p thườ ng xuyên hơn. Giả sử rằ ng biến luong và thunhapkhac (ở mụ c 2.1 củ a chương 2) thiếu ở
cá c quan sá t thứ hai và cuố i cù ng. Lú c đó trong R chú ng ta sẽ nhậ p dữ liệu thiếu bằ ng kí tự NA (viết
tắ t củ a Not Available) như sau:

luong <- c(20, NA, 28, 24, 32, 36, 32, 34, 24, 22, 28, 30)
thunhapkhac <- c(16, 10, 2, 0, 18, 10, 16, 24, 28, 20, 8, NA)

6 quan sá t đầ u củ a trangxinh sẽ như sau:

head(trangxinh)

## luong thunhapkhac chitieu


## 1 20 16 24.4
## 2 NA 10 31.2
## 3 28 2 29.2
## 4 24 0 23.6
202

## 5 32 18 36.0
## 6 36 10 31.4

R sẽ khô ng thự c hiện bấ t kì tính toá n nà o nếu có số liệu thiếu. Ví dụ :

mean(luong)

## [1] NA

Lú c nà y, để tính toá n trung bình luong chú ng ta phả i là m như sau:

mean(luong, na.rm = T)

## [1] 28.18182

Nghĩa là lự a chọ n na.rm = T chỉ thị cho R loạ i bấ t kì quan sá t thiếu nà o nếu có trướ c khi tính trung
bình. Điều nà y cũ ng có nghĩa là con số 28.18182 ở trên là trung bình củ a 11 quan sá t chứ khô ng
phả i 12.

Cá c xử lý thô ng thườ ng là nếu tỉ lệ số liệu thiếu khô ng quá lớ n, chú ng ta sẽ bỏ đi nhữ ng quan sá t
thiếu. Dướ i đâ y là câ u lệnh bỏ quan sá t thiếu (là 2) từ trangxinh và tạ o ra data frame mớ i vớ i tên gọ i
là dung:

dung <- na.omit(trangxinh)

Lú c nà y, cá c bạ n sẽ thấ y dung chỉ cò n lạ i 10 quan sá t mà thô i so vớ i 12 quan sá t ban đầ u:

head(dung)

## luong thunhapkhac chitieu


## 1 20 16 24.4
## 3 28 2 29.2
## 4 24 0 23.6
## 5 32 18 36.0
## 6 36 10 31.4
## 7 32 16 32.6

dim(trangxinh)

## [1] 12 3

dim(dung)

## [1] 10 3

Cá ch xử lý số liệu như trên là khô ng phù hợ p và khô ng chuyên nghiệp ngay cả trong tình huố ng dữ
liệu thiếu là khô ng nhiều. Dướ i đâ y là mộ t ví dụ trự c quan. Giả sử chú ng ta khả o sá t thô ng tin về 5
biến số a, b, c, d, và e thể hiện trạ ng thá i sứ c khỏ e củ a 5 bệnh nhâ n và dữ liệu thiếu (tô mà u và ng) lạ i
xuấ t hiện trên mộ t đườ ng chéo theo kiểu như sau:
203

Lú c nà y, nếu xử lý số liệu thiếu theo cá ch thứ c trên thì bạ n sẽ khô ng cò n dữ liệu nà o để thự c hiện
phâ n tích nữ a.

Ví dụ trên chỉ ra rằ ng chú ng ta cầ n mộ t chiến lượ c xử lý số liệu thiếu khoa họ c hơn. Ví dụ , chú ng ta
có thể thay số điểm số liệu trố ng bằ ng trung bình củ a biến số . Gó i mice củ a R có thể thự c hiện cá ch
thứ c chèn số liệu thiếu (Data Imputation) theo mộ t phương phá p tương tự vớ i mô tả ở trên vớ i tên
là khớp trung bình dự báo (predictive mean matching - PMM).

Để mình họ a, chú ng ta lấ y bộ số liệu pima.csv bao gồ m 768 quan sá t ứ ng vớ i 768 bệnh nhâ n. Vì mộ t
lý do nà o đó , thô ng tin về hà m lượ ng insulin trong má u củ a bệnh nhâ n thứ nhấ t chẳ ng hạ n là khô ng
có . Bộ số liệu củ a chú ng ta sẽ là bộ số liệu thiếu như chú ng ta có thể thấ y dướ i đâ y:

setwd("D:/KTLR")
dung <- read.csv("pima.csv")
head(dung)

## X pregnant glucose diastolic triceps insulin bmi diabetes age test


## 1 1 6 148 72 35 NA 33.6 0.627 50 1
## 2 2 1 85 66 29 NA 26.6 0.351 31 0
## 3 3 8 183 64 NA NA 23.3 0.672 32 1

Trướ c hết, chú ng ta có thể điều tra “mậ t độ ” củ a dữ liệu thiếu bằ ng cả phương phá p hình ả nh và số
vớ i sự trợ giú p củ a gó i VIM như sau:

library(VIM)
trangyeu<- aggr(dung, col=c('navyblue','yellow'),
numbers = TRUE, sortVars = TRUE, labels = names(dung),
cex.axis = .7, gap = 3, ylab = c("Du Lieu Thieu","Pattern"))
204

##
## Variables sorted by number of missings:
## Variable Count
## insulin 0.486979167
## triceps 0.295572917
## diastolic 0.045572917
## bmi 0.014322917
## glucose 0.006510417
## X 0.000000000
## pregnant 0.000000000
## diabetes 0.000000000
## age 0.000000000
## test 0.000000000

Nếu bứ c tranh củ a chú ng ta cà ng nhiều đố m mà u và ng thì có nghĩa là dữ liệu củ a chú ng ta thiếu


cà ng nhiều. Cụ thể hơn bằ ng số thì biến insulin thiếu 48.69% (nhiều nhấ t), cò n biến glucose là
0.65%.

Dướ i đâ y là câ u lệnh cho phép chú ng ta chèn dữ liệu thiếu theo phương phá p PMM bằ ng gó i mice:

library(mice)
apple <- mice(dung, m=2, method = "pmm", seed = 100)

##
## iter imp variable
## 1 1 glucose diastolic triceps insulin bmi
## 1 2 glucose diastolic triceps insulin bmi
## 2 1 glucose diastolic triceps insulin bmi

Câ u lệnh trên có nghĩa là chú ng ta tạ o ra hai bộ số liệu khá c nhau (m=2) từ bộ số liệu trố ng nguyên
bản bằng phương phá p predictive mean matching (method = “pmm”). Chú ng ta có thể xem qua,
chẳ ng hạ n, hai trong số ba bộ dữ liệu nà y:

data1 <- complete(apple, 1) # Bộ thứ nhất.


data2 <- complete(apple, 2) # Bộ thứ hai.
summary(data1)
205

## X pregnant glucose diastolic


## Min. : 1.0 Min. : 0.000 Min. : 44.0 Min. : 24.00
## 1st Qu.:192.8 1st Qu.: 1.000 1st Qu.: 99.0 1st Qu.: 64.00
## Median :384.5 Median : 3.000 Median :117.0 Median : 72.00
## Mean :384.5 Mean : 3.845 Mean :121.6 Mean : 72.29
## 3rd Qu.:576.2 3rd Qu.: 6.000 3rd Qu.:140.2 3rd Qu.: 80.00
## Max. :768.0 Max. :17.000 Max. :199.0 Max. :122.00

Chú ng ta cũ ng có thể thự c hiện hai mô hình hồ i quy ứ ng vớ i hai bộ số liệu nà y và so sá nh chú ng cá c
kết quả tương ứ ng vớ i nhau vớ i sự hỗ trợ củ a gó i stargazer:
## <- lm(diabetes ~ bmi, data = data1) ols2 <- lm(diabetes ~ bmi, data = data2) library(
ols1
## So sánh OLS1 ols2,
stargazer(ols1, và OLS2
title = "So sánh OLS1 và OLS2", type = "text")
## ===========================================================
## Dependent variable:
## ----------------------------
## diabetes
## (1) (2)
##
## bmi 0.007*** 0.008***
## (0.002) (0.002)
##
## Constant 0.239*** 0.228***
## (0.057) (0.056)
##
##
## Observations 768 768
## R2 0.022 0.025
## Adjusted R2 0.021 0.024
## Residual Std. Error (df = 766) 0.328 0.327
## F Statistic (df = 1; 766) 17.631*** 19.581***
## ===========================================================
## Note: *p<0.1; **p<0.05; ***p<0.01

Chú ng ta có thể thấ y rằ ng cá c ướ c lượ ng thu đượ c có khá c biệt nhỏ . Hai kết quả hồ i quy ứ ng vớ i hai
bộ số liệu khá c nhau nà y có thể thu đượ c theo mộ t cá ch thứ c khá c (khô ng hiển thị kết quả ) :

fit <- with(data = apple, exp = lm(diabetes ~ bmi))


summary(fit)

Rõ rà ng, chú ng ta cầ n mộ t kết quả tổ ng hợ p. Chú ng ta có thể sử dụ ng hà m pool() để thu đượ c kết quả
tổ ng hợ p nà y:

tonghop <- pool(fit)


tonghop
206

## Call: pool(object = fit)


##
## Pooled coefficients:
## (Intercept) bmi ## 0.233344387 0.007357831 ##
## Fraction of information about the coefficients missing due to nonresponse: ## (Interc

bmi
## 0.03074234 0.03424035
Ở đâ y kết quả cuố i cù ng củ a đượ c hiển thị ở dò ng Pooled coefficients. Chú ng ta có thể thấ y rằ ng hệ
số chặ n có giá trị là 0.23334487. Con số nà y chính bằ ng trung bình cộ ng cá c hệ số chặ n thu đượ c từ
thự c hiện hồ i quy hai bộ dữ liệu con:

(0.238760 + 0.227929) / 2

## [1] 0.2333445

Trên đâ y chú ng ta vừ a nghiên cứ u việc xử lý số liệu thiếu theo mộ t cá ch thứ c đơn giả n nhấ t. Trong
thự c tế, để xử lý số liệu thiếu ngườ i ta thườ ng phả i tìm hiểu kĩ nguyên nhâ n tạ i sao số liệu bị thiếu,
cũ ng như cá c đặ c điểm thố ng kê củ a biến số bị thiếu để từ đó đưa ra phương phá p chèn số liệu thiếu
mộ t cá ch phù hợ p. Rõ rà ng chú ng ta khô ng thể điền số 0 và o biến insulin cho bệnh nhâ n thứ nhấ t vì
khô ng có cơ thể số ng nà o có hà m lượ ng insulin là 0 đượ c. Chú ng ta cũ ng nên, và trong nhiều trườ ng
hợ p là khô ng thể loạ i chú ng ra khỏ i mẫ u. Điền giá trị trố ng nà y bằ ng bao nhiêu hiện là mộ t thá ch
thứ c củ a khoa họ c thố ng kê về cả khía cạ nh lý thuyết cũ ng như thự c hà nh.

Trong phạ m vi củ a tà i liệu nà y, thì trình bà y cá ch thứ c xử lý số liệu thiếu mộ t cá ch bà i bả n là khô ng


thể, cũ ng như khô ng thể bao tấ t cả nhữ ng phương phá p phù hợ p vố n rấ t nhạ y cả m vớ i từ ng tình
huố ng khác nhau. Bạ n đọ c quan tâ m có thể tìm đọ c cuố n sá ch cơ bả n “Flexible Imputation of
Missing Data” củ a Stef van Buuren. Cuố n nà y sử dụ ng R nên cá c bạ n sẽ khô ng phả i mấ t nhiều thờ i
gian để thự c hà nh.
207
208

Chương 5: Mở rộng mô hình hồi quy hai biến số

Chương này chúng ta sẽ nghiên cứu các những trường hợp mở rộng của hồi quy hai biến số. Những
mô hình được nghiên cứu là hồi quy qua gốc tọa độ (regression through the origin), các mô hình
logarit và (log-linear model ) bán logarit (semilog models) và một số mô hình khác. Bên cạnh đó
chúng ta cũng nghiên cứu hồi quy chuẩn hóa (reggression on standardized variables), sự thay đổi
đơn vị đo của biến số (units of measurement) cũng như dạng hàm (functional form) của mô hình
tuyến tính.

5.1 Hồi quy qua gốc tọa độ - mô hình CAPM


Hồ i quy qua gố c tọ a độ cò n gọ i là hồ i quy khô ng có hệ số chặ n là mô hình có dạ ng sau:

𝑌𝑖 = 𝛽2𝑋𝑖 + 𝑢𝑖 (1)
Mộ t ví dụ điển hình củ a hồ i quy qua gố c tọ a độ là mô hình định giá tà i sả n vố n CAPM (Capital Asset
Pricing Model) phổ biến trong nghiên cứ u tà i chính:

(ER𝑖 − 𝑟𝑓) = 𝛽𝑖(ERm − 𝑟𝑓) (2)


Ở đâ y ERi là lợ i tứ c củ a mộ t chứ ng khoá n (mộ t mã cổ phiếu), ER m là lợ i tứ c củ a danh mụ c đầ u tư thị
trườ ng (thườ ng là mộ t chỉ số chứ ng khoá n, chẳ ng hạ n chỉ số VN Index) cò n rf là lã i suấ t phi rủ i ro, hệ
số β (đọ c là beta) đo lườ ng rủ i ro hệ thố ng (systematic risk) củ a tà i sả n – là rủ i ro mà khô ng thể loạ i
bỏ bằ ng đa dạ ng hó a danh mụ c đầ u tư. Nếu hệ số nà y lớ n hơn mộ t thì chứ ng khoá n đượ c nó i là
năng động (aggressive), nếu hệ số nà y bé hơn mộ t thì chứ ng khoá n là thụ động (defensive).

Nếu thị trườ ng tà i chính là vậ n hà nh hiệu quả thì ngườ i ta nó i rằ ng phần bù rủi ro kì vọng củ a
chứ ng khoá n (expected risk premium) đo bằ ng (ERi - rf ) sẽ bằ ng tích củ a hệ số beta nhâ n vớ i phầ n
bù rủ i ro thị trườ ng (ERm - rf ) và đượ c gọ i là lợ i nhuậ n thị trườ ng. Đườ ng thẳ ng biểu diễn mố i quan
hệ nà y đượ c gọ i là đường thị trường chứng khoán (security market line):
209

Vớ i cá c nghiên cứ u thự c chứ ng trong tà i chính, mô hình (2) thườ ng đượ c biểu diễn ở hai dạ ng sau:

𝑅𝑖 − 𝑟𝑓 = 𝛽𝑖(𝑅𝑚 − 𝑟𝑓) + 𝑢𝑖 (3)

𝑅𝑖 − 𝑟𝑓 = 𝛼𝑖 + 𝛽𝑖(𝑅𝑚 − 𝑟𝑓) + 𝑢𝑖 (4)

Mô hình (4) cò n có tên gọ i là mô hình thị trường (Market Model). Nếu CAPM là đú ng thì αi đượ c kì
vọ ng là bằ ng 0.

Cầ n lưu ý là hệ số R2 củ a hồ i quy qua gố c tọ a độ sẽ có thể là mộ t con số âm và không có ý nghĩa


trong việc diễn giả i sứ c mạ nh giả i thích củ a mô hình. Thay vì sử dụ ng cô ng thứ c truyền thố ng, hệ số
nà y củ a hồ i quy qua gố c tọ a độ đượ c gọ i là r2 thô (raw r2) hay chỉ kí hiệu chỉ là r2 để phâ n biệt vớ i R2
như ở mộ t số tà i liệu và đượ c tính theo cô ng thứ c sau:

(∑ 𝑋𝑖𝑌𝑖)2
raw 𝑟2 =
∑ 𝑋𝑖2 ∑ 𝑌𝑖2
Mặ c dù r2 tính theo cô ng thứ c nà y thỏ a mã n 0 ≤ r 2 ≤ 1 nhưng chú ng ta cũ ng khô ng thể so sá nh mộ t
cá ch trự c tiếp r2 nà y vớ i R2 đượ c. Khi thự c hiện hồ i quy qua gố c tọ a độ , hầ u hết phầ n mềm (bao gồ m
R) sẽ bá o cá o r2 nà y.

Bở i vì nhữ ng đặ c điểm cá biệt nà y củ a mô hình chú ng ta cầ n đặ c biệt chú ý và thậ n trọ ng khi sử
dụ ng mô hình hồ i quy khô ng có hệ số chặ n. Trừ khi chú ng ta có kì vọng tiên nghiệm (priori
expectation) rấ t mạ nh rằ ng hệ số chặ n là bằ ng khô ng, chú ng ta nên đá nh giá mô hình CAPM theo mô
hình (4) chứ khô ng phả i (3) và thự c hiện cá c kiểm định cầ n thiết để chỉ ra rằ ng hệ số chặ n là khô ng
có ý nghĩa thố ng kê – tứ c là có thể bỏ hệ số chặ n bằ ng 0 về mặ t thố ng kê (statistically equal to zero).

Chú ng ta xét bộ số liệu table6_1.xls trong đó biến X là phầ n bù rủ i ro kì vọ ng (thể hiện lợ i tứ c trộ i
hơn so vớ i thị trườ ng) củ a Afuture cò n Y là phầ n bù rủ i ro thị trườ ng (hay lợ i nhuậ n thị trườ ng) từ
nă m 1971 đến 1980:

setwd("D:/KTLR") library(gdata)
dung <- read.xls("table6_1.xls") head(dung)

## year Y X
## 1 1971 67.5 19.5
## 2 1972 19.2 8.5
## 3 1973 -35.2 -29.3
## 4 1974 -42.0 -26.5
## 5 1975 63.7 61.9
## 6 1976 19.3 45.5

Nếu chú ng ta có kì vọ ng tiên nghiệm mạ nh rằ ng hệ số chặ n ở (4) là khô ng tồ n tạ i thì chú ng ta có thể
thự c hiện hồ i quy qua gố c tọ a độ :
210

ols1 <- lm(Y ~ 0 + X, data = dung)


summary(ols1)

##
## Call:
## lm(formula = Y ~ 0 + X, data = dung)
##
## Residuals:
## Min 1Q Median 3Q Max
## -30.291 -6.007 -0.720 4.484 46.247
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## X 1.0899 0.1916 5.69 0.000298 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 19.54 on 9 degrees of freedom
## Multiple R-squared: 0.7825, Adjusted R-squared: 0.7583
## F-statistic: 32.38 on 1 and 9 DF, p-value: 0.0002981

Có thể thấ y hệ số beta β = 1.089 là lớ n hơn 1, hay cổ phiếu củ a Afuture là nă ng độ ng. Trong tà i chính
kết quả nà y đượ c diễn giả i như sau: khi lợ i nhuậ n thị trườ ng tă ng 1% thì lợ i nhuậ n củ a Afuture sẽ
tă ng 1.089%.

Nếu chú ng ta khô ng có bằ ng chứ ng tiên nghiệm trướ c rằ ng hệ số chặ n bằ ng khô ng, chú ng ta nên sử
dụ ng (4) – tứ c là sử dụ ng mô hình thị trườ ng để đá nh giá mố i liên hệ giữ a lợ i nhuậ n củ a Afuture và
lợ i nhuậ n thị trườ ng:

ols2 <- lm(Y ~ X, data = dung)


summary(ols2)

##
## Call:
## lm(formula = Y ~ X, data = dung)
##
## Residuals:
## Min 1Q Median 3Q Max
## -30.623 -7.166 -1.237 3.585 45.373
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.2797 7.6886 0.166 0.87194
## X 1.0691 0.2383 4.486 0.00204 **
## ---
211

## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 20.69 on 8 degrees of freedom
## Multiple R-squared: 0.7155, Adjusted R-squared: 0.68
## F-statistic: 20.12 on 1 and 8 DF, p-value: 0.00204

Do p-value củ a hệ số chặ n là 0.872 > 5% nên chú ng ta chưa có bằ ng chứ ng thố ng kê để bắ c bỏ giả
thiết rằ ng hệ số chặ n bằ ng 0. Cầ n lưu ý là chú ng ta khô ng thể so sá nh R 2 = 71.55% ở đâ y vớ i r2 =
78.25% ở trên vớ i nhau đượ c.

5.2 Vấn đề thay đổi đơn vị của biến


Việc thay đổ i đơn vị đo củ a biến số phả i chă ng là m thay đổ i ý nghĩa và bả n chấ t kinh tế khi diễn giả i
cá c kết quả thu đượ c? Câ u trả lờ i là khô ng như chú ng ta thấ y ngay sau đâ y vớ i bộ số liệu về tổ ng đầ u
tư củ a khu vự c tư GPD (gross private domestic investment) và tổ ng sả n lượ ng GDP lưu ở
table6_2.xls. Chú ng ta xét hai biến số nà y vớ i cả hai đơn vị đo là tỉ (GDPB, GPDBL) và triệu (GDPM,
DPDIM):

trang <- read.xls("table6_2.xls")


View(trang)

Đá nh giá sự phụ thuô c củ a GPD theo GDP theo nhữ ng đơn vị đo khá c nhau ta có :

summary(lm(GPDIBL ~ GDPB, data = trang)) # Đơn vị của GPD và GDP là tỉ.

##
## Call:
## lm(formula = GPDIBL ~ GDPB, data = trang) ##
## Residuals:
##Min1Q Median
3QMax
## -68.84 -31.82 -4.01 32.47 85.86
212

##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1026.4980 257.5874 -3.99 0.004 **
## GDPB 0.3016 0.0399 7.56 0.000066 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 54.5 on 8 degrees of freedom
## Multiple R-squared: 0.877, Adjusted R-squared: 0.862
## F-statistic: 57.1 on 1 and 8 DF, p-value: 0.0000656

summary(lm(GPDIM ~ GDPM, data = trang)) # Đơn vị của GPD và GDP là triệu.

##
## Call:
## lm(formula = GPDIM ~ GDPM, data = trang)
##
## Residuals:
## Min 1Q Median 3Q Max
## -68843 -31816 -4008 32471 85856
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1026497.9900 257587.4037 -3.99 0.004 **
## GDPM 0.3016 0.0399 7.56 0.000066 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 54500 on 8 degrees of freedom
## Multiple R-squared: 0.877, Adjusted R-squared: 0.862
## F-statistic: 57.1 on 1 and 8 DF, p-value: 0.0000656

Rõ rà ng vớ i cá c đơn vị đo khá c nhau (cù ng là tỉ hoặ c cù ng là triệu) thì cá c kết quả ướ c lượ ng là
khô ng có gì thay đổ i. Cụ thể, khi GDP tă ng 1 (tỉ hoặ c triệu) thì GPD tă ng 0.3016 (tỉ hoặ c triệu).

Nghĩa là , ý nghĩa và bả n chấ t kinh tế về mố i liên hệ giữ a cá c biến số là khô ng thay đổ i. Và điều nà y
cò n đú ng trong nhữ ng trườ ng hợ p chú ng ta sử dụ ng đơn vị đo theo mộ t kiểu khá c như có thể thấ y
dướ i đâ y (khô ng hiển thị kết quả ):

# Đơn vị của GPD là triệu, của GDP là tỉ


summary(lm(GPDIM ~ GDPB, data = trang))
# Đơn vị của GPD là tỉ, của GDP là triệu
summary(lm(GPDIBL ~ GDPM, data = trang))
213

5.3 Hồi quy chuẩn hóa


Để thự c hiện hồ i quy chuẩ n hó a, chẳ ng hạ n, Y theo X trướ c hết chú ng ta cầ n chuẩ n hó a cá c biến số
nà y theo cô ng thứ c sau:

𝑌𝑖 − 𝑌̅
𝑌𝑖∗ =
𝑆𝑌
𝑋𝑖 − 𝑋̅
𝑋𝑖∗ =
𝑆𝑋
Ở đâ y biến đượ c chuẩ n hó a có kí hiệu * ở trên đầ u. Cô ng thứ c nà y có nghĩa là để chuẩ n hó a, ví dụ ,
vớ i biến Y thì chú ng ta lấ y cá c quan sá t củ a Y trừ đo trung bình củ a nó đượ c bao nhiêu chia cho độ
lệch chuẩ n củ a Y (kí hiệu SY).

Trong R, vớ i bộ số liệu đượ c sử dụ ng ở mụ c 5.2, thự c hiện hồ i quy chuẩ n hó a đượ c thự c hiện như
sau:

summary(lm(scale(GPDIBL) ~ scale(GDPB), data = trang))

##
## Call:
## lm(formula = scale(GPDIBL) ~ scale(GDPB), data = trang) ##
## Residuals:
##Min1Q Median
3QMax
## -0.4696 -0.2170 -0.0273 0.2215 0.5857
##
## Coefficients:
##Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.96e-16 1.18e-01 0.00 1
## scale(GDPB) 9.37e-01 ##1.24e-01
--- 7.56 0.000066 ***

## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.372 on 8 degrees of freedom
## Multiple R-squared: 0.877, Adjusted R-squared: 0.862 ## F-statistic: 57.1 on 1 and 8

Điểm đá ng chú ý mà chú ng ta có thể thấ y ở đâ y là khi thự c hiện hồ i quy chuẩ n hó a có hệ số chặ n, thì
hệ số chặ n luôn bằ ng 0 và p-value củ a nó luôn bằ ng 1. Nghĩa là hồ i quy chuẩ n hó a, dù ta tuyên bố rõ
rà ng có sự xuấ t hiện củ a hệ số chặ n thì kết quả luô n tương đương vớ i hồ i quy qua gố c tọ a độ như
chú ng ta có thể thấ y dướ i đâ y:

options(scipen = 10) # Định dạng cách kiểu hiển thị số.


options(digits = 6) # Định dạng hiểu thị số với 6 chữ số sau dấu phẩy.
summary(lm(scale(GPDIBL) ~ 0 + scale(GDPB), data = trang))
214

##
## Call:
## lm(formula = scale(GPDIBL) ~ 0 + scale(GDPB), data = trang) ##
## Residuals:
##Min1Q Median

3QMax
## -0.4696 -0.2170 -0.0273 0.2215 0.5857
##
## Coefficients:
##Estimate Std. Error t value Pr(>|t|)
## scale(GDPB)0.937 0.117 8.02 0.000022 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.35 on 9 degrees of freedom ## Multiple R-squared: 0.877,
## F-statistic: 64.3 on 1 and 9 DF, p-value: 0.0000218

5.4 Dạng hàm của mô hình hồi quy


Mụ c nà y chú ng ta sẽ xét mộ t số dạ ng hà m hay gặ p trong phâ n tích kinh tế dướ i đâ y:

 Mô hình logarit tuyến tính (log-linear model)


 Mô hình bá n logarit (semilog model)
 Mô hình xu hướ ng tuyến tính (linear trend model)
 Mô hình tuyến tính – logarit (lin – log model)
 Mô hình nghịch đả o (reciprocal model)
 Mô hình đa thứ c (polyniminal model).

5.4.1 Mô hình logarit tuyến tính


Ví dụ điển hình cho mô hình dạ ng nà y là hà m sả n xuấ t Cobb – Douglas trong đó sả n lượ ng Q phụ
thuộ c lao độ ng L và vố n K theo phương trình:

Q = aLαKβ

Vớ i a là mộ t hằ ng số dương. Lấ y ln (logarit tự nhiên) hai vế củ a phương trình trên ta có :

ln(Q) = ψ + αln(L) + βln(K)

Trong đó ψ = ln(a).

Trong kinh tế lượ ng, hà m sả n xuấ t Cobb – Douglas sẽ đượ c viết ở dạ ng:

ln(Qi) = ψ + αln(Li) + βln(Ki) + ui (5)

Nếu α + β = 1 thì chú ng ta có hàm sản xuất có lợi tức không đổi theo quy mô. Nếu tổ ng nà y lớ n
hơn 1 thì chú ng ta có hàm sản xuất có lợi tức giảm dần theo quy mô (và ngượ c lạ i) và thườ ng
đượ c đá nh giá qua cá c mô hình kinh tế lượ ng thự c nghiệm.
215

Đặ c điểm đá ng chú ý củ a (5) là cá c hệ số ướ c lượ ng có thể thể coi như là nhữ ng hệ số co giãn
(elasticities). Cụ thể, α là hệ số co giã n củ a sả n lượ ng theo lao độ ng cò n β là hệ số co giã n củ a sả n
lượ ng theo vố n khi tấ t cả cá yếu tố khá c khô ng đổ i.

Để minh họ a ú ng ta xét dữ liệu có tên Table2_1.xls gồ m cá c thô ng tin về sả n lượ ng (output), lao
độ ng (labor) và vố n (capital) củ a 50 bang và khu vự c hà nh chính đặ c biệt Washington DC trong nă m
2005 và thự c hiện ướ c lượ ng mô hình (5):

dung <- read.xls("Table2_1.xls")


logatt <- lm(log(output) ~ log(labor) + log(capital), data = dung)
summary(logatt)

##
## Call:
## lm(formula = log(output) ~ log(labor) + log(capital), data = dung) ##
## Residuals:
##Min1Q Median

3QMax
## -0.4564 -0.1211 -0.0532 0.0452 1.2158
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.8876 0.3962 9.81 0.00000000000047 ***
## log(labor) 0.4683 0.0989 4.73 0.00001980879662 ***
## log(capital) 0.5213 0.0969 5.38 0.00000218315931 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.267 on 48 degrees of freedom
## Multiple R-squared: 0.964, Adjusted R-squared: 0.963
## F-statistic: 646 on 2 and 48 DF, p-value: <2e-16

Kết quả nà y chỉ ra rằ ng R2 = 96.4% - mộ t con số cao bấ t thườ ng đố i vớ i dữ liệu chéo. Cá c kết quả
khá c cò n lạ i đượ c diễn giả i như sau:

 Khi tă ng lao độ ng lên 1% thì sả n lượ ng sẽ tă ng 0.4683%.


 Khi tă ng vố n lên 1% thì sả n lượ ng tă ng 0.5212%.
 Hà m sả n xuấ t Dobb- Douglas thu từ mô hình thự c nghiệm là Q = 48.79L0.4683K0.5212 .

Ở đâ y chú ng ta thấ y rằ ng α + β = 0.9896 ngụ ý rằ ng rấ t có thể hà m sả n xuấ t là lợ i tứ c khô ng đổ i theo


quy mô . Nếu α + β thự c sự bằ ng 1 thì α = 1- β và phương trình (5) bằ ng biến đổ i đạ i số sẽ trở thà nh:

ln(Qi/Li) = ψ + βln(Ki/Li) + ei (6)

Mô hình (6) gọ i là mô hình bị giớ i hạ n (Restricted Model) cò n (5) gọ i là mô hình khô ng bị giớ i hạ n
(Unrestricted Model). Chú ng ta thự c hiện ướ c lượ ng mô hình (6):
216

love <- lm(log(output / labor) ~ log(capital / labor), data = dung)


summary(love) # Table 2.4.
## Call:
## lm(formula = log(output/labor) ~ log(capital/labor), data = dung) ##
## Residuals:
##Min1Q Median3QMax

## -0.4364 -0.1247 -0.0508 0.0436 1.2307


##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.7562 0.1854 20.26 < 2e-16 ***
## log(capital/labor) 0.5238 0.0958 5.47 0.0000015 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.264 on 49 degrees of freedom
## Multiple R-squared: 0.379, Adjusted R-squared: 0.366
## F-statistic: 29.9 on 1 and 49 DF, p-value: 0.00000154

Mô hình nà y có nghĩa là nếu tỉ số vố n chia cho lao độ ng tă ng 1% thì sả n lượ ng tă ng 0.5238%. Chú ý
rằ ng R2 = 37.9% khô ng thể so sá nh đượ c vớ i R2 = 96.4% ở mô hình (5).

Để đá nh giá xem α + β có bằ ng 1 hay khô ng chú ng ta sử dụ ng kiểm định F đượ c tính theo cô ng thứ c
sau:
(𝑅𝑆𝑆𝑅 − 𝑅𝑆𝑆𝑈𝑅)/𝑚
𝐹= ~𝐹𝑚,(𝑛−𝑘) (7)
𝑅𝑆𝑆𝑈𝑅 /(𝑛 − 𝑘)
Trong đó RSSR và RSSUR lầ n lượ t là tổ ng bình phương phầ n dư (RSS) củ a mô hình giớ i hạ n và khô ng
bị giớ i hạ n, m là số biến độ c lậ p mà mô hình bị giớ i hạ n ít hơn mô hình giớ i hạ n, k là số lượ ng biến
có ở mô hình khô ng giớ i hạ n (tính cả biến phụ thuộ c) cò n n là số quan sá t.

Thố ng kê F tính theo cô ng thứ c (7) sẽ tuâ n theo quy luậ t χ2 vớ i số bậ t tự do lầ n lượ t là m và n – k.
Nếu F tính theo cô ng thứ c (7) mà lớ n hơn giá trị tớ i hạ n ở ngưỡ ng đượ c chọ n trướ c thì chú ng ta bắ c
bỏ giả thiết α + β = 1. Dướ i đâ y chú ng ta sẽ thự c hiện kiểm định F đã mô tả :

RSS_u <- sum((logatt$fitted.values - log(dung$output))^2) # Tính RSSUR


RSS_r <- sum((love$fitted.values - log(dung$output / dung$labor))^2) # RSSR
Fqs=((RSS_r - RSS_u) / 1) / (RSS_u / (51 - 3))
f <- qf(0.95, df1 = 1, df2 = 51 - 3)
print(paste(Fqs,f))

## [1] "0.14140646378643 4.04265212856665"


Có thể thấ y Fqs = 0.14 < 4.04 ở ngưỡ ng 5% nên chú ng ta có chưa có bằ ng chứ ng để bắ c bỏ giả thiết
rằ ng α + β = 1.
217

Chú ng ta có thể thự c hiện kiểm định α + β = 1 theo cá ch khá c sử dụ ng lệnh linearHypothesis() củ a
gó i AER:

library(AER)
linearHypothesis(logatt, "log(labor) + log(capital) = 1") # Cách 1

## Linear hypothesis test ##


## Hypothesis:
## log(labor) + log(capital) = 1 ##
## Model 1: restricted model
## Model 2: log(output) ~ log(labor) + log(capital) ##

## Res.Df RSS Df Sum of Sq F Pr(>F)


## 1 49 3.426
## 2 48 3.416 1 0.01006 0.141 0.709

Do p-value = 0.709 > 5% nên chú ng ta chưa có bằ ng chứ ng thố ng kê bắ c bỏ giả thiết α + β = 1. Chú ng
ta sẽ nghiên cứ u kĩ hơn kiểm định sự rà ng buộ c giữ a cá c hệ số hồ i quy trong chương sau.

5.4.2 Mô hình bán logarit


Chú ng ta xét mô hình tă ng trưở ng củ a GDP thự c (kí hiệu là RGDP) củ a Mĩ từ nă m 1960 đến 2007
như sau:

RGDPt = RGDP1960(1+r)t (8)

Trong đó r là tố c độ tă ng trưở ng, t là thờ i gian (trong 48 nă m) từ nă m 1960 đến 2007. Lấ y ln hai vế
củ a (8) ta có :

ln(RGDP) = b1 + b2t (9)

Vớ i b1 = ln(RGDP1960) và b2= ln(1+r).

Thự c hiện ướ c lượ ng (9) vớ i bộ số liệu Table2_5.xls trong R:

dung <- read.xls("Table2_5.xls")


ahi <- lm(log(rgdp)~time,data=dung) summary(ahi)

##
## Call:
## lm(formula = log(rgdp) ~ time, data = dung) ##
## Residuals:
##Min1Q

Median3QMax
## -0.09088 -0.01843 0.00526 0.02307 0.05946
##
218

## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 7.875662 0.009759807.0<2e-16 ***
## time 0.031490 0.00034790.8<2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.0333 on 46 degrees of freedom ## Multiple R-squared: 0.99
## F-statistic: 8.25e+03 on 1 and 46 DF, p-value: <2e-16

Nghĩa là GDP củ a Mĩ tă ng trưở ng vớ i tố c độ chừ ng 3.149% hà ng nă m. Chú ng ta có thể minh họ a tố c


độ tă ng trưở ng củ a ln(rgdp) theo thờ i gian:

library(ggplot2)
ggplot(dung, aes(time, log(rgdp))) + geom_line() + geom_point(col = "red")

Mộ t vấ n đề là vai trò củ a chọ n trụ c thờ i gian t. Như ta thấ y bộ số liệu gố c chọ n time = 1 ứ ng vớ i nă m
1960, time = 48 ứ ng vớ i 2007:

View(dung)

Tuy nhiên chú ng ta có thể chọ n lạ i cá c biểu diễn thờ i gian như sau mà khô ng ả nh hưở ng đến kết quả
ướ c ướ c lượ ng: chọ n biến mớ i T từ 1960 đến 2007:
219

dung$T = 1960:2007 # Tạo biến mới T từ 1960 đến 2007.


View(dung)

Kết quả hồ i quy theo kiểu biến mớ i T:

loveyou <- lm(log(rgdp) ~ T, data = dung)


summary(loveyou)

##
## Call:
## lm(formula = log(rgdp) ~ T, data = dung) ##
## Residuals:
##Min1Q

Median3QMax
## -0.090879 -0.018426 0.005258 0.023067 0.059459
##
## Coefficients:
##Estimate Std. Error t value Pr(>|t|)
## (Intercept) -5.381e+01 6.878e-01 -78.24<2e-16 ***
## T 3.149e-02 3.467e-0490.82<2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.03328 on 46 degrees of freedom
## Multiple R-squared: 0.9945, Adjusted R-squared: 0.9943 ## F-statistic: 8248 on 1 and

Ngoạ i trừ hệ số chặ n, tấ t cả cá c kết quả khá c là khô ng khá c nhau. Nguyên nhâ n là , chẳ ng hạ n, ướ c
lượ ng rgdp cho nă m 1960 ứ ng vớ i hai kiểu biến khá c nhau lầ n lượ t sẽ là :

 exp(7.8756624+0.0314896*1) : cho mô hình sử dụ ng kiểu biến time.


 exp(-53.81+0.0314896*1960) : Cho mô hình sử dụ ng kiểu biến T.

Tuy nhiên kết quả củ a ướ c lượ ng rgdp (và tấ t cả cá c kết quả khá c) vẫ n khô ng đổ i. Thự c vậ y, chú ng
ta có thể tính rgdp ướ c lượ ng cho cả hai tình huố ng và thấ y chú ng chính là mộ t:

exp(predict(ahi, dung))
220

## 1 2 3 4 5 6 7
## 2716.642 2803.549 2893.236 2985.793 3081.310 3179.883 3281.609

exp(predict(loveyou, dung))

## 1 2 3 4 5 6 7
## 2716.642 2803.549 2893.236 2985.793 3081.310 3179.883 3281.609

Tấ t nhiên kế quả chẳ ng có thay đổ i nếu chú ng ta thay T bằ ng dã y số từ -1 đến -48. Việc tạ o biến thờ i
gian là tù y ý nhưng chú ng ta nên chọ n sao cho thuậ n tiện vớ i cá c phâ n tích và diễn giả i nếu cầ n.
Chẳ ng hạ n bài tập 3.9 (chương 2) cuố n giá o trình kinh tế lượ ng củ a tá c giả Nguyễn Thành Cả và
Nguyễn Thị Ngọc Miên từ UEH có yêu cầ u sinh viên đặ t biến t bắ t đầ u từ 0 cho bộ số liệu gdp.xls sẽ
gâ y khó sinh viên và là m méo mó mô hình vì khi thự c hiện mô hình có ln(t) thì giá trị ln0 sẽ khô ng
xá c định. Và như vậ y khi thự c hiện trong Eviews hay Stata thì cá c phầ n mềm nà y mặ c định bỏ đi mộ t
quan sá t.

5.4.3 Mô hình xu hướng tuyến tính


Chú ng ta sẽ xét bộ số liệu gdp.xls đượ c miêu tả ở 5.4.2 ở trên. Đâ y là bộ số liệu về tă ng trưở ng GDP
theo 52 quý củ a Việt Nam từ quý 1 nă m 2000 đến quý 4 nă m 2012:

dung <- read.xls("gdp.xls")


View(dung)

Chú ng ta xét mô hình xu hướ ng tuyến tính sau:

R_GDP = β1 + β2T (10)

Trong đó T là biến biểu diễn quý theo trình tự thờ i gian. Như đã phâ n tích ở mụ c trên, chú ng ta
khô ng nên chọ n T bắ t đầ u từ 0 mà nên lấ y T từ 1 trở đi (vì sau nà y cò n có mô hình sử dụ ng biến lnT
nữ a) và thự c hiện ướ c lượ ng (10) trong R:

dung$T = 1:52
summary(lm(R_GDP ~ T, data = dung))

##
## Call:
## lm(formula = R_GDP ~ T, data = dung)
##
221

## Residuals:
## Min 1Q Median 3Q Max
## -36616 -4533 3220 9444 31939
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 57915.5 4496.7 12.88 <2e-16 ***
## T 1888.5 147.7 12.79 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 15980 on 50 degrees of freedom
## Multiple R-squared: 0.7659, Adjusted R-squared: 0.7612
## F-statistic: 163.6 on 1 and 50 DF, p-value: < 2.2e-16

Kết quả nà y chỉ ra rằ ng cứ mộ t nă m GDP củ a Việt Nam sẽ tă ng mộ t lượ ng tuyệt đố i là 1888.5 (khô ng
rõ đơn vị là gì vì hai tá c giả nà y khô ng nó i). Chú ng ta cũ ng có thể đá nh giá hình ả nh về tă ng trưở ng
theo thờ i gian:

ggplot(dung, aes(T, R_GDP)) + geom_line() + geom_point(col = "red")

Dễ dà ng thấ y rằ ng tă ng trưở ng kinh tế củ a Việt Nam có tính chu kì. Cụ thể, so vớ i cá c quý cò n lạ i
GDP là cao nhấ t trong quý 4 và tuâ n theo quy luậ t từ quý 1 đến quý 2 thì tă ng, rồ i lạ i giả m, rồ i lạ i
tă ng. Kiểm định chính thứ c cho tính chấ t chu kì nà y chú ng ta sẽ nghiên cứ u ở cá c chương sau.

Cũ ng có thể tạ o ra cá c hình ả nh độ ng (interactive graph) như sau:

k <-ggplot(dung, aes(T, R_GDP)) + geom_line() + geom_point(col = "red")


library(plotly)
ggplotly(k)

5.4.4 Mô hình tuyến tính – logarit


Để minh họ a cho mô hình nà y chú ng ta xét bộ số liệu có tên TienLuong(Chuong3).xls từ cuố n sá ch
giá o trình kinh tế lượ ng củ a UEH:

dung <- read.xls("TienLuong(Chuong3).xls")


View(dung)
222

Mô hình tuyến tính – logarit, trong tình huố ng vớ i bộ số liệu nà y, là mô hình kiểu như sau:

TienLuong = α + βLKN (11)

Trong đó , biến LNK là logarit cơ số tự nhiên củ a KinhNghiem. Nhưng, trướ c khi lấ y logarit chú ng ta
phả i đá nh giá khoả ng giá trị củ a KinhNghiem vì rằ ng phép lấ y logarit khô ng tồ n tạ i nếu có giá trị bé
hơn hoặ c bằ ng 0. Sử dụ ng lệnh range() ta có :

range(dung$KinhNghiem) # Tìm khoảng giá trị của biến KinhNghiem.

## [1] 0 46

Như vậ y kinh nghiệm có giá trị từ 0 đến 46. Dướ i đâ y là lệnh chỉ thị cho R: (1) chỉ lấ y cá c quan sá t
mà biến KinhNghiem dương, (2) tạ o biến mớ i LKN, và (3) thự c hiện hồ i quy cho mô hình (11):

dung <- subset(dung, dung$KinhNghiem > 0) # Những quan sát có KinhNghiem > 0.
dung$LKN <- log(dung$KinhNghiem) # Tạo biến LNK = ln(KinhNghiem)
summary(lm(TienLuong ~ LKN, data = dung))

##
## Call:
## lm(formula = TienLuong ~ LKN, data = dung) ##
## Residuals:
##Min1Q Median

3QMax
## -4.8794 -0.9070 0.2159 0.8715 2.6079
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) ## LKN
7.89542 0.22239 35.503 < 2e-16 ***
## --- 0.33301 0.08366 3.981 9.15e-05 ***

## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.354 on 236 degrees of freedom
## Multiple R-squared: 0.06292,Adjusted R-squared: 0.05895 ## F-statistic: 15.85 on 1 and

Chú ng ta có thể vẽ đườ ng hồ i quy cho mô hình vớ i khoả ng tin cậ y 95% :

ggplot(dung, aes(LKN, TienLuong)) + geom_point() + geom_smooth(method = "lm")


223

Ý nghĩa củ a cá c ướ c lượ ng thu đượ c là nếu kinh nghiệm tă ng lên 1% thì mứ c lương sẽ tă ng
0.33301/100 = 0.003331 (%). 1% củ a mộ t nă m chừ ng 3.65 ngà y hay xấ p xỉ 3 ngà y 16 tiếng. Nó i
cá ch khá c, kinh nghiệm là m việc tă ng 3 ngà y 16 tiếng thì mứ c lương tă ng 0.003331 (%). Cho nên,
mô hình nà y có thể sẽ diễn đạ t hơn nếu thay đổ i đơn vị củ a biến kinh nghiêm từ nă m sang tuầ n hoặ c
ngà y.

5.4.5 Mô hình nghịch đảo


Xét bộ số liệu Table2_8.xls chứ a cá c thô ng tin về tổ ng chi tiêu (biến expend) và chi chi tiêu cho thự c
phẩ m và đồ uố ng khô ng gồ m đồ uố ng có cồ n (biến fdho) củ a 869 hộ gia đình Hoa Kì trong nă m
1995:

library(readxl)
dung <- read_excel("Table2_8.xls")

Vớ i bộ số liệu nà y, mô hình nghịch đả o sẽ có dạ ng:

fdho = a + b(1/expend) (12)

Ở mô hình nà y, biến độ c lậ p là nghịch đả o củ a tổ ng chi tiêu. Thự c hiện ướ c lượ ng mô hình nà y


chú ng ta có :

summary(lm(sfdho ~ I(expend^-1), data = dung))

##
## Call:
## lm(formula = sfdho ~ I(expend^-1), data = dung) ##
## Residuals:
##Min1Q Median
3QMax
## -0.2989 -0.0421 -0.0112 0.0323 0.4461
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept)
0.07726 0.00401 19.3 <2e-16 ***
## I(expend^-1) 1331.33806 ## 63.95713
--- 20.8 <2e-16 ***

## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
224

##
## Residual standard error: 0.0697 on 867 degrees of
freedom ## Multiple R-squared: 0.333, Adjusted R-squared:
0.332 ## F-statistic: 433 on 1 and 867 DF, p-value: <2e-
16
Hệ số củ a b có ý nghĩa thố ng kê và dương ngụ ý rằ ng khi tổ ng chi tiêu hộ gia đình tă ng lên thì mứ c
chi cho thự c phẩ m sẽ giả m đi. Chú ng ta cũ ng có thể vẽ đườ ng hồ i quy cho mô hình vớ i khoả ng tin
cậ y 95% cho cá c ướ c lượ ng:

theme_set(theme_minimal())
dung %>%
ggplot(aes(x = expend, y = sfdho)) +
geom_point(alpha = 0.3) +
geom_smooth(formular = y ~ 1/x, method = "loess")

5.4.6 Mô hình đa thức


Trở lạ i vớ i bộ số liệu đượ c sử dụ ng ở mụ c 5.4.3. Mô hình đa thứ c là mô hình có dạ ng sau:

R_GDP = a + bT + cT2 (13)

Ướ c lượ ng mô hình nà y trong R:

summary(lm(R_GDP ~ T + I(T^2), data = dung))

##
## Call:
## lm(formula = R_GDP ~ T + I(T^2), data = dung) ##
## Residuals:
##Min1Q Median
3QMax
## -40137 -5080 14588630 26614
##
## Coefficients:
225

## Estimate Std. Error t value Pr(>|t|)


## (Intercept) 63892.47 6891.26 9.272 2.33e-12 ***
## T 1224.38 599.86 2.041 0.0466 *
## I(T^2) ## --- 12.53 10.97 1.142 0.2590

## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 15930 on 49 degrees of freedom ## Multiple R-squared: 0.772
## F-statistic: 82.94 on 2 and 49 DF, p-value: < 2.2e-16

Nếu như mô hình (10) ở mụ c 5.4.3 nó i rằ ng khi t tă ng 1 (quý) thì GDP tă ng 1888.5 và con số nà y là
khô ng đổ i bấ t kể ở quý nà o thì kết quả ướ c lượ ng ở mô hình (13) có nghĩa hoà n toà n khá c. Thự c
vậ y, lấ y đạ o hà m hai vế củ a (13) ta có :
𝑑(𝑅𝐺𝐷𝑃)
𝑑𝑇 = 𝑏 + 2𝑐𝑇 = 1124.38 + 25.06𝑇
Điều nà y có nghĩa là mứ c tă ng trưở ng theo quý sẽ khô ng phả i là mộ t con số khô ng đổ i cho tấ t cả cá c
quý mà là phụ thuộ c và o mố c thờ i gian đượ c chọ n và là mộ t hà m củ a thờ i gian T.

Có hai điểm chú ng ta cầ n chú ý đố i vớ i mô hình đa thứ c. Thứ nhấ t, đâ y là mô hình tuyến tính tham
số chứ khô ng phả i tuyến tính dạ ng hà m. Thứ hai, sử dụ ng mô hình đa thứ c sẽ tồ n tạ i nguy cơ đa
cộ ng tuyến ở mứ c cao vì, chẳ ng hạ n, biến T và T2 thườ ng tương quan rấ t chặ t vớ i nhau.
226

Chương 6: Mô hình hồi quy bội

Mục tiêu của chương này là hướng dẫn các thao tác thực hành trong R cho mô hình hồi quy bội, kiểm
định Wald về sự ràng buộc của các hệ số hồi quy, ước lượng khoảng cho một hệ thức của hệ số hồi quy.

6.1 Thực hiện hồi quy bội trong R và khoảng tin cậy cho các hệ số
Từ mụ c 6.1 đến 6.3 chú ng ta sẽ nghiên cứ u bộ số liệu ch2vd5.WF1. Tô i mặ c định rằ ng cá c bạ n đã
biết cá ch chỉ thị cho R đọ c file Eviews nà y thà nh mộ t data.frame vớ i tên gọ i dung. Giả sử chú ng ta
đá nh giá tá c độ ng củ a thu nhậ p (TN) và tà i sả n (TS) lên chi tiêu (CT) bằ ng mô hình sau:

CT = β1 + β2TN. + β3TS + ui (1)

Uớ c lượ ng mô hình nà y trong R:


## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
setwd("D:/KTLR")
##
library(hexView)
## Residual
dung standard error: 12.27as.data.frame
<- readEViews("ch2vd5.WF1", on 30 degrees= of freedom
TRUE) hoiquyboi <- lm(data = dung, CT ~ T
## Multiple R-squared: 0.9995, Adjusted R-squared: 0.9995
## F-statistic: 3.296e+04 on 2 and 30 DF, p-value: < 2.2e-16
## Call:
## lm(formula = CT ~ TN + TS, data = dung) ##
## Residuals:
##Min1Q Median

3QMax
## -16.026 -10.504 0.373 5.784 32.274
##
## Coefficients:
##Estimate Std. Error t value Pr(>|t|)
## (Intercept) 18.860180 8.832144 2.135 0.041010 *
## TN 0.791224 0.015991 49.481 < 2e-16 ***
## TS ## --- 0.015818 0.003984 3.970 0.000414 ***

Khoả ng tin cậ y củ a hệ số hồ i quy, ví dụ , củ a 𝛽2 đượ c tính theo cô ng thứ c:

𝛽2 − 𝑡𝛼/2 𝑠𝑒(𝛽̂ 2 ) ≤ ≤ 2 + 𝑡𝛼/2 𝑠𝑒(𝛽̂ 2)


𝛽2 𝛽̂
227

Tấ t nhiên chú ng ta có thể á p dụ ng cô ng thứ c nà y cho cá c hệ số beta khá c. Vớ i α = 5% chú ng ta có thể


tính khoả ng tin cậ y 95% cho cả ba hệ số hồ i quy:

confint(hoiquyboi)

## 2.5 % 97.5 %
## (Intercept) 0.822534473 36.89782483
## TN 0.758567036 0.82388141
## TS 0.007681386 0.02395467

R sẽ mặ c định tính khoả ng tin cậ y 95% như lệnh chú ng ta vừ a thự c hiện. Nếu muố n tìm khoả ng tin
cậ y 99% cho cá c hệ số (khô ng hiển thị kết quả ):

confint(hoiquyboi, level = 0.99)

6.2 Khoảng tin cậy cho một biểu thức của hệ số hồi quy
Khoả ng tin cậ y cho, chẳ ng hạ n, biểu thứ c (aβ2 + bβ3) đượ c tính theo cô ng thứ c sau:

(𝑎𝛽̂2 + 𝑏𝛽̂ 3 ) − 𝑡𝛼/2 𝑠𝑒(𝑎𝛽̂ 2 + 𝑏𝛽̂ 3) ≤ 𝑎𝛽2 + 𝑏𝛽3 ≤ (𝑎𝛽̂ 2 + 𝑏𝛽̂ 3) + 𝑡𝛼/2 𝑠𝑒(𝑎𝛽̂ 2 + 𝑏𝛽̂ 3)

Trong đó :

se(𝑎𝛽2̂ + 𝑏𝛽̂ 3) = √𝑎2var(𝛽̂ 2) + 𝑏2var(𝛽̂ 3) − 2𝑎𝑏cov(𝛽̂ 2, 𝛽̂ 3)

Vớ i mô hình OLS thu đượ c, giả sử cầ n tìm khoả ng tin cậ y 95% cho (−𝛽2̂ + 10𝛽̂ 3). Trướ c hết tìm
các giá trị củ a var(𝛽̂ 2 ), var(𝛽̂ 3 ), và cov(𝛽̂ 2 , 𝛽3̂ ):

vcov(hoiquyboi)

##(Intercept) TN TS
## (Intercept) 78.00677420 7.375351e-02 -2.395591e-02
## TN 0.07375351 2.556997e-04 -6.231694e-05
## TS -0.02395591 -6.231694e-05 1.587315e-05
Sau đó thự c hiện mộ t loạ t cá c lệnh:

se<-sqrt(0.00025569967637 + 100*0.00001587315149 + 20*0.00006231694374)


cd<-((-0.79122422 + 10*0.01581803) - abs(qt(0.025, 30))*se)
ct<-((-0.79122422 + 10*0.01581803) + abs(qt(0.025, 30))*se)
cd

## [1] -0.7465574

ct

## [1] -0.5195304
228

Như vậy khoảng tin cậy 95% cho (−𝛽̂ 2+ 10𝛽̂ 3) là (-0.746; -0.519).

6.3 Kiểm định Wald về sự ràng buộc của các hệ số hồi quy
Kiểm định Wald về sự rà ng buộ c củ a cá c hệ số hồ i quy á p dụ ng cho cặ p giả thuyết H0: mβ2 + nβ3 = p;
H1: mβ2 + nβ3 # p trong đó m, n, và p là cá c số thự c.

Chú ng ta có thể kiểm tra giả thuyết rằ ng β2 =50β3 (tứ c là m=1, n = -50, p=0) như sau:

library(AER)
linearHypothesis(hoiquyboi, "TN = 50*TS")

## Linear hypothesis test


##
## Hypothesis:
## TN - 50 TS = 0
##
## Model 1: restricted model
## Model 2: CT ~ TN + TS
##
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 31 4520.3
## 2 30 4520.3 1 0.00033997 0 0.9988

Giá trị Pr(>F) = 0.998 > 5% nên chú ng ta có bằ ng chứ ng thố ng kê để chấ p nhậ n giả thuyết gố c.

Chú ng ta có thể kiểm tra giả thuyết rằ ng β2 =25β3 +0.4 (tứ c là m=1, n = -25, p=0.4) như sau:

linearHypothesis(hoiquyboi, "TN = 25*TS + 0.4")

## Linear hypothesis test


##
## Hypothesis:
## TN - 25 TS = 0.4
##
## Model 1: restricted model
## Model 2: CT ~ TN + TS
##
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 31 4520.5
## 2 30 4520.3 1 0.20249 0.0013 0.971

Giá trị Pr(>F) = 0.971 > 5% nên chú ng ta có bằ ng chứ ng thố ng kê để chấ p nhậ n giả thuyết gố c.
229

6.4 Kiểm định F về việc đồng thời bằng không của nhiều hệ số hồi quy
Đâ y là nhó m cá c kiểm định cho cặ p giả thuyết dạ ng H0: β2i + β2j = 0; H1: β2i + β2j # 0. Chú ng ta sử dụ ng
kiểm định F cho nhữ ng tình huố ng như vậ y.

Từ mụ c 5.4 trở đi chú ng ta sẽ sử dụ ng bộ số liệu ch5bt10.WF1. Chú ng ta chỉ thị cho R đọ c file dữ liệu
dướ i dạ ng mộ t data.frame vớ i tên dung. Chú ng ta xét mô hình sau:

WAGE = β1 + β2EDUC + β3MEDUC + β4SSIBS + ui (2)

Giả sử chú ng ta muố n kiểm định cặ p giả thuyết H0: β23 + β24 = 0; H1: β23 + β24 # 0. Nếu giả thuyết Ho
đú ng thì mô hình (2) trở thà nh:

WAGE = β1 + β2EDUC + wi (3)

Lú c nà y mô hình (2) gọ i là mô hình khô ng bị giớ i hạ n (Unrestricted Model) cò n mô hình (3) gọ i là


mô hình bị giớ i hạ n (Restricted Model). Để thự c hiện kiểm định F chú ng ta là m theo ba bướ c sau.

Bướ c thứ nhấ t chạ y cả hai mô hình (2) và (3) nhằ m thu đượ c R2ur và R2r trong đó R2ur và R2r lầ n lượ t
là R2 củ a mô hình (2) và (3).

Bướ c thứ hai chú ng ta tính thố ng kê F theo cô ng thứ c sau:


(𝑅2 − 𝑅2)/𝑚
𝐹= 𝑢𝑟 𝑟
(1 − 𝑅𝑢𝑟
2
)/(𝑛 − 𝑘 )
Trong đó m là số biến bị bỏ ở mô hình (3) so vớ i mô hình (2), n là số quan sá t, k là số biến số trong
mô hình khô ng bị giớ i hạ n. Trong tình huố ng củ a chú ng ta thì n = 32, m=2, k = 4, α = 5% (mặ c định),
cò n Rur và Rr lầ n lượ t là R2 củ a mô hình khô ng bị và bị giớ i hạ n.

Bướ c cuố i cù ng chú ng ta so sá nh thố ng kê F tính ở bướ c thứ hai vớ i Fα(m,n-k). Nếu F > Fα(m,n-k)
thì chú ng ta có bằ ng chứ ng thố ng kê bắ c bỏ Ho, nếu khô ng chú ng ta có bằ ng chứ ng thố ng kê chấ p
nhậ n H1.

Chú ng ta tuâ n theo ba bướ c nà y thự c hiện kiểm định nà y trong R như sau (chỉ hiển thị phầ n kết quả
chứ a R2):

dung <- readEViews("D:/KTLR/ch5bt10.WF1 ", as.data.frame = TRUE)


luong <- lm(data = dung, WAGE ~ EDUC + MEDUC + SSIBS)
summary(luong)
## Residual standard error: 361 on 28 degrees of freedom
## Multiple R-squared: 0.1687, Adjusted R-squared: 0.07965
## F-statistic: 1.894 on 3 and 28 DF, p-value: 0.1535

luonggh <- lm(data=dung,WAGE~EDUC)


summary(luonggh)
## Residual standard error: 354.5 on 30 degrees of freedom
## Multiple R-squared: 0.1412, Adjusted R-squared: 0.1126
## F-statistic: 4.933 on 1 and 30 DF, p-value: 0.03405
230

Ta tính thố ng kê F:

((0.1687 - 0.1412) / 2) / ((1 - 0.1687) / (32 - 4))

## [1] 0.46313

Kế tiếp tính F0.05(2,28-4) :

qf(0.95, df1 = 2, df2 = 32 - 4)

## [1] 3.340386

Do 0.463 < 3.340 nên chú ng ta chưa có bằ ng chứ ng thố ng kê để bắ c bỏ H0.

Chú ng ta có thể tính kiểm định F cá ch khá c trong R nhanh hơn và chắ c chắ n khô ng gặ p sai só t như
sau:

anova(luonggh, luong)

## Analysis of Variance Table ##


## Model 1: WAGE ~ EDUC
## Model 2: WAGE ~ EDUC + MEDUC + SSIBS

## Res.Df RSS Df Sum of Sq F Pr(>F)


## 1 30 3770332
## 2 28 3649563 2 120769 0.4633 0.634

Chú ng ta vẫ n thu đượ c F = 0.463 như ở trên. Và cá ch nà y cũ ng khô ng cầ n bạ n phả i tìm F 0.05(2,28-4) mà
chỉ cầ n so sá nh Pr(>F) = 0.634 vớ i 5%. Do Pr(>F) = 0.634 > 5% nên chú ng ta chưa có bằ ng chứ ng
thố ng kê bắ c bỏ Ho.

Chú ng ta có thể sử dụ ng kiểm định Wald trong tình huố ng nà y:

linearHypothesis(luong, c("MEDUC = 0", "SSIBS =0"))

## Linear hypothesis test ## Hypothesis:


## MEDUC = 0 ## SSIBS = 0
## Model 1: restricted model
## Model 2: WAGE ~ EDUC + MEDUC + SSIBS

## Res.Df RSS Df Sum of Sq F Pr(>F)


## 1 30 3770332
## 2 28 3649563 2 120769 0.4633 0.634

Chú ng ta cũ ng có thể tính thố ng kê F thô ng qua RSS(R) và RSS(U) củ a mô hình bị giớ i hạ n và khô ng
bị giớ i hạ n theo cô ng đã biết ở mụ c 5.4.1:
231

(𝑅𝑆𝑆𝑅 − 𝑅𝑆𝑆𝑈𝑅)/𝑚
𝐹= ~𝐹𝑚,(𝑛−𝑘)
𝑅𝑆𝑆𝑈𝑅 /(𝑛 − 𝑘)
Trướ c hết ta cầ n tính cá c
RSS:

anova(luong)

## Analysis of Variance Table ##


## Response: WAGE

## Df Sum Sq Mean Sq F value Pr(>F)


## EDUC ## MEDUC
1 619924 619924 4.7562 0.03775 *
## SSIBS 1 43067 43067 0.3304 0.57000
1 77702 77702 0.5961 0.44652
130342
## Residuals 28 3649563
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

anova(luonggh)

## Analysis of Variance Table ##


## Response: WAGE
##Df Sum Sq Mean Sq F value Pr(>F)
## EDUC1 619924
619924 4.9326 0.03405 *
## Residuals 30 3770332 125678
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Thay số RSS(R) = 3770332, RSS(U) = 3649563, k =4, n = 32 ta cũ ng có F = 0.463.

6.5 Mối liên hệ hình chữ U ngược giữa giáo dục và mức lương
Trong kinh tế họ c lao độ ng ngườ i ta thườ ng quan tâ m đến mô hình sau về tá c độ ng củ a giá o dụ c
(EDUC) lên logarit cơ số tự nhiên củ a lương (lnWAGE):

lnWAGE = β1 + β2EDUC + β3EDUC2. + β4MEDUC. + β5SSIBS. + ui (3)

Cá c lý thuyết củ a kinh tế họ c lao độ ng chỉ ra rằ ng β3 < 0, β2 > 0 đồ ng thờ i hai hệ số hồ i quy nà y phả i
có ý nghĩa thố ng kê vớ i ngụ ý về mố i quan hệ hình chữ U ngượ c giữ a EDUC và ln(WAGE). Nghĩa là ,
ban đầ u số nă m họ c tă ng dẫ n đến mứ c lương cũ ng tă ng. Nhưng khi nă m họ c đạ t mộ t ngưỡ ng nà o đó ,
tá c độ ng củ a số nă m đi họ c lên mứ c lương lạ i ngượ c lạ i. Nó i cá ch khá c, vượ t qua ngưỡ ng nà y thì
mứ c lương tuâ n theo quy luậ t cậ n biên giả m dầ n so vớ i số nă m đi họ c.

Trong R chú ng ta thự c hiện ướ c lượ ng cho (3) như sau:

lnluong <- lm(data = dung, log(WAGE) ~ EDUC + I(EDUC^2) + MEDUC + SSIBS)


summary(lnluong)
232

##
## Call:
## lm(formula = log(WAGE) ~ EDUC + I(EDUC^2) + MEDUC + SSIBS, data = dung)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.25091 -0.10462 0.05347 0.07849 0.15292
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 8.335686 0.822291 10.137 1.06e-10 ***
## EDUC -0.049861 0.122870 -0.406 0.688
## I(EDUC^2) 0.002788 0.004501 0.620 0.541
## MEDUC -0.004551 0.006258 -0.727 0.473
## SSIBS -0.011027 0.012458 -0.885 0.384
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.1147 on 27 degrees of freedom
## Multiple R-squared: 0.1711, Adjusted R-squared: 0.04835
## F-statistic: 1.394 on 4 and 27 DF, p-value: 0.2626

Ở đâ y cá c bạ n chú ý phả i gõ I(EDUC^2) để tạ o biến mớ i EDUC2 trong R. Kết quả cho thấ y rằ ng hệ số
củ a EDUC2 là dương – ngượ c lạ i nhữ ng phá t biểu củ a kinh tế họ c lao độ ng. Nguyên nhâ n có thể là mô
hình cò n thiếu mộ t số biến số quan trọ ng. Chú ng ta sẽ nghiên cứ u vấ n đề nà y ở cá c chương sau.

6.6 hồi quy chuẩn hóa và vấn đề so sánh tác động của các biến độc lập
Mộ t câ u hỏ i đặ t ra là , ví dụ vớ i mô hình hồ i quy ở mụ c 6.1, là so sá nh mứ c độ ả nh hưở ng (hay tá c
độ ng) củ a cá c biến độ c lậ p lên biến phụ thuộ c. Có thể thấ y mứ c chênh lệch giữ a hệ số hồ i quy củ a
biến TN và TS là 50 (0.791224 so vớ i 0.015818) nên thườ ng đưa ra kết luậ n sai trá i rằ ng tá c độ ng
củ a thu nhậ p lên biến CT mạ nh gấ p 50 lầ n so vớ i tá c độ ng củ a biên TS lên CT. Để so sá nh đú ng vai
trò , mứ c độ ả nh hưở ng củ a cá c biến độ c lậ p lên biến phụ thuộ c chú ng ta phả i sử dụ ng hồi quy
chuẩn hóa (Gujarati & Porter, 2009). Vớ i tình huố ng ở mụ c 6.1, thự c hiện hồ i quy chuẩ n hó a trong
R:

summary(lm(scale(CT) ~ scale(TN) + scale(TS), data = dung))

##
## Call:
## lm(formula = scale(CT) ~ scale(TN) + scale(TS), data = dung) ##
## Residuals:
##Min1Q
Median3QMax
## -0.02876 -0.01885 0.00067 0.01038 0.05791
##
## Coefficients:
233

## Estimate Std. Error t value Pr(>|t|)


## (Intercept) 1.930e-16 3.834e-03 0.00 1.000000
## scale(TN) 9.269e-01 1.873e-02 49.48 < 2e-16 ***
## scale(TS) ##7.437e-02
--- 1.873e-02 3.97 0.000414 ***

## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.02203 on 30 degrees of freedom ## Multiple R-squared: 0.9

0.92690 / 0.07437

## [1] 12.46336

Că n cứ và o hệ số hồ i quy chuẩ n hó a, có thể thấ y tá c độ ng củ a biến TN so vớ i tá c độ ng củ a biến TS


lên CT thự c tế là chừ ng 12.5 lầ n. Để hiểu rõ hơn kết luậ n nà y chú ng ta cầ n đọ c đượ c ý nghĩa củ a hệ
số hồ i quy chuẩ n hó a. Cụ thể ở đâ y, ví dụ , că n cứ và o hệ số hồ i quy chuẩ n hó a củ a TN có thể nó i khi
TN tă ng 1 sai số chuẩ n (a standard deviation increase) thì CT tă ng 0.9269.

Nhắ c lạ i rằ ng trong hồ i quy chuẩ n hó a, hệ số chặ n luô n bằ ng 0 vớ i Pr(>|t|) luô n bằ ng 1. Cũ ng cầ n


chú ý rằ ng cá c tiêu chí đá nh giá mô hình như cá c giá trị Pr(>|t|) (trừ hệ số chặ n), R 2 hay thố ng kê F
đều khô ng thay đổ i. Vì hồ i quy chuẩ n hó a thự c chấ t là hồ i quy khô ng có hệ số chặ n nên có thể thu
đượ c kết quả trên theo mộ t cá ch khá c như sau (khô ng hiển thị kết quả ):

summary(lm(scale(CT) ~ 0 + scale(TN) + scale(TS), data = dung))

6.7 Kiểm định LM, LR trong trường hợp kích cỡ mẫu là lớn
Nếu phầ n dư là phâ n phố i chuẩ n thì cá c thố ng kê t và F đượ c sử dụ ng vớ i mọ i kích thướ c mẫ u. Tuy
nhiên, nếu phầ n dư khô ng tuâ n theo quy luậ t chuẩ n thì thố ng kê t và F sẽ khô ng tuâ n theo quy luậ t
Student, Fisher vớ i kích thướ c mẫ u là bé do vậ y sử dụ ng thố ng kê t và F có thể khô ng á p dụ ng đượ c
trong tình huố ng nà y. Nhưng nếu kích thướ c mẫ u là lớ n thì chú ng ta có thể sử dụ ng thố ng kê t và F
bấ t kể phầ n dư có phâ n phố i chuẩ n hay khô ng.

Vớ i kích thướ c mẫ u là lớ n, ngoà i việc sử dụ ng thố ng kê F như đã đượ c trình bà y ở cá c mụ c trên


chú ng ta có thể sử dụ ng: (1) Wald Test, (2) Likelihood Ratio Test, và (3) Lagrange Multiplier Test.
Ba kiểm định nà y khô ng nhữ ng sử dụ ng đượ c cho cá c mô hình tuyến tính mà cò n đượ c sử dụ ng cho
cá c mô hình phi tuyến tính.

Để đả m bả o vấ n đề kích cỡ mẫ u là lớ n, trong mụ c nà y chú ng ta sử dụ ng bộ dữ liệu ch4bt8.wf1 vớ i


935 quan sá t. Con số nà y trong cá c nghiên cứ u định lượ ng thự c tế thì vẫ n chưa đượ c coi là lớ n tuy
nhiên vớ i mụ c đích minh họ a chú ng ta tạ m sử dụ ng bộ dữ liệu nà y. Chú ng ta nhậ p bộ dữ liệu nà y
và o R như sau:

trang <- readEViews("D:/KTLR/ch4bt8.wf1", as.data.frame = TRUE)


attach(trang)

Chú ng ta nghiên cứ u hai mô hình sau:


234

WAGE = β1 + β2EDUC + β3EXPER. + β4FEDUC + β5MEDUC + β6IQ. + ui (mô hình 1)

WAGE = γ1 + γ2EDUC + γ3EXPER + γ4IQ. + ei (mô hình 2)

Để thự c hiện Likelihood Ratio Test (LR Test) trướ c hết chú ng ta cà i đặ t và sử dụ ng package có tên
lmtest bằ ng cá ch gõ install.packages(“lmtest”) tạ i cử a sổ lệnh củ a R. Sau đó chú ng ta thự c hiện
ướ c lượ ng cho hai mô hình trên như sau:

mohinh1 <- lm(data = trang, WAGE ~ EDUC + EXPER + FEDUC + MEDUC + IQ)
mohinh2 <- lm(data = trang, WAGE ~ EDUC + EXPER + IQ)

Thự c hiện LR Test trong R:

lrtest(mohinh1, mohinh2)

## Likelihood ratio test ##


## Model 1: WAGE ~ EDUC + EXPER + FEDUC + MEDUC + IQ
## Model 2: WAGE ~ EDUC + EXPER + IQ

## #Df LogLik Df Chisq Pr(>Chisq)


## 1 7 -6849.9
## 2 5 -6855.7 -2 11.697 0.002884 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Chú ng ta thấ y giá trị củ a Pr(>Chisq) = 0.00288 < 5% (tương ứ ng vớ i χ 2qs = 11.697) nên chú ng ta có
bằ ng chứ ng thố ng kê để bắ c bỏ giả thiết rằ ng hai hệ số củ a FEDUC và MEDUC đồ ng thờ i bằ ng 0.

Chú ng ta có thể tính trự c tiếp LR Test bằ ng cá ch sử dụ ng thố ng kê λ (Gujarati & Porter, 2009) mà
khô ng cầ n sử dụ ng package lmtest. Giá trị λ đượ c tính theo cô ng thứ c sau:

λ= 2(ULLF – RLLF) (4)

Trong đó ULLF và RLLF lầ n lượ t là giá trị Log Likehood củ a mô hình khô ng giớ i hạ n (mô hình 1) và
mô hình bị giớ i hạ n (mô hình 2). Vớ i n đủ lớ n thì thố ng kê λ tuâ n theo phâ n phố i χ2 vớ i số bậ c tự do
bằ ng số biến bị loạ i khỏ i mô hình 1. Trong mộ t số phầ n mềm như Eviews, khi chạ y cá c mô hình hồ i
quy thì nó luô n hiển thị ULLF và RLLF. Trong R chú ng ta có thể gọ i giá trị ULLF như sau:

logLik(mohinh1)

## 'log Lik.' -6849.9 (df=7)

Là m tương tự để tìm RLLF:

logLik(mohinh2)

## 'log Lik.' -6855.749 (df=5)

Thay và o cô ng thứ c (4) chú ng ta tính ngay trong R như sau:


235

LRtest <- 2*(-6849.9003 + 6855.7489)


LRtest

## [1] 11.6972

Giá trị 11.6972 nà y chính là giá trị ở cộ t Chisq. Bướ c cuố i cù ng là chú ng ta cầ n so sá nh λ = 11.6972
nà y vớ i χ20.95 vớ i số bậ c tự do trù ng vớ i số biến bị loạ i bỏ ở mô hình 2 (hay df = 2). Chú ng ta tính hai
giá trị nà y trong R:

qchisq(0.95, 2)

## [1] 5.991465

Do giá trị 11.6972 > 5.99 nên λ thuộ c miền bắ c bỏ . Nghĩa là chú ng ta có bằ ng chứ ng thố ng kê để bắ c
bỏ giả thiết rằ ng hai hệ số hồ i quy củ a FEDUC và MEDUC đồ ng thờ i bằ ng 0.

Chú ý rằ ng cá c nhà kinh tế lượ ng – thố ng kê đã chứ ng minh rằ ng (4) có thể viết lạ i như sau:

-2ln(λ)= n[ln(RRSS) – ln(RLLF)] (5)

Trong đó RRSS và URSS lầ n lượ t là tổ ng phầ n dư bình phương củ a mô hình 2 (mô hình bị giớ i hạ n)
và mô hình 1 (mô hình khô ng bị giớ i hạ n) cò n n là số quan sá t. Nếu chú ng ta sử dụ ng (5) để tính
toá n thì chú ng ta cũ ng rú t ra cù ng mộ t kết luậ n mà khô ng cầ n biết cá c giá trị Log Likehood củ a cá c
mô hình.

Ngườ i ta cũ ng chứ ng minh đượ c hai thố ng kê Wald (Wald Test) và Lagrange Multiplier (LM Test)
tuâ n theo phâ n phố i χ2 như sau:
(𝑛 − 𝑘)(RRSS − URSS)
Wald Statistic (W) = ~ χ2
URSS 𝑟

(𝑛 − 𝑘 + 𝑟)(RRSS − URSS)
Lagrange Multiplier Statistic (LM) = ~ χ2
RRSS 𝑟

Trong đó k là số biến số độ c lậ p trong mô hình khô ng bị giớ i hạ n cò n r là số biến số bị loạ i bỏ từ mô


hình bị giớ i hạ n, n là số quan sá t.

Ngườ i ta cũ ng chỉ ra mố i liên hệ giữ a ba kiểm định (hay ba thố ng kê) nà y là :

W ≥ LR ≥ LM (8)
Nghĩa là khi n lớ n đến vô cù ng thì ba thố ng kê nà y hộ i tụ về cù ng mộ t giá trị. Nó i cá ch khá c, vớ i n là
bé thì mộ t giả thuyết có thể bị bắ c bỏ bở i kiểm định Wald nhưng khô ng bị bắ c bỏ bở i kiểm định LM.
Chú ng ta có thể tính trự c tiếp kiểm định (thố ng kê) Wald theo như (6) sau:

phandu1 <- residuals(mohinh1)


URSS <- sum(phandu1^2)
phandu2 <- residuals(mohinh2)
RRSS <- sum(phandu2^2)
kiemdinhw <- (930 / URSS)*(RRSS - URSS)
kiemdinhw
236

## [1] 11.70765

Giá trị củ a thố ng kê Wald = 11.7076 cao hơn khô ng đá ng kể so vớ i λ = 11.6972 mà chú ng ta đã tính
ở trên. Ngoà i ra 11.7076 > χ20.95;2 = 5.99 nên chú ng ta bắ c bỏ giả thuyết rằ ng hai hệ số củ a FEDUC và
MEDUC đồ ng thờ i bằ ng 0.

Tương tự chú ng ta có thể tính LM Test theo (7) như sau:

LM <- (932 / RRSS)*(RRSS - URSS)


LM

## [1] 11.58696

Tương tự ta cũ ng thấ y 11.587 > χ20.95;2 = 5.99 nên chú ng ta bắ c bỏ giả thuyết rằ ng hai hệ số củ a
FEDUC và MEDUC đồ ng thờ i bằ ng 0.

Mộ t lầ n nữ a chú ng ta có thể kiểm tra lạ i bấ t đẳ ng thứ c (8) về mố i liên hệ giữ a ba thố ng kê nà y vớ i


ngụ ý rằ ng W là thố ng kê Wald, LR là thố ng kê λ, và LM là thố ng kê Lagrange Multiplier:

W = 11.76 > LR = 11.697 > LM = 11.587

Tấ t nhiên cá c bạ n hoà n toà n có thể sử dụ ng kiểm định F như đã trình bà y ở mụ c 5.4 củ a chương nà y.

6.8 Gợi ý trả lời một sô bài tập chương 2 thuộc cuốn giáo trình của NEU
Chú ng ta sẽ trả lờ i mộ t số khía cạ nh lý thuyết, thự c tiễn, cũ ng như thự c hà nh trong R vớ i cá c bà i tậ p
từ 2.4 đến 2.6 (trang 120 và 131 sá ch giá o trình củ a NEU). Theo quan điểm cá nhâ n củ a tô i, nguồ n
gố c số liệu đá ng tin cũ ng như giả i thích ở mứ c tố i thiểu cá c biến là cầ n thiết cho nghiên cứ u kinh tế
lượ ng. Rấ t tiếc sá ch củ a NEU nhiều bộ số liệu thì khô ng có (nhưng sá ch vẫ n nó i có ) lạ i cò n khô ng có
thô ng tin về dữ liệu. Vì lý do nà y, để trả lờ i cho câ u hỏ i củ a cá c bà i tậ p từ 2.4 đến 2.6 chú ng ta nghiên
cứ u bộ số liệu hoà n toà n tương tự có tên WAGE1.DTA lấ y từ sá ch củ a Wooldridge (2013).

Trướ c hết cầ n nhắ c lạ i mộ t lý thuyết khá phổ biến về quy luậ t cậ n biên giả m dầ n củ a số nă m đi họ c
hoặ c kinh nghiệm củ a kinh tế họ c lao độ ng (Labour Economics). Theo lý thuyết nà y thì mứ c lương
sẽ tă ng cù ng vớ i số nă m đi họ c hoặ c kinh nghiệm nhưng sau đó mố i quan hệ nà y đổ i chiều nếu số
nă m đi họ c hoặ c kinh nghiệm vượ t mộ t ngưỡ ng nà o đó . Để kiểm định lý thuyết kinh tế nà y, chú ng ta
có thể xét mô hình sau:

wage = β0 + β1exper + β2exper2 (mô hình 1)

Trong đó wage là mứ c lương củ a ngườ i lao độ ng, exper là số nă m kinh nghiệm. Nếu lý thuyết nà y là
đú ng thì chú ng ta kì vọ ng rằ ng hệ số hồ i quy củ a exper là dương và hệ số hồ i quy củ a exper2 là â m.
Chú ng ta sử dụ ng bộ dữ liệu WAGE1.DTA để đá nh giá mô hình nà y:

setwd("D:/KTLR")
library(haven)
trang <- read_stata("WAGE1.DTA")
names(trang)

You might also like