Tìm kiếm (search)

Thứ Hai, 22 tháng 7, 2019

PHÂN TÍCH HỒI QUY THEO KIỂU MACHINE LEARNING BẰNG CÔNG CỤ SSV

Chào các Bạn

Hôm nay, Tôi chia sẻ với các bạn về ứng dụng bộ công cụ SSV của Tôi trong việc phân tích Hồi Quy Tuyến Tính theo kiểu Machine Learning.

Công cụ SSV lấy ở đây

Dữ liệu:
Sử dụng dữ liệu dân số Việt Nam cho trên trang Web của Tổng Cục Thống kê "https://www.gso.gov.vn/default.aspx?tabid=714" tải về như sau:

Năm Tổng số Nam Nữ Thành thị Nông thôn
1990 66.016,70 32.202,80 33.813,90 12.880,30 53.136,40
1991 67.242,40 32.814,30 34.428,10 13.227,50 54.014,90
1992 68.450,10 33.424,20 35.025,90 13.587,60 54.862,50
1993 69.644,50 34.028,30 35.616,20 13.961,20 55.683,30
1994 70.824,50 34.633,20 36.191,30 14.425,60 56.398,90
1995 71.995,50 35.237,40 36.758,10 14.938,10 57.057,40
1996 73.156,70 35.857,30 37.299,40 15.419,90 57.736,80
1997 74.306,90 36.473,10 37.833,80 16.835,40 57.471,50
1998 75.456,30 37.089,70 38.366,60 17.464,60 57.991,70
1999 76.596,70 37.662,10 38.934,60 18.081,60 58.515,10
2000 77.630,90 38.165,30 39.465,60 18.725,40 58.905,50
2001 78.620,50 38.656,40 39.964,10 19.299,10 59.321,40
2002 79.537,70 39.112,20 40.425,50 19.873,20 59.664,50
2003 80.467,40 39.535,00 40.932,40 20.725,00 59.742,40
2004 81.436,40 40.042,00 41.394,40 21.601,20 59.835,20
2005 82.392,10 40.521,50 41.870,60 22.332,00 60.060,10
2006 83.311,20 40.999,00 42.312,20 23.045,80 60.265,40
2007 84.218,50 41.447,30 42.771,20 23.746,30 60.472,20
2008 85.118,70 41.956,10 43.162,60 24.673,10 60.445,60
2009 86.025,00 42.523,40 43.501,60 25.584,70 60.440,30
2010 86.947,40 42.993,50 43.953,90 26.515,90 60.431,50
2011 87.860,40 43.446,80 44.413,60 27.719,30 60.141,10
2012 88.809,30 43.908,20 44.901,10 28.269,20 60.540,10
2013 89.759,50 44.364,90 45.394,60 28.874,90 60.884,60
2014 90.728,90 44.758,10 45.970,80 30.035,40 60.693,50
2015 91.709,80 45.224,00 46.485,80 31.067,50 60.642,30
2016 92.692,20 45.753,40 46.938,80 31.926,30 60.765,90
Sơ bộ 2017 93.671,60 46.253,00 47.418,60 32.813,40 60.858,20

Yêu cầu:
Phân tích và xây dựng mô hình hồi quy cho Dân Số Việt Nam và ước tính Dân Số Việt Nam đến năm 2022.

Phương pháp
1. Nghiên cứu dữ liệu : Cột năm có đơn vị tăng dần theo chu kỳ 1 năm , Cột Tổng số là số lượng dân số (nghìn), Nếu theo yêu cầu bài thì chỉ cần quan tâm đến 2 biến "Năm và Tổng Số" và Y = Tổng số, X = Năm.

2. Tách dữ liệu ra làm 2 phần
   a. Phần "training" từ năm 1990 đến 2013 => phần này dùng để phân tích và xây dựng mô hình. (Huấn luyện Máy )

   b. Phần  "testing" từ năm 2014 đến 2017 => phần này dùng để đánh giá mô hình tiên lượng hồi quy. (Đánh giá sau Huấn Luyện)

<training>
Total Year
66016.00 1990
67242.40 1991
68450.10 1992
69644.50 1993
70824.50 1994
71995.50 1995
73156.70 1996
74306.90 1997
75456.30 1998
76596.70 1999
77630.90 2000
78620.50 2001
79537.70 2002
80467.40 2003
81436.40 2004
82392.10 2005
83311.20 2006
84218.50 2007
85118.70 2008
86025.00 2009
86947.40 2010
87860.40 2011
88809.30 2012
89759.50 2013
<testing> thêm các năm 2018 đến 2022 vào dữ liệu này.
Total Year
90728.90 2014
91709.80 2015
92692.20 2016
93671.60 2017
2018
2019
2020
2021
2022

2. Phân tích Hồi Quy tuyến tính đơn biến với SSV
- Đọc dữ liệu "training" vào R thông qua việc Copy (control + C) và chạy hàm sau (để đọc dữ liệu từ Clipboard (sau khi Control + C thì dữ liệu được máy tính lưu trong "Clipboard") ta chỉ cần yêu cầu R đọc dữ liệu từ Clipboard ra cho nhanh.

training <- read.delim("clipboard")
attach(training)

Note: Dữ liệu đã được đọc vào đối tượng tên "training "

- Khởi động bộ công cụ SSV

require(SSV)

- Chạy hàm hồi quy Đơn Biến của SSV

slreg(response = training $Total, predictor = training $Year)

- Kết quả:

---------------------------------------------------------------------------------------------------
Call:
stats::lm(formula = dframe)

Residuals:
    Min      1Q  Median      3Q     Max 
-832.76 -323.30   40.86  330.29  584.52 

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)    
(Intercept)     -1.962e+06  2.519e+04  -77.91   <2e-16 ***
`training$Year`  1.020e+03  1.259e+01   81.03   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 426.8 on 22 degrees of freedom
Multiple R-squared:  0.9967, Adjusted R-squared:  0.9965 
F-statistic:  6565 on 1 and 22 DF,  p-value: < 2.2e-16

the Regression model (MÔ HÌNH CHO Yhat)
training$Total  =  -1962478.662261  +  1019.762522 * training$Year

Các biểu đồ của slreg

------------------------------------------------------------------------------------------------------

- Phân tích kết quả
training$Year`  1.020e+03  1.259e+01   81.03   <2e-16 ***
là có ý nghĩa thống kễ khi Pvalue < 0.05 => vậy biến Year là có ảnh hưởng đến Y

Multiple R-squared:  0.9967, Adjusted R-squared:  0.9965 
Biến Year giải thích tới 99.67% sự thay đổi ở Y (Total) => Rất cao.

F-statistic:  6565 on 1 and 22 DF,  p-value: < 2.2e-16
Pvalue của ANOVA cũng < 0.05 => Hàm hồi quy là có ý nghĩa thống kê (có thể dùng để tiên lượng)

Đây là Mô Hình (hàm) Hồi Quy dùng trong ước tính Dân Số
training$Total  =  -1962478.662261  +  1019.762522 * training$Year

- Phân tích biểu đồ:
Biểu đồ "Simple Linear Regression" là X và Y tương quan rất tuyến tính (cùng tăng).

Biểu đồ "Scatter Plot of Residuals " thì Residual tính từ công thức Y - Yhat, thì những năm đầu của bộ dữ liệu, Mô hình ước tính (Yhat) hơi cao chút so với thực tế (Y), những năm giữa giữa thì lại ước tính (Yhat) hơi thấp chút so với thực tế (Y) và đến những năm 2010 thì lại ước tính hơi thấp chút so với thực tế. Sự sai lệch đó gọi là phần dư (Residual).

Biểu đồ Histogram và Boxplot là vẽ sự phân bố của Residuals, nhìn thì hơi rải rác về phía âm.


3. Dùng Mô Hình Hồi Quy (bên trên) để ước tính Dân Số Việt Nam từ năm 2014 đến 2022.
- Lý luận: Dùng dữ liệu "testing" để thẩm tra xem hàm có ước lượng đúng dân số VN cho các năm 2014, 2015, 2016, 2017 (đã biết) và đồng thời ước lượng DSVN năm 2018 ~ 2022 xem sao.

<testing>
Total Year
90728.90 2014
91709.80 2015
92692.20 2016
93671.60 2017
2018
2019
2020
2021
2022
- Copy bộ dữ liệu "testing" bằng Control + C 
- Chạy hàm để đọc dữ liệu từ Clipboard  và gán vào "testing"

testing <- read.delim("clipboard")

Dữ liệu trong đối tượng "testing" có 2 Cột Total và Year (tên phải giống tên của Hàm Hồi Quy)
testing
    Total      Year
1 90728.9 2014
2 91709.8 2015
3 92692.2 2016
4 93671.6 2017
5      NA    2018
6      NA   2019
7      NA   2020
8      NA   2021
9      NA   2022


- Chạy hàm ước tính Dân Số thông qua lệnh sau với 95% độ tin cậy.

uoctinhDS <- predict_ci(Total ~ Year, data=training, p.points = testing, p.level = 0.95)
uoctinhDS 

Kết quả ước tính:
> uoctinhDS
    Total       Year      fit          lwr              upr
1 90728.9 2014 91323.06 90950.10  91696.01            
2 91709.8 2015 92342.82 91946.83  92738.81
3 92692.2 2016 93362.58 92943.20  93781.96
4 93671.6 2017 94382.34 93939.26  94825.42
5      NA   2018 95402.11 94935.07  95869.14
6      NA   2019 96421.87 95930.66  96913.08
7      NA   2020 97441.63 96926.06  97957.20
8      NA   2021 98461.39 97921.30  99001.49
9      NA   2022 99481.16 98916.40 100045.91

Đọc kết quả ước tính:
1: 2014 : Dân số thực là 90728.9 / ước tính là trong khoảng từ 90950 ~ 91696
2: 2015: 91709.8 /  91946.83 ~ 92738.81
3: 2016: 92692.2 /  92943.20  93781.96
4: 2017: 93671.6 / 93939.26  94825.42

Theo công bố gần đây của Chính phủ về DSVN thì ta có...

Ngày 11/7/2019 vừa qua, báo cáo sơ bộ cuộc Tổng điều tra dân số và nhà ở đã được Tổng cục thống kê công bố, theo đó dân số Việt Nam hiện hơn 96,2 triệu người."


Như vậy Hàm hồi quy cũng chấp nhận được.

Note: Cái này chỉ để tham khảo nhé, Anh Chị Em có trao đổi xây dựng thì đóng góp nhé.

<Viet Nguyen - ngvietlg@gmail.com>

Không có nhận xét nào:

Đăng nhận xét