Thông tin tài liệu
Ứng dụng phần mềm R nghiên cứu thống kê
TRƯỜNG ĐẠI HỌC CẦN THƠ
KHOA KHOA HỌC TỰ NHIÊN
BỘ MÔN TOÁN
------------
LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC
DÙNG PHẦN MỀM R
NGHIÊN CỨU THỐNG KÊ
GIÁO VIÊN HƯỚNG DẪN
SINH VIÊN THỰC HIỆN
TS. NGUYỄN HỮU KHÁNH
LÊ CHÍ TÀI
(BỘ MÔN TOÁN – KHOA KHTN)
NGÀNH: TOÁN ỨNG DỤNG
CẦN THƠ – 12/2013
i
Ứng dụng phần mềm R nghiên cứu thống kê
LỜI CẢM ƠN
---------
Tôi xin tỏ lòng kính trọng và biết ơn sâu sắc tới Thầy Nguyễn Hữu
Khánh, người đã tận tình hướng dẫn, chỉ bảo khích lệ và động viên tôi trong
suốt quá trình làm luận văn. Bên cạnh đó thầy đã cung cấp cho tôi nhiều tài
liệu quý giá giúp tôi hiểu sâu hơn về đề tài của mình hơn.
Để đạt được kết quả như ngày hôm nay, tôi xin gửi lời cảm ơn đến toàn
thể quý thầy cô của bộ môn Toán - Khoa Khoa học tự nhiên của trường đại
học Cần Thơ đã trang bị cho tôi những kiến thức cơ bản, các kỹ năng cần thiết
trong suốt bốn năm học tập tại trường, đây chính là hành trang quý báu, giúp
tôi không chỉ thực hiện tốt đề tài tốt nghiệp mà còn giúp tôi tự tin vững bước
trên con đường sự nghiệp sắp tới.
Tôi xin cảm ơn quý thầy cô trong Hội đồng bảo vệ đã dành thời gian
xem xét, chỉnh sửa những sai xót cũng như đóng góp ý kiến những mặt còn
hạn chế của đề tài để đề tài được hoàn chỉnh hơn.
Tôi xin cảm ơn các bạn, những người luôn sát cánh cùng tôi, giúp đỡ
động viên tôi trong suốt quá trình vừa qua.
Cuối cùng, tôi xin cảm ơn đến gia đình tôi, nhừng người đã dạy dỗ,
khuyến khích, động viên và tạo mọi điều kiện tốt nhất cho tôi trong quá trình
học tập.
Dù đã cố gắng hết sức cùng với sự tận tâm của Thầy hướng dẫn song do
trình độ còn hạn chế nên khó tránh khỏi những thiếu sót. Rất mong nhận được
sự thông cảm và góp ý của Thầy Cô và các bạn.
Cần Thơ, tháng 12 năm 2013
Lê Chí Tài
i
Ứng dụng phần mềm R nghiên cứu thống kê
DANH MỤC CÁC TỪ VIẾT TẮT/ KÍ HIỆU
OLS
Bình phương bé nhất
ii
Ứng dụng phần mềm R nghiên cứu thống kê
DANH MỤC CÁC BẢNG
Trang
Bảng 3.1. Độ tuổi, tỉ trọng cơ thể và cholesterol. ...........................................24
Bảng 3.2. Dữ liệu quan sát nhiệt lượng phát sinh trong quá trình đông cứng
của xi măng Portland.....................................................................33
Bảng 3.3. Hàm lượng gỗ cứng và độ căng của vật liệu. .................................42
Bảng 3.4: Nghiên cứu đo lường ESR và fibrinogen ở 32 đối tượng. ..............51
Bảng 3.5. Dữ liệu 30 bệnh nhân nhiễm trùng huyết. ......................................57
iii
Ứng dụng phần mềm R nghiên cứu thống kê
DANH MỤC CÁC HÌNH
Trang
Hình 1.1: Đồ thị của chuỗi thời gian ldeaths, mdeaths, fdeaths. .......................8
Hình 3.1. Dáng điệu của phần dư...................................................................23
Hình 3.2. Đồ thị liên hệ giữa age và chol. ......................................................25
Hình 3.3. Đồ thị phân tích phần dư để kiểm tra các giả định
trong phân tích hồi qui...................................................................27
Hình 3.4. Đường biểu diễn mối quan hệ giữa tuổi (age) và cholesterol. .........28
Hình 3.5. Đồ thị tương quan tuyến tính giữa các biến với nhau......................35
Hình 3.6. Mối liên hệ giữa hàm lượng gỗ cứng và độ căng mạnh của vật liệu.
......................................................................................................44
Hình 3.7. So sánh hai mô hình: tuyến tính đơn và đa thức bậc hai. ................45
Hình 3.8. Biểu diễn ba đường hồi qui. ...........................................................47
Hình 3.9. Mối quan hệ giữa logit[p(x)] và p(x). .............................................49
Hình 3.10. Đồ thị thể hiện mối quan hệ giữa ESR và fibrinogen....................52
Hình 3.11. Thể hiện độ phân phối của fibrinogen giữa hai nhóm ESR. ..........53
Hình 4.1. Sự phân tích chuỗi thời gian với hàm decompose. ......................65
Hình 4.2. Sự phân tích chuỗi thời gian với hàm stl. ....................................66
Hình 4.3. Đồ thị của 100 biến ngẫu nhiên......................................................68
Hình 4.4. Tương quan đồ của dữ liệu air passenger giai đoạn 1949 – 1960....73
Hình 4.5. Số lượng sản phẩm bán ra của một cửa hàng trong 24 tháng. .........75
Hình 4.6. Lọc tuyến tính dữ liệu chuỗi thời gian x (filter)..............................76
Hình 4.7. Số lượng sản phẩm bán ra của một của hàng năm 1990-1991.........79
Hình 4.8. Số lượng sản phẩm bán ra và trung bình dịch chuyển
có trọng số mũ 1990-1991. ............................................................80
Hình 4.9. Doanh thu của công ty A 2010-2012. .............................................81
Hình 4.10. Giá trị dự đoán cho doanh thu của công ty A................................83
Hình 4.11. Mô tả quá trình AR(1) của chuỗi thời gian xt 0.7 xt 1 et . .........92
Hình 4.12. Tương quan đồ của chuỗi phần dư ...............................................94
Hình 4.13. Đồ thị chuỗi thời gian xt et 0.8 et 1 ..........................................97
Hình 4.14. Tương quan đồ của chuỗi thời gian xt et 0.8 et 1 . ....................98
Hình 4.15. Mô tả quá trình ARMA(2, 1) của chuỗi Xt..................................105
iv
Ứng dụng phần mềm R nghiên cứu thống kê
Hình 4.16. Đồ thị của chuỗi thời gian X t
3
1
X t 1 et et 1 . ....................107
4
2
Hình 4.17. Tương quan đồ của chuỗi X t
3
1
X t 1 et et 1 . .....................108
4
2
Hình 4.18. Sai phân bậc 1 của sản lượng lúa cả năm....................................121
Hình 4.19. Sai phân bậc 2 của sản lượng lúa cả năm....................................122
Hình 4.20. Hàm SAC của sai phân bậc 2 của sản lượng lúa cả nước............122
Hình 4.21. Hàm SPAC của sai phân bậc 2 của sản lượng lúa cả nước..........122
Hình 4.22. Đồ thị các giá trị kiểm định cho mô hình ARIMA(0, 2, 1)
của dữ liệu sanluonglua. ....................................................124
Hình 4.23. Đồ thị dự báo sản lượng lúa cả năm từ 2011-2015 bằng mô hình
ARIMA(0, 2, 1).........................................................................126
Hình 4.24. Tổng số người tử vong do tai nạn mỗi tháng ở Hoa Kỳ
1973-1978. ................................................................................127
Hình 4.25. Đồ thị sai phân bậc 1 của chuỗi UD. ..........................................128
Hình 4.26. Tương quan đồ của chuỗi UD. ...................................................128
Hình 4.27. Đồ thị các giá trị kiểm định cho mô hình ARIMA của dữ liệu
USAccDeaths. .........................................................................129
Hình 4.28. Đồ thị dự đoán cho chuỗi UD chu kỳ 12 tháng kế tiếp…………130
v
Ứng dụng phần mềm R nghiên cứu thống kê
MỤC LỤC
Trang
PHẦN MỞ ĐẦU
I. LÝ DO CHỌN ĐỀ TÀI .............................................................................1
II. MỤC TIÊU VÀ PHƯƠNG PHÁP NGHIÊN CỨU.................................1
2.1. Mục tiêu của đề tài..................................................................................1
2.2. Nội dung nghiên cứu...............................................................................1
2.3. Phương pháp luận và phương pháp nghiên cứu.......................................1
PHẦN NỘI DUNG
Chương 1
PHẦN MỀM............................................................................2
I. GÍỚI THIỆU PHẦN MỀM R ...................................................................2
II. CÚ PHÁP TRONG R...............................................................................2
III. CÁCH NHẬP LỆNH TRONG R ...........................................................3
3.1. Nhập số liệu trực tiếp từ lệnh c() ..........................................................3
3.2. Nhập số liệu trực tiếp từ hàm edit(data.frame()) ..........................4
3.3. Nhập số liệu từ một file dạng text ...........................................................5
3.4. Nhập số liệu từ Excel..............................................................................6
3.5. Nhập số liệu từ SPSS ..............................................................................6
IV. BIÊN TẬP DỮ LIỆU VÀ VẼ ĐỒ THỊ ..................................................6
4.1. Biên tập dữ liệu.......................................................................................7
4.1.1. Kiểm tra số liệu trống không (missing value)..................................7
4.1.2. Chiết số liệu từ một data.frame .......................................................7
4.2. Vẽ biểu đồ ..............................................................................................7
4.2.1 Vẽ biểu đồ với hàm plot ..................................................................7
4.2.2. Biểu đồ cho chuỗi thời gian ts.plot ............................................8
4.3. Hàm combine.......................................................................................9
Chương 2
CÁC KHÁI NIỆM CƠ BẢN................................................10
I. KHÁI NIỆM VỀ ĐẠI LƯỢNG NGẪU NHIÊN.....................................10
1.1. Đại lượng ngẫu nhiên rời rạc.................................................................10
1.2. Đại lượng ngẫu nhiên liên tục ..............................................................10
vi
Ứng dụng phần mềm R nghiên cứu thống kê
II. PHÂN PHỐI XÁC SUẤT CỦA ĐẠI LƯỢNG NGẨU NHIÊN............10
2.1. Bảng phân phối xác suất .......................................................................10
2.2. Hàm mật độ xác suất.............................................................................10
III. CÁC THAM SỐ ĐẶC TRƯNG CỦA ĐẠI LƯỢNG NGẪU NHIÊN 11
3.1. Kỳ vọng (Expectation)..........................................................................11
3.2. Phương sai (Variance) ..........................................................................12
3.3. Độ lệch tiêu chuẩn (Standard deviation) ...............................................13
3.4. Hiệp phương sai (Covariance) ..............................................................13
3.5. Hệ số tương quan (Correlation coefficient) ...........................................15
IV. MỘT SỐ PHÂN PHỐI XÁC SUẤT THÔNG DỤNG .........................15
4.1. Phân phối nhị thức ................................................................................15
4.2. Phân phối chuẩn ...................................................................................15
V. TÓM LƯỢT MỘT SỐ HÀM TRONG R LIÊN QUAN ĐẾN CÁC ĐẶT
TRƯNG CỦA ĐẠI LƯỢNG NGẪU NHIÊN .......................................16
Chương 3
MÔ HÌNH HỒI QUI............................................................18
I. HỒI QUI TUYẾN TÍNH (LINEAR REGRESSION) ............................18
1.1. Hồi qui tuyến tính đơn ..........................................................................18
1.1.1 Mô hình.........................................................................................18
1.1.2 Xây dựng mô hình hồi qui mẫu .....................................................18
1.1.3 Một số thống kê liên quan .............................................................20
1.2. Hồi qui tuyến tính bội ...........................................................................29
1.2.1. Mô hình........................................................................................29
1.2.2. Xây dựng mô hình hồi qui mẫu ....................................................30
1.2.3. Đánh giá sự phù hợp của mô hình.................................................30
1.3. Hiện tượng đa cộng tuyến .....................................................................35
1.3.1. Bản chất của hiện tượng đa cộng tuyến.........................................35
1.3.2. Hậu quả của đa cộng tuyến ...........................................................36
1.3.3. Phát hiện ra hiện tượng đa công tuyến ..........................................37
1.3.4. Biện pháp khắc phục ....................................................................38
II. HỒI QUI PHI TUYẾN...........................................................................41
2.1. Hồi qui đa thức .....................................................................................42
2.2. Hồi qui logistic .....................................................................................47
2.2.1. Những vấn đề cơ bản về ước lượng hợp lý cực đại .......................47
vii
Ứng dụng phần mềm R nghiên cứu thống kê
2.2.2. Odds và tỉ số odds ........................................................................48
2.2.3. Hồi qui logistic đơn ......................................................................48
2.2.4. Hồi qui logistic bội .......................................................................56
Chương 4
PHÂN TÍCH CHUỖI THỜI GIAN.....................................61
I. ĐẠI CƯƠNG VỀ CHUỖI THỜI GIAN .................................................61
1.1. Chuỗi thời gian .....................................................................................61
1.2. Các thành phần của chuỗi thời gian.......................................................62
1.3. Mô hình hóa dự báo giá trị của đại lượng ngẫu nhiên............................66
1.3.1. Mô hình nhân (Mutiplicative model) ............................................66
2.3.2. Mô hình cộng (Additive model)....................................................66
1.4. Tách thành phần xu hướng và thành phần mùa .....................................67
1.5. Độ trể ...................................................................................................67
1.6. Ồn trắng................................................................................................67
1.7. Quá trình dừng (Stationary process)......................................................68
1.7.1. Quá trình dừng .............................................................................68
1.7.2. Các tính chất của hàm tự hiệp phương sai của một quá trình dừng70
1.7.3. Quá trình Gauss............................................................................70
1.8. Toán tử lùi (Backward) và toán tử tiến (forward) ..................................73
1.9. Các phương pháp làm trơn....................................................................73
1.9.1. Phương pháp trung bình dịch chuyển (Moving average method) ..74
1.9.2. Phương pháp làm trơn bằng hàm số mũ ........................................76
II. QUÁ TRÌNH ARMA..............................................................................83
2.1. Quá trình tự hồi qui - AR (Autoregressive Processes) ...........................83
2.1.1. Quá trình tự hồi qui cấp một AR(1) ..............................................83
2.1.2. Quá trình tự hồi qui cấp hai AR(2) ...............................................86
2.1.3. Quá trình tự hồi qui cấp p (AR(p))................................................88
2.2. Quá trình trung bình trượt – MA (Move Average Processes) ................94
2.2.1. Quá trình trung bình trượt cấp q (MA(q)) .....................................94
2.2.2. Quá trình trung bình trượt cấp môt (MA(1)) .................................95
2.2.3. Quá trình trung bình trượt cấp hai (MA(2)) ..................................96
2.3. Quá trình tự hồi qui trung bình trượt – ARMA (Autoregressive Moving
Average Process)..................................................................................98
2.3.1. Quá trình tự hồi qui trung bình trượt cấp p, q (ARMA(p,q)) .........98
viii
Ứng dụng phần mềm R nghiên cứu thống kê
2.3.2. Quá trình tự hồi qui trung bình trượt cấp (1,1) (ARMA(1,1))......100
2.3.3. Quá trình tự hồi qui trung bình trượt cấp (p, 1) (ARMA(p,1)).....102
2.4. Quá trình hợp nhất tự hồi qui trung bình trượt ARIMA (Integrated
Autoregressive Moving Average) .......................................................110
2.5. Hàm tự tương quan riêng PACF (Partial Autocorrelation Function)....111
2.5.1. Xấp xỉ tuyến tính ........................................................................111
2.5.2. Tự tương quan riêng ...................................................................111
III. NHẬN DẠNG MÔ HÌNH ARIMA ....................................................112
3.1. Các giả thiết và công cụ tính toán .......................................................112
3.2. Kiểm tra tính dừng..............................................................................113
3.3. Nhận dạng quá trình AR .....................................................................113
3.4. Ước lượng các tham số a, b ................................................................114
3.4.1. Ước lượng tham số a của AR(p) .................................................114
3.4.2. Ước lượng tham số b của mô hình MA(q) ..................................115
3.4.3. Ước lượng tham số a, b của mô hình ARMA(p, q) .....................116
3.5. Xử lý mùa trong mô hình ARIMA ......................................................117
3.6. Phương pháp BOX-JENKINS.............................................................118
3.7. Dùng R để xây dựng mô hình ARIMA bằng phương pháp Box-Jenkins
...........................................................................................................121
3.7.1 Mô hình ARIMA không có tính mùa ...........................................121
3.7.2 Mô hình ARIMA có tính mùa......................................................126
PHẦN KẾT LUẬN....................................................................................131
THAM KHẢO CÁC HÀM TRONG R......................................................133
TÀI LIỆU THAM KHẢO.........................................................................133
ix
Ứng dụng phần mềm R nghiên cứu thống kê
PHẦN MỞ ĐẦU
I. LÝ DO CHỌN ĐỀ TÀI
Thống kê là một bộ môn khoa học đã và đang trở thành công cụ then chốt
được sử dụng trong quản lí, nghiên cứu, sản xuất, kinh doanh, v.v… Hai trong
những phương pháp trong thống kê đang được phổ biến nhất là mô hình hồi qui
và chuỗi thời gian. Mục đích của hai phương pháp này là tìm ra qui luật để thiết
lập nên mô hình và từ đó tiến hành dự báo cho các giá trị tương lai.
Song song với việc phát triển của thống kê, có rất nhiều phần mềm thống kê
ra đời như Minitab, SPSS, R, Matlab, … Trong các phần mềm được nêu, R được
nhiều người sử dụng nhất do tính thân thiện với người sử dụng, mã nguồn mở và
có đặc tính rất mạnh vể xử lý thống kê.
Vấn đề được nhiều người đặt ra là việc áp dụng phần mềm R như thế nào
để phục vụ tốt cho quá trình học tập, nghiên cứu thống kê nhằm đạt hiệu quả cao
nhất. Đó là lý do mà tôi chọn đề tài này.
II. MỤC TIÊU VÀ PHƯƠNG PHÁP NGHIÊN CỨU
2.1. Mục tiêu của đề tài
Nghiên cứu việc sử dụng phần mềm R cho việc học tập và nghiên cứu
thống kê.
2.2. Nội dung nghiên cứu
Luận văn nghiên cứu việc sử dụng phần mềm R cho việc học tập và nghiên
cứu thống kê. Luận văn trình bày các kiến thức cơ bản của thống kê và đi kèm là
các tính toán bằng R. Ngoài ra, trong luận văn còn có các chương trình con của R
nhằm giải quyết các bài toán phức tạp.
2.3. Phương pháp luận và phương pháp nghiên cứu
Luận văn chủ yếu dựa vào phương pháp thống kê mô tả.
III. CẤU TRÚC CỦA LUẬN VĂN
Luận văn gồm 4 chương:
Chương 1: Phần mềm R
Chương 2: Các khái niệm cơ bản
Chương 3: Mô hình hồi qui
Chương 4: Phân tích chuỗi thời gian
1
Ứng dụng phần mềm R nghiên cứu thống kê
PHẦN NỘI DUNG
Chương 1
PHẦN MỀM
I. GÍỚI THIỆU PHẦN MỀM R
Năm 1996, trong một bài báo quan trọng về tính toán thống kê, hai nhà
thống kê học Ross Ihaka và Robert Gentleman thuộc Trường đại học Auckland,
New Zealand đề xuất một ngôn ngữ mới cho phân tích thống kê mà họ đặt tên là
R. Sáng kiến này được rất nhiều nhà thống kê học trên thế giới tán thành. Đầu
năm 1997 một đề án phát triển R đã được khởi động và hoạt động liên tục đến
nay.
R là một phần mềm mã nguồn mở và là một phần của đề án GNU. R chạy
trên hệ điều hành Unix, Macintosh và Windows. R sử dụng cho phân tích thống
kê và vẽ biểu đồ. Về bản chất, R là ngôn ngữ máy tính đa năng, có thể sử dụng
cho nhiều mục tiêu khác nhau, từ vẽ đồ thị, tính toán đơn giản, tính toán ma trận
(matrix), đến các phân tích thống kê phức tạp. Vì là một ngôn ngữ, nên ta có thể
sử dụng R để phát triển thành các phần mềm chuyên dụng cho các tính toán riêng
biệt.
II. CÚ PHÁP TRONG R
R là một ngôn ngữ tương tác (interactive language), nghĩa là khi ta ra lệnh
và đúng cú pháp thì R sẽ “đáp” lại bằng một kết quả. Sự tương tác tiếp tục cho
đến khi chúng ta đạt được yêu cầu.
“Cú pháp” chung của R là một lệnh (command) hay function (hàm). Cú
pháp chung của R như sau:
đối tượng reg c(x1, x2, ..., xn)
trong đó x1, x2, ..., xn là các giá trị của dữ liệu.
Ví dụ 1.2
Chúng ta có số liệu về độ tuổi và insulin cho 10 bệnh nhân như sau, và
muốn nhập vào R.
Độ tuổi
Isulin
50
16.5
62
10.8
60
32.3
40
19.3
48
14.2
47
11.3
57
15.5
48
16.2
67
11.2
Có thể sử dụng hàm có tên c như sau:
> age = c(50, 62, 60, 40, 48, 47, 57, 70, 48, 67)
> insulin = c(16.5, 10.8, 32.3, 19.3, 14.2, 11.3, 15.5,
15.8, 16.2, 11.2)
Lệnh thứ nhất cho R biết rằng chúng ta muốn tạo ra một cột dữ liệu có tên
là age (age là biến số), và tương tự lệnh thứ hai là tạo ra một cột khác có tên là
insulin. Chúng ta có thể đặt tên khác mà mình thích.
Dùng hàm c (viết tắt của từ concatenation - “móc nối vào nhau”) để nhập
dữ liệu. Mỗi số liệu cách nhau bởi dấu phẩy.
3
Ứng dụng phần mềm R nghiên cứu thống kê
R là một ngôn ngữ cấu trúc theo dạng đối tượng (thuật ngữ chuyên môn là
“object-oriented language”), vì mỗi cột số liệu hay mỗi một data.frame là một đối
tượng với R. Vì thế, age và insulin là hai đối tượng riêng lẻ. Chúng ta cần phải
nhập hai đối tượng này thành một data.frame để R có thể xử lí sau này. Để làm
việc này ta cần đến hàm data.frame:
> benh = data.frame(age, insulin)
Trong lệnh trên, ta yêu cầu R nhập hai đối tượng (hai cột) age và insulin lại
thành một đối tượng benh. Để kiểm tra trong benh có gì ta chỉ cần gõ:
> benh
và đây là kết quả từ R:
1
2
3
4
5
6
7
8
9
10
age insulin
50
16.5
62
10.8
60
32.3
40
19.3
48
14.2
47
11.3
57
15.5
70
15.8
48
16.2
67
11.2
Nếu muốn lưu lại các số liệu này trong một file theo dạng R, ta cần dùng
lệnh save. Giả sử muốn lưu số liệu trong directory có tên là
“D:\Studying\insulin”, ta cần gõ các lệnh sau:
> setwd(“D:/Studying/insulin”)
setwd – chữ wd có nghĩa là working directory, báo cho R biết rằng ta
muốn lưu các số liệu trong directory có tên là “D:\Studying\insulin”
> save(benh, file=”benh.rda”)
Các số liệu trong đối tượng benh sẽ lưu trong file có tên là benh.rda.
Sau khi gõ xong hai lệnh trên, một file có tên benh.rda sẽ có mặt trong
directory đó.
Lưu ý rằng thông thường Windows dùng dấu backward slash “\”, nhưng
trong R chúng ta dùng dấu forward slash “/”.
3.2. Nhập số liệu trực tiếp từ hàm edit(data.frame())
Ngoài việc nhập số liệu trực tiếp từ hàm c() ở trên, ta còn có thể nhập số
liệu bằng hàm edit(data.frame()).
Với hàm này, R sẽ cung cấp cho ta một cửa sổ mới với một dãy cột và dòng
giống như Excel, và ta có thể nhập số liệu trực tiếp trong bảng đó.
Ví dụ 1.3 (tiếp tục ví dụ 1.2) Ta nhập số liệu về độ tuổi và insulin cho 10 bệnh
nhân và đặt tên cho dữ liệu là insulin bằng cách gõ lệnh:
4
Ứng dụng phần mềm R nghiên cứu thống kê
> insu = edit(data.frame())
Một cửa sổ hiện ra như sau:
R không biết chúng ta có biến số nào, cho nên R liệt kê các biến số var1,
var2, v.v… Nhấp chuột vào cột var1 và thay đổi bằng cách gõ vào đó age. Nhấp
chuột vào cột var2 và thay đổi bằng cách gõ vào đó insulin. Sau đó gõ số liệu
cho từng cột. Sau khi xong, bấm nút chéo X ở góc phải của spreadsheet, ta sẽ có
một data.frame tên insu với hai biến số age và insulin.
3.3. Nhập số liệu từ một file dạng text
Nhập dữ liệu từ một file dạng text ta dùng lệnh read.table.
Ví dụ 1.4 Ta có số liệu được thu thập từ 143 công dân Mỹ về mối liên hệ
giữa mức lương dựa trên số năm kinh nghiệm. Dữ liệu được lưu với tên
“salary.txt” trong directory “D:\Studying”, các bước sau đây là cần thiết
để nhập số liệu vào R:
> setwd("D:/Studying")
> Salary = read.table("salary.txt", header=TRUE)
Lệnh thứ nhất, yêu cầu R truy nhập vào directory “D:\Studying”. Tiếp
theo, lệnh thứ hai báo cho R biết là nhập số liệu từ file “salary.txt” gán vào
cho đối tượng Salary. Trong lệnh này, header=TRUE có nghĩa là yêu cầu R
đọc dòng đầu tiên trong file salary.txt như là tên của từng cột dữ kiện (nếu
dữ liệu không có dòng đầu tiên là tên dữ kiện thì header=FALSE).
Muốn biết trong dữ liệu có những cột nào và tên gì ta dùng lệnh names():
> names(Salary)
[1] "ID"
"Salary"
"Experience"
Ta lưu dữ liệu Salary thành tập dữ liệu Salary.rda (rda nghĩa là file
dữ liệu của R):
> save(Salary, file="Salary.rda")
5
Ứng dụng phần mềm R nghiên cứu thống kê
3.4. Nhập số liệu từ Excel
Để nhập số liệu từ phần mềm Excel, chúng ta cần tiến hành 2 bước:
• Bước 1: Dùng lệnh “Save as” trong Excel và lưu số liệu dưới dạng
“csv”.
• Bước 2: Dùng R (lệnh read.csv) để nhập dữ liệu dạng csv.
Giả sử dữ liệu từ ví dụ 1.3 được nhập trong excel và được lưu với tên
“sal.csv” trong directory “D:\Studying”. Bước tiếp, ta vào R và tạo ra
những lệnh sau đây:
> setwd("D:/Studying")
> Salary = read.csv("Sal.csv", header=TRUE)
Muốn xem số liệu Salary ta dùng lệnh
> Salary
Lưu số liệu vào file Salary.rda để làm việc trên R
> save(Salary, file="Salary.rda")
3.5. Nhập số liệu từ SPSS
Phần mềm thống kê SPSS lưu dữ liệu dưới dạng “sav”. Ví dụ chúng ta đã
có một dữ liệu có tên là testo.sav trong directory “D:\Studying”, và muốn
chuyển dữ liệu này sang dạng R có thể hiểu được, chúng ta cần sử dụng lệnh
read.spss trong package có tên là foreign. Ta thực hiện các lệnh sau đây:
Việc đầu tiên chúng ta cho truy nhập vào foreign bằng lệnh library:
> library(foreign)
Việc thứ hai là lệnh read.spss:
> setwd(“D:/Studying”)
> testo = read.spss(“testo.sav”, to.data.frame=TRUE)
Lệnh thứ hai read.spss yêu cầu R đọc số liệu từ “testo.sav”, và cho vào
một data.frame có tên testo.
Bây giờ chúng ta có thể lưu testo dưới dạng R để xử lí sau này bằng những
lệnh sau đây:
> save(testo, file="testo.rda")
IV. BIÊN TẬP DỮ LIỆU VÀ VẼ ĐỒ THỊ
Phần này chúng ta sử dụng dữ liệu của ví dụ 1.4 để tiện cho việc theo dõi và
hiểu được. Dữ liệu đã được nhập vào R với tên là Salary từ một text file có tên
salary.txt.
6
Ứng dụng phần mềm R nghiên cứu thống kê
4.1. Biên tập dữ liệu
4.1.1. Kiểm tra số liệu trống không (missing value)
Trong nghiên cứu, vì nhiều lý do số liệu không thể thu thập được cho tất cả
các đối tượng, hay không thể đo lường tất cả biến số cho một đối tượng. Trong
trường hợp đó, số liệu trống được xem là “missing value”. R xem các số liệu
trống là NA. Có một số kiểm định thống kê đòi hỏi các số liệu trống phải được
loại ra (vì không thể tính toán được) trước khi phân tích. R có lệnh na.omit rất
có ích cho việc này và cách sử dụng như sau:
> Sal.new = na.omit(Sal)
Trong lệnh trên, chúng ta yêu cầu R loại ra các số liệu trống trong
data.frame Salary và đưa các số liệu không trống vào data.frame mới tên là
Sal.new. Chú ý lệnh trên chỉ là ví dụ, vì trong dữ liệu Sal không có dữ liệu
trống.
4.1.2. Chiết số liệu từ một data.frame
Trong Salary có 3 biến số, tương ứng là: ID, Salary và Experimence. Ta có
thể chiết từng biến trong dữ liệu Salary ra như sau:
> salary = Sal[,2]
> experimence = Sal[,3]
Lệnh thứ nhất yêu cầu R chiết ra cột thứ hai của Sal và gán vào biến salary.
Tương tự, lệnh thứ hai yêu cầu R chiết ra cột thứ 3 và gán vào biến experimence.
4.2. Vẽ biểu đồ
Nhằm thuận lợi cho việc phân tích thống kê, R cung cấp rất nhiều hàm vẽ
biểu đồ khác nhau, luận văn sẽ lần lượt trình bài trong những ví dụ ở những
chương tiếp theo. Ở đây trình bài hai hàm vẽ đồ thị cơ bản cho mô hình hồi qui
và chuỗi thời gian.
4.2.1 Vẽ biểu đồ với hàm plot
i) Mô tả
Plot là hàm cơ bản dùng để vẽ đồ thị của các đối tượng trong R.
ii) Cú pháp
> plot(x, y, …)
iii) Các đối số
x
trục tọa độ x của đồ thị. Như là một sự lựa chọn, một
cấu trúc vẽ đơn, một hàm hoặc bất kỳ trong R với một
phương pháp vẽ được cung cấp.
y
trục tọa độ y của đồ thị, tùy ý nếu x là một cấu trúc
thích hợp.
type
kiểu vẽ của đồ thị. Một số kiểu vẽ: “p” - cho điểm,
7
Ứng dụng phần mềm R nghiên cứu thống kê
“l”- cho đường, “b”- cho cả hai, “s”- cho bậc thang,
v.v…
main
tiêu đề của đồ thị.
xlab, ylab
tiêu đề cho trục x, trục y.
xlim, ylim
giới hạn của trục x, trục y.
Col
màu của đồ thị: col=4 (màu xanh), col=2 (màu đỏ)
v.v…
v.v…
4.2.2. Biểu đồ cho chuỗi thời gian ts.plot
i) Mô tả
Vẽ một vài chuỗi thời gian trên một đồ thị chung. Khác với hàm plot các
chuỗi thời gian này có thể có thời gian bắt đầu khác nhau, nhưng chúng phải có
tần số giống nhau.
ii) Cú pháp
ts.plot(..., gpars = list())
iii) Các đối số
một hoặc nhiều chuỗi thời gian đơn hay bội.
…
gpars
danh sách tên những tham số trên hình vẽ phù hợp với những hàm
được vẽ. Nó thường được cung cấp trực tiếp trong …
Ví dụ 1.5. Vẽ trên cùng một đồ thị các chuỗi thời gian ldeaths, mdeaths,
fdeaths với trục hoành là year, trục tung là deaths có kiểu đường vẽ lần lượt
là solid, dash, dot.
> require(graphics)
> ts.plot(ldeaths, mdeaths, fdeaths,
1500 2500 3500
500
deaths
gpars = list(xlab="year", ylab="deaths",lty=c(1:3))
1974
1976
1978
1980
year
Hình 1.1: Đồ thị của chuỗi thời gian ldeaths, mdeaths, fdeaths.
8
Ứng dụng phần mềm R nghiên cứu thống kê
4.3. Hàm combine
i) Mô tả
Lấy ra một chuỗi của véc tơ, ma trận hoặc khung dữ liệu và theo thứ tự kết
hợp lại thành các cột và dòng. Đây là các hàm đặc trưng với phương pháp cho
các lớp R khác.
ii) Cú pháp
cbind(..., deparse.level = 1)
rbind(..., deparse.level = 1)
iii) Các đối số
…
là các véc tơ hay ma trận. Ở đây có thể cho bởi tên các đối
số
deparse.level mặc định là deparse.level = 0 nếu không có nhãn,
deparse.level= 1 or 2 nếu nhãn là tên của các đối số.
Ví dụ 1.6
# Kết hợp một cột có giá trị 1 vào véc tơ 1:7.
> m = cbind(1, 1:7)
# the '1' (= shorter vector) is recycled
> m
R cho ra kết quả:
[1,]
[2,]
[3,]
[4,]
[5,]
[6,]
[7,]
[,1] [,2]
1
1
1
2
1
3
1
4
1
5
1
6
1
7
# Kết hợp một cột có giá trị 0 vào một ma trận được tạo ra từ kết hợp thêm
một dòng có giá trị 1 vào véc tơ 1:3.
> cbind(0, rbind(1, 1:3))
[1,]
[2,]
[,1] [,2] [,3] [,4]
0
1
1
1
0
1
2
3
9
Ứng dụng phần mềm R nghiên cứu thống kê
Chương 2
CÁC KHÁI NIỆM CƠ BẢN
I. KHÁI NIỆM VỀ ĐẠI LƯỢNG NGẪU NHIÊN
Định nghĩa 2.1. Đại lượng ngẫu nhiên là đại lượng biến đổi biểu thị giá trị kết
quả của một phép thử ngẫu nhiên. Ta dùng ký hiệu X, Y, Z, … cho các đại lượng ngẫu
nhiên.
Phân loại đại lượng ngẫu nhiên: có hai loại đại lượng ngẫu nhiên là đại
lượng ngẫu nhiên rời rạc và đại lượng ngẫu nhiên liên tục.
1.1. Đại lượng ngẫu nhiên rời rạc
Định nghĩa 2.2. Đại lượng ngẫu nhiên được gọi là rời rạc nếu ta có thể liệt kê
được tất cả các giá trị có thể có của nó.
Ví dụ 2.1. Gọi X là số học sinh vắng của một lớp trong một buổi học. Khi đó
X có thể nhận các giá trị 0, 1, …, n. X là đại lượng ngẫu nhiên.
1.2. Đại lượng ngẫu nhiên liên tục
Định nghĩa 2.3. Đại lượng ngẫu nhiên được gọi là liên tục nếu các giá trị có
thể có của nó lấp đầy một khoảng trên trục số hay nói cách khác ta không thể liệt
kê được tất cả các giá trị có thể có của nó.
Ví dụ 2.2. Gọi T là nhiệt độ (oC) của một vùng tại một thời điểm. Giả sử
T (29o; 32o) thì T được gọi là đại lượng ngẫu nhiên liên tục.
II. PHÂN PHỐI XÁC SUẤT CỦA ĐẠI LƯỢNG NGẨU NHIÊN
2.1. Bảng phân phối xác suất
Giả sử X là đại lượng ngẫu nhiên rời rạc nhận các giá trị x1, x2, …, xn với
các xác suất tương ứng p1, p2, …, pn. Phân phối xác suất của đại lượng ngẫu
nhiên thường được cho bởi bảng sau:
X
x1
x2
...
xn
P
p1
p2
...
pn
2.2. Hàm mật độ xác suất
Định nghĩa 2.4. Hàm mật độ xác suất f(x) của đại lượng ngẫu nhiên X là hàm
không âm, xác định với mọi giá trị ngẫu nhiên X và thỏa tính chất
b
P ( a X b) f ( x )dx .
a
10
Ứng dụng phần mềm R nghiên cứu thống kê
III. CÁC THAM SỐ ĐẶC TRƯNG CỦA ĐẠI LƯỢNG NGẪU NHIÊN
3.1. Kỳ vọng (Expectation)
Định nghĩa 2.5. Cho đại lượng ngẫu nhiên rời rạc X có bảng phân phối xác
suất
X
x1
x2
...
xn
P
p1
p2
...
pn
Kỳ vọng của đại lượng ngẫu nhiên X, kí hiệu là E(X) hay M(X), là số xác
định bởi:
n
E ( X ) xi pi .
i 1
Định nghĩa 2.6. Cho đại lượng ngẫu nhiên liên tục X có hàm mật độ xác suất
f(x). Khi đó, kỳ vọng của đại lượng ngẫu nhiên X, ký hiệu E(X), được xác định
bởi công thức:
E(X )
xf ( x)dx .
Tính chất của kỳ vọng
i) E (C ) C , với C là hằng số.
ii) E (kX ) kE ( X ) .
iii) E ( X Y ) E ( X ) E (Y ) .
iv) Nếu X, Y là đại lượng ngẫu nhiên độc lập thì E ( XY ) E ( X ).E (Y ) .
Ý nghĩa của kỳ vọng
Kỳ vọng của đại lượng ngẫu nhiên chính là giá trị trung bình của đại lượng
ngẫu nhiên. Nó phản ánh trung tâm của phân phối xác suất.
Ứng dụng R để tìm kỳ vọng
Tìm kỳ vọng của đại lượng ngẫu nhiên x ta dùng lệnh
> mean(x, ...)
Ví dụ 2.3. Cho X là đại lượng ngẫu nhiên nhận các giá trị 0, 1, 2, 3, 4, 5, 6, 7,
8, 9, 10, 50.
# Nhập liệu vào R
> x = c(0:10,50)
# Tính kỳ vọng của x
> mean(x)
Kết quả từ R:
11
Ứng dụng phần mềm R nghiên cứu thống kê
[1] 8.75
Như vậy thì kỳ xọng của X là 8.75.
3.2. Phương sai (Variance)
Định nghĩa 2.7. Phương sai của đại lượng ngẫu nhiên X, ký hiệu Var(X), được
xác định bởi công thức
Var( X ) E{[X E ( X )]2 } .
Định nghĩa 2.8. Nếu X là đại lượng ngẫu nhiên rời rạc có bảng phân phối xác
suất
X
x1
x2
...
xn
P
p1
p2
...
pn
thì phương sai của X được xác định bởi công thức
n
Var( X ) ( xi E ( X )) 2 pi .
i 1
Định nghĩa 2.9. Nếu X là đại lượng ngẫu nhiên liên tục có hàm mật độ f(x) thì
phương sai của X được xác định bởi công thức
Var( X ) ( x E ( X )) 2 f ( x )dx .
Nhận xét 2.1. Trong thực tế ta thường sử dụng công thức sau:
Var( X ) E ( X 2 ) (E(X)) 2 .
n
- Nếu X là đại lượng ngẫu nhiên rời rạc thì E ( X ) xi 2 pi .
i 1
- Nếu X là đại lượng ngẫu nhiên liên tục thì E ( X )
x 2 f ( x )dx .
Tính chất của phương sai
i) Var(C ) 0.
ii) Var(CX ) C 2Var( X ).
iii) Var( X C ) Var( X ).
iv) Nếu X, Y độc lập: ( Var( X Y ) Var( X ) Var(Y ).
Ý nghĩa của phương sai
Từ định nghĩa 2.5 ta thấy X - E(X) chính là độ lệch giữa các giá trị có thể có
của đại lượng ngẫu nhiên X so với giá trị trung bình của nó. Do đó, phương sai
của X chính là trung bình bình phương độ lệch, nó phản ánh mức độ phân tán các
giá trị có thể có chung quanh giá trị trung bình. Vậy khi phương sai nhỏ thì độ
phân tán nhỏ tức mức độ tập trung lớn; ngược lại khi phương sai lớn thì độ phân
tán lớn tức mức độ tập trung nhỏ.
12
Ứng dụng phần mềm R nghiên cứu thống kê
Lệnh trong R
Tính phương sai trong R ta dùng lệnh
> var(x, y = NULL, na.rm = FALSE, use)
trong đó:
x
là vectơ số, ma trận hoặc mảng dữ liệu.
y
NULL (mặc định y = x), hoặc vectơ, ma trận, mảng dữ liệu tương
thích với x.
na.rm
có tính lôgic. Các giá trị vắng mặt có thể lấy đi không?
use
tuỳ chọn này là một trong các dạng sau: "everything",
"all.obs", "complete.obs", "na.or.complete",
"pairwise.complete.obs".
Ví dụ 2.4. Tính phương sai của tập A gồm từ số 1 đến 10.
Để tính phương sai ta sử dụng lệnh sau đây
> var(1:10)
R cho ra kết quả
[1] 9.166667
3.3. Độ lệch tiêu chuẩn (Standard deviation)
Định nghĩa 2.10. Độ lệch tiêu chuẩn của đại lượng ngẫu nhiên X , ký hiệu
( x) , được xác định bởi công thức:
( x) Var( X ) .
Để tính độ lệch tiêu chuẩn, R cung cấp lệnh sau đây:
> sd(x, na.rm = FALSE)
trong đó
x
là vectơ số, ma trận hoặc mảng dữ liệu.
na.rm
thuộc tính lôgic. Các giá trị vắng mặt có thể lấy đi không?.
Ví dụ 2.5.
> sd(1:2)^2
R cho ra kết quả:
[1] 0.5
3.4. Hiệp phương sai (Covariance)
Định nghĩa 2.11. Hiệp phương sai (hay moment tương quan) của các đại
lượng ngẫu nhiên X và Y, ký hiệu cov( X , Y ) hay XY , là số được xác định như
sau:
cov( X , Y ) E{[X - E ( X )][Y - E (Y )]}
13
Ứng dụng phần mềm R nghiên cứu thống kê
Nếu cov( X , Y ) 0 thì ta nói đại lượng ngẫu nhiên X và Y không tương
quan.
Tính chất của hiệp phương sai
i) cov( X , Y ) E ( XY ) E ( X ) E (Y ).
ii) Nếu X và Y là hai đại lượng ngẫu nhiên độc lập thì chúng không tương
quan.
Vì E ( X , Y ) E ( X ).E (Y ) cov( X , Y ) 0.
iii) cov( X , X ) Var(X).
iv) cov( X , Y ) cov(Y , X ) .
v) cov(aX , bY ) ab cov( X , Y ) .
vi) cov( X , a) 0.
vii) cov( X a, Y b) cov( X , Y ).
(với a và b là hằng số).
Ý nghĩa của hiệp phương sai
Hiệp phương sai là độ đo sự biến thiên cùng nhau của hai biến ngẫu nhiên
(phân biệt với phương sai – đo mức độ biến thiên của một biến).
Nếu hai biến có xu hướng thay đổi cùng nhau (nghĩa là, khi một biến có giá
trị cao hơn giá trị kỳ vọng thì biến kia có xu hướng cũng cao hơn giá trị kỳ
vọng), thì hiệp phương sai giữa hai biến này có giá trị dương. Mặt khác, nếu một
biến nằm trên giá trị kỳ vọng còn biến kia có xu hướng nằm dưới giá trị kỳ vọng,
thì hiệp phương sai của hai biến nay có giá trị âm.
Lệnh trong R
Hiệp phương sai trong R cho bởi lệnh
> cov(x, y=NULL, use = "everything",
method=c("peason","kendall","spearman"))
Ví dụ 2.6. Tính hiệp phương sai của tập X = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} và
tập Y = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11} ta thực hiện các lệnh sau:
# Nhập liệu vào R
> x =c(1,2,3,4,5,6,7,8,9,10)
> y =c(2,3,4,5,6,7,8,9,10,11)
# Tính hiệp phương sai
> cov(x,y)
Các lệnh trên có thể viết gọn lại:
> cov(1:10,2:11)
R cho ra kết quả
14
Ứng dụng phần mềm R nghiên cứu thống kê
[1] 9.166667
Khi đó hiệp phương sai của tập X và Y cov(X, Y)=9.12
3.5. Hệ số tương quan (Correlation coefficient)
Định nghĩa 2.12. Hệ số tương quan (correlation coefficient) của hai đại lượng
ngẫu nhiên X1, X2 có cùng phân bố được định nghĩa bởi
corr( X 1 , X 2 ) ( X 1 , X 2 )
cov(X 1 , X 2 )
,
( X 1 ) ( X 2 )
trong đó ( X ) là độ lệch tiêu chuẩn.
Ý nghĩa của hệ số tương quan
Hệ số tương quan đo mức độ phụ thuộc tuyến tính của hai đại lượng ngẫu
nhiên X1 và X2. Khi corr( X 1 , X 2 ) càng gần 1 thì mối quan hệ tuyến tính càng
chặt chẽ, khi corr( X 1 , X 2 ) càng gần 0 thì mối quan hệ tuyến tính càng lỏng lẻo.
Lệnh trong R
> cor(x, y = NULL, use = "everything", method =
c("pearson", "kendall", "spearman"))
Ví dụ 2.7. Tính hệ số tương quan của X = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} và tập
Y = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11} ta thực hiện lệnh sau:
> cor(1:10,2:11)
R cho ra kết quả
[1] 1
IV. MỘT SỐ PHÂN PHỐI XÁC SUẤT THÔNG DỤNG
4.1. Phân phối nhị thức
i) Hàm mật độ xác suất
Đại lượng ngẫu nhiên rời rạc X được gọi là có phân phối nhị thức với 2
tham số n và p (Kí hiệu: X~B(n, p)), nếu hàm mật độ xác suất của nó được xác
định như sau:
C x p x (1 p) n x khi x 0, 1, ..., n
f ( x | n, p ) n
0 khi
x
0,
1,
...,
n
i) Các tham số đặc trưng
Nếu X~B(n, p) thì
Trung bình: E ( X ) np .
Phương sai: Var ( X ) npq .
Trong đó q=1-p.
15
Ứng dụng phần mềm R nghiên cứu thống kê
4.2. Phân phối chuẩn
i) Hàm mật độ xác suất
Đại lượng ngẫu nhiên liên tục X được gọi là có phân phối chuẩn với hai
tham số và 2 ( 0) nếu hàm mật độ xác suất của nó được xác định như sau:
( x )2
1
.
exp
f ( x | , )
2 2
2
2
Ký hiệu: X N ( , 2 ) .
Đặt Y
x
, khi đó Y N (0, 1) . Lúc này ta nói Y có phân phối chuẩn
tắc.
i) Các tham số đặc trưng
Nếu X N ( , 2 ) thì
Trung bình: E ( X ) .
Phương sai: Var( X ) 2 .
Tạo ra một biến ngẫu nhiên có phân phối chuẩn với R với hàm
rnorm()
Ví dụ 2.8.
Tạo ra biến X với 100 quan sát, có kỳ vọng là 0 và độ lệch chuẩn là 1.
> rnorm(100,mean=0,sd=1)
Tổng quát, hàm rnorm tạo ra biến ngẫu nhiên có phân phối chuẩn với n
quan sát có kỳ vọng là m và độ lệch tiêu chuẩn là b.
> rnorm(n,mean=m,sd=b)
V. MỘT SỐ HÀM TRONG R LIÊN QUAN ĐẾN CÁC ĐẶC TRƯNG CỦA
ĐẠI LƯỢNG NGẪU NHIÊN
Trong phần này ta tóm lược lại các hàm tính kỳ vọng, phương sai, độ lệch
tiêu chuẩn, hiệp phương sai và ma trận tương quan (Variance, Standard
deviation, Covariance and Correlation (Matrices)).
a) Mô tả
mean, var, sd, cov và cor lần lượt là các hàm tính giá trị kỳ vọng,
phương sai, độ lệch chuẩn của x, hiệp phương sai và sự tương quan của x và y
nếu chúng là những véc tơ. Nếu x và y là những ma trận thì hiệp phương sai
(hoặc sự tương quan) được tính giữa các cột x và các cột của y.
cov2cor là tỷ lệ của một ma trận hiệp phương sai trong ma trận tương
quan tương ứng có hiệu nghiệm.
16
Ứng dụng phần mềm R nghiên cứu thống kê
b) Cú pháp
mean(x, ...)
var(x, y = NULL, na.rm = FALSE, use)
sd(x, na.rm = FALSE)
cov(x, y = NULL, use = "everything", method =
c("pearson", "kendall", "spearman"))
cor(x, y = NULL, use = "everything", method =
c("pearson", "kendall", "spearman"))
cov2cor(V)
c) Các thông số
x
là một véc tơ số, ma trận hoặc khung dữ liệu.
y
mặc định là NULL hoặc là một véc tơ, ma trận hoặc khung dữ liệu
với kích thước tương ứng với x.
na.rm
để hợp lý, phải loại bỏ các giá trị khuyết.
use
một chuỗi đặc trưng bất kỳ nhận được từ phương pháp tính hiệp
phương sai trong sự có mặt của các giá trị khuyết. Nó phải là một
trong các chuỗi sau "everything", "all.obs",
"complete.obs", "na.or.complete", hoặc
"pairwise.complete.obs".
method một chuỗi đặc trưng cho biết ước lượng hệ số tương quan (hoặc hiệp
phương sai). Mặc định là "pearson" (default), "kendall", hoặc
"spearman", có thể được rút gọn.
V
là ma trận số đối xứng, thường được xác định là ma trận hiệp
phương sai.
17
Ứng dụng phần mềm R nghiên cứu thống kê
Chương 3
MÔ HÌNH HỒI QUI
I. HỒI QUI TUYẾN TÍNH (LINEAR REGRESSION)
Trong thực tế, các đại lượng thường không đứng độc lập mà luôn có sự phụ
thuộc qua lại với nhau. Sự phụ thuộc giữa chúng rất đa dạng, được diễn tả với
nhiều hình thức khác nhau. Chúng ta có thể đánh giá mức độ cũng như chiều
hướng của sự quan hệ, sự tương quan bằng những hệ số đặc trưng nào đó. Khi
giữa các đại lượng có sự tương quan với nhau, chúng ta có thể xây dựng đường
hồi qui để thực hiện mối quan hệ đó. Từ đó có thể dự báo các biến khó quan sát,
khó đo được qua những biến có thể quan sát và đo được bằng mô hình hồi qui mà
ta đã xây dựng.
Trong các mô hình hồi qui, hồi qui tuyến tính được xem là đơn giản nhất
nhưng có ứng dụng nhiều nhất. Mô hình này có thể xây dựng được cho hầu hết
các mối quan hệ trong những lĩnh vực khác nhau của cuộc sống, đặc biệt trong
dự báo ngắn hạn. Mô hình hồi qui này cũng được xem là nền tảng, là cơ sở cho
các mô hình nồi qui khác. Có rất nhiều mô hình hồi qui phi tuyến được chuyển
đổi về dạng tuyến tính để xử lý bởi vì xét các vấn đề liên quan cho hồi qui tuyến
tính thì đơn giản hơn nhiều so với hồi qui phi tuyến.
1.1. Hồi qui tuyến tính đơn
1.1.1 Mô hình
Xét hai biến ngẫu nhiên X và Y, trong đó X là biến độc lập còn Y là biến phụ
thuộc. Trong thực tế, thông thường biến X có thể quan sát được, đo được còn
biến Y khó có thể định lượng trực tiếp được nên phải xác định nó thông qua biến
X. Giả sử hai đại lượng này có mối quan hệ tuyến tính
E (Y / X ) 0 1 X ,
trong đó 0 và 1 được gọi là hệ số hồi qui lý thuyết. Thông thường 0 được gọi
là điểm chặn (intercept) và 1 là hệ số dốc (slope).
Giả sử rằng mỗi quan sát Y có thể biểu diễn bởi mô hình
Y 0 1 X .
(3.1)
Ở đây chúng ta giả sử rằng E ( ) 0, Var( ) 2 và là những biến ngẫu nhiên
không tương quan. Mô hình (3.1) được gọi là mô hình tuyến tính đơn.
1.1.2 Xây dựng mô hình hồi qui mẫu
Khi chúng ta có n cặp dữ liệu ( x1 , y1 ), ( x2 , y2 ), ......,( xn , yn ) , để ước lượng
các tham số 0 và 1 , ta sử dụng phương pháp bình phương tối thiểu.
Khi đó phương trình (3.1) có thể viết lại là
18
Ứng dụng phần mềm R nghiên cứu thống kê
yi 0 1 xi i , (i 1, 2, ..., n) .
Mô hình hồi qui tuyến tính mẫu được sử dụng để ước lượng mô hình hồi
qui tổng thể là
yˆ ˆ0 ˆ1 x.
Tổng bình phương sai số giữa giá trị quan sát thực tế và lý thuyết được xác
định như sau:
n
n
n
i 1
i 1
i 1
S ( ˆ0 , ˆ1 ) i ( yi yˆ i ) 2 ( yi ˆ0 ˆ1 xi )2 .
Sử dụng phương pháp bình phương bé nhất để ước lượng các tham số của
0 và 1 . Chúng ta cần tìm ˆ0 , ˆ1 sao cho S ( ˆ0 , ˆ1 ) nhỏ nhất. Suy luận này dẫn
tới việc tìm hai hệ số trên bởi hệ phương trình:
n
S
2
yi ˆ0 ˆ1 xi 0
ˆ
i
1
0
n
S 2 y ˆ ˆ x 0
0
1 i
i
ˆ1
i 1
Hệ phương trình tương đương
n
n 2 ˆ n ˆ
x
x
i 1 i 0 xi yi
i 1
i 1
i 1
n
n
ˆ
ˆ
xi 1 n 0 yi
i 1
i 1
Đây là hệ phương trình tuyến tính bậc nhất với hai ẩn ˆ0 , ˆ1 . Giải hệ phương
trình ta được
n
n
n
n
x
y
(
x
)(
yi )
i
i
i
i 1
i 1
i 1
ˆ
1
n
n
n xi2 ( xi )2
i 1
i 1
n
n
xi )
yi ˆ1 (
ˆ i 1
i 1
0
n
Khi tính được ˆ0 , ˆ1 ta viết được mô hình hồi qui mẫu là yˆ ˆ0 ˆ1 x .
Chú ý 3.1
i) ˆ0 , ˆ1 là ước lượng không chệch của 0 , 1
ii) Thông thường để tiện lợi hơn trong việc tính toán ta thường dùng công
thức ˆ0 , ˆ1 dưới hình thức
19
Ứng dụng phần mềm R nghiên cứu thống kê
S
ˆ
n( xy x . y )
xy
1 n
2
Sx
1 n
2
x
xi
i
n
i 1
i 1
ˆ y ˆ x ,
0
1
trong đó
S x2
1 n 2
xi x 2 ,
n i 1
S xy xy x y .
Khi đó hai hệ số ˆ0 và ˆ1 trở thành
xy x. y
ˆ1
S x2
ˆ
ˆ
0 y 1 x
(3.2)
R cung cấp cho chúng ta hàm lm (viết tắt từ linear model) cho phép chúng ta có
thể tính toán các giá trị của ˆ và ˆ , cũng như tính s 2 một cách nhanh gọn.
0
1
> lm(yi ~ xi)
1.1.3 Một số thống kê liên quan
Đi kèm với hàm lm là hàm summary(object), yêu cầu R liệt kê các
thống kê liên quan sau đây:
a) Đo lường sự biến thiên bằng hệ số xác định
R2 là một thước đo sự phù hợp của mô hình hồi qui, khi đó hệ số xác định
này thể hiện phần tỉ lệ biến thiên của Y được giải thích bởi mối liên hệ tuyến tính
của Y với X, xác định bởi công thức sau:
R2
SSR
SSE
1
,
SST
SST
(3.3)
trong đó
n
2
SST ( yi y ) : Thể hiện toàn bộ sự biến thiên của Y,
i 1
n
SSR ( yˆ i y ) 2 : Thể hiện phần biến thiên của Y được giải thích bởi biến
i 1
X,
n
SSE i2 : Thể hiện phần biến thiên của Y do các yếu tố khác không
i 1
nghiên cứu.
20
Ứng dụng phần mềm R nghiên cứu thống kê
b) Sai số chuẩn ước lượng
Sai số chuẩn ước lượng thể hiện sự đo lường biến thiên xung quanh đường
hồi qui, nó đo lường sự biến thiên của các giá trị Y thực tế so với giá trị do
đường hồi qui tính ra. Độ lệch chuẩn xung quanh đường hồi qui được gọi là sai
số chuẩn của hồi qui, kí hiệu SY / X được tính bởi công thức sau:
SSE
.
n2
SY / X
(3.4)
c) Khoảng tin cậy cho hệ số độ dốc
Khoảng tin cậy cho hệ số độ dốc được tính bởi công thức sau:
ˆ1 t
2
,n 2
.S 1 ˆ1 t
1
2
,n 2
.S ,
1
với S là sai số của ước lượng hệ số độ dốc được tính như sau:
1
SY2/ X
S 2
1
X
2
i
X
2
.
i
n
d) Kiểm định F- kiểm tra mối quan hệ tuyến tính của X và Y
Đường hồi qui thực nghiệm yˆ ˆ0 ˆ1 x là ước lượng của phương trình hồi
qui lý thuyết Y 0 1 X . Phương trình hồi qui lý thuyết là hàm xấp xỉ tốt nhất
trong lớp hàm tuyến tính. Song nếu mức độ liên hệ tuyến tính giữa X và Y quá
yếu thì ước lượng trên không thể sử dụng được. Vì vậy ta cần kiểm tra xem giả
thuyết hồi qui E(Y/X) là tuyến tính có phù hợp hay không.
Để đạt mục đích này ta kiểm định giả thuyết
H : 1 0
:
0
H
1
Nếu giả thuyết 1 0 được chấp nhận thì phương trình hồi qui của Y theo
X có dạng phi tuyến hay X và Y là hai đại lượng ngẫu nhiên độc lập, ngược lại sẽ
kết luận X và Y có sự liên hệ tuyến tính.
1 n
2
yˆi y
F n i n1
n 2 ,
1
2
y yˆi
n i 1
hay
F
SSR
n 2 .
SSE
Miền bác bỏ: W F ; 1; n 2 ; .
21
Ứng dụng phần mềm R nghiên cứu thống kê
Nếu giả thiết 1 0 thì F có phân vị Fisher với bậc tự do (1, n-2).
Kết luận: theo nguyên tắc của bài toán kiểm định.
e) Kiểm định T- kiểm tra mối quan hệ tuyến tính của X và Y
Cũng giống như kiểm định F, Kiểm định T nhằm kiểm tra mối liên hệ tuyến
tính của X và Y có tồn tại hay không, tức là kiểm tra hệ số 1 có bằng 0 hay
không. Nếu 1 0 có nghĩa là không tồn tại mối quan hệ tuyến tính giữa X và Y.
Giả thuyết kiểm định là:
H : 1 0
H : 1 0
T
ˆ1
S
1
Khi đó, nếu giả thuyết đúng thì T tuân theo qui luật Student với n-2 bậc tự
do. Miền bác bỏ là W T : T t . Nghĩa là ở mức ý nghĩa , nếu
;n 2
2
T t thì ta bác bỏ giả thuyết H tức là tồn tại mối liên hệ tuyến tính giữa Y và
2
;n 2
X.
f) Phân tích phần dư
Khi bắt đầu phân tích hồi qui, vẽ đồ thị phân tán là bước khởi đầu. Nếu
dáng điệu đồ thị tập trung xung quanh một đường thẳng nào đó, chúng ta sẽ tìm
các hệ số 0 , 1 . Tuy nhiên, việc lập mô hình phải dựa vào các giả thiết sau đây:
i phân phối theo luật phân phối chuẩn,
i có giá trị trung bình (mean) là 0,
i có phương sai 2 cố định cho tất cả biến xi và
các giá trị liên tục của i không có tương quan với nhau.
Vì các phần dư ei yi yˆ i đại diện tốt cho sai số i , người ta thường dùng
phân tích phần dư để kiểm tra xem mô hình có phù hợp hay không.
Mô hình hồi qui phù hợp khi phần dư ei yi yˆ i phải tuân theo một phân
bố chuẩn. Để kiểm tra tính chuẩn của phần dư trong thực hành thông thường ta
e
đòi hỏi phần dư chuẩn hóa di i (Standardized residuals) nằm trong khoảng
SY / X
(2; 2) và phần dư có dáng điệu tương đối đều đặn trên trục hoành.
Một số đồ thị phản ánh sự phân tán của phần dư:
22
Ứng dụng phần mềm R nghiên cứu thống kê
Hình 3.1. Dáng điệu của phần dư.
g) Dự đoán giá trị trung bình của biến phụ thuộc Y.
Ta đã biết phương trình hồi qui tổng thể có dạng:
E Y / X 0 1 X .
Và nó được ước lượng bằng mô hình yˆ ˆ0 ˆ1 x .
i) Ước lượng điểm giá trị trung bình
Dựa trên mô hình ước lượng đó, muốn ước lượng điểm giá trị trung bình có
điều kiện của Y tại x= x0 thì ta chỉ cần thế x0 vào mô hình ước lượng:
yˆ ˆ0 ˆ1 x .
ii) Ước lượng khoảng giá trị trung bình
Khoảng tin cậy cho trung bình có điều kiện E (Y / X 0 ) :
( x0 x ) 2
1
E ( y / x0 ) yˆ 0 t .SY / X
.
2
; n 2
n
x
x
(
)
2
i
(3.5)
Ví dụ 3.1: Một nhà nghiên cứu đo lường độ cholestrol trong máu của 18 đối
tượng nam. Tỉ trọng cơ thể cũng được ước tính cho mỗi đối tượng bằng công
thức tính BMI là lấy trọng lượng chia cho chiều cao bình phương. Kết quả đo
lường như sau:
Mã số ID
Độ tuổi
BMI
(age)
Cholesterol
(chol)
1
46
25.4
3.5
2
20
20.6
1.9
23
Ứng dụng phần mềm R nghiên cứu thống kê
3
52
26.2
4
4
30
22.6
2.6
5
57
25.4
4.5
6
25
23.1
3
7
28
22.7
2.9
8
36
24.9
3.8
9
22
19.8
2.1
10
43
25.3
3.8
11
57
23.2
4.1
12
33
21.8
3
13
22
20.9
2.5
14
63
26.7
4.6
15
40
26.4
3.2
16
48
21.2
4.2
17
28
21.2
2.3
18
49
22.8
4
Bảng 3.1. Độ tuổi, tỉ trọng cơ thể và cholesterol.
Lập mô hình hồi qui tuyến tính giữa cholesterol và độ tuổi.
Trước hết ta cần nhập số liệu vào một data frame, và cho một cái tên. Trong
trường hợp của ví dụ này, dữ liệu được chứa trong directory “D:\studying\luan
van\csv” dưới tên chol.csv, do đó các lệnh sau đây là cần thiết để nhập số liệu:
# Báo cho R biết nơi chứa dữ liệu
> setwd("D:/studying/luan van/csv")
# Nhập số liệu và cho vào một data frame tên data
> data= read.csv("chol.csv", header=TRUE)
# Kiểm tra số liệu trống
> data.new= na.omit(data)
Lệnh trên yêu cầu R loại bỏ những số liệu trống không trong data và đưa
các số liệu không trống vào data.new.
> names(data)
[1] "ID"
"tuoi"
"BMI"
# Lấy dữ liệu ở cột thứ 4 trong data gán cho chol
> chol=data.new[,4]
# Tương tự gán dữ liệu ở cột 2 cho age
24
"Cholesterol"
Ứng dụng phần mềm R nghiên cứu thống kê
> age=data.new[,2]
# Vẽ đồ thị
2.0
2.5
3.0
chol
3.5
4.0
4.5
> plot(age, chol, pch=16)
20
30
40
50
60
age
Hình 3.2. Đồ thị liên hệ giữa age và chol.
Ta thấy đồ thị có dạng một đường thẳng, cho thấy giữa age và chol có mối
quan hệ tuyến tính với nhau.
# Tìm mô hình hồi qui tuyến tính phù hợp.
> lm(chol~age)
Call:
lm(formula = chol ~ age)
Coefficients:
(Intercept)
1.08922
age
0.05779
Trong lệnh trên, “chol~age” có nghĩa là mô tả chol là một hàm số của
age. Kết quả tính toán của R cho thấy ˆ0 1.089 và ˆ1 0.057 . Ta có được mô
hình hồi qui tuyến tính như sau:
yˆ 1.089 0.057 age .
Khoảng tin cậy cho hệ số dốc được tính với hàm confint.
> confint(reg)
(Intercept)
age
2.5 %
97.5 %
0.61973158 1.55870385
0.04634299 0.06923378
Để tiện lợi và nhận được nhiều thông tin hơn, ta đặt một tham số chứa mô
hình hồi qui như sau:
> reg= lm(chol~age)
25
Ứng dụng phần mềm R nghiên cứu thống kê
Khi đó biến reg có thể được sử dụng thay cho lm(chol~age)
# Liệt kê các thông số liên quan đến hàm lm
> summary(reg)
Call:
lm(formula = chol ~ age)
Residuals:
Min
1Q
Median
-0.40729 -0.24133 -0.04522
3Q
0.17939
Max
0.63040
Coefficients:
Estimate Std. Error t value Pr(>|t|)
Intercept) 1.089218 0.221466
4.918
0.000154 ***
age
0.057788 0.005399
10.704 1.06e-08 ***
--Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1
‘ ’ 1
Residual standard error: 0.3027 on 16 degrees of freedom
Multiple R-squared: 0.8775,
Adjusted R-squared: 0.8698
F-statistic: 114.6 on 1 and 16 DF, p-value: 1.058e-08
Ta thấy, giá trị kiểm định t cho ˆ là 10.704 với chỉ số p=1.06x10-8 (p <
0.05), cho thấy không phải là 0. Nói cách khác mối liên hệ giữa chol và age
có ý nghĩa thống kê.
Sai số chuẩn của ước lượng trong ví dụ này là 0.3027 và R2=0.8775. Giá trị
kiểm định F=114.6 với p=1.05x10-8, tương tự như kiểm định t, kiểm định F cho
ta thấy mối liên hệ giữa chol và age có ý nghĩa thống kê.
* Giá trị phần dư
Để nhận thông tin phần dư từ R ta có lệnh sau đây:
> resid(reg)
1
2
3
4
5
-0.247 -0.344 -0.094 -0.222 0.116
7
8
9
10
11
0.192 0.630 -0.260 0.225 -0.283
13
14
15
16
17
0.139 -0.129 -0.201 0.336 -0.407
6
0.466
12
0.003
18
0.079
Lệnh fitted() trong R giúp chúng ta có thể tính toán yˆi cho từng cá nhân
như sau:
> fitted(reg)
1
3.747
7
2
2.244
8
3
4.094
9
4
2.822
10
5
4.383
11
26
6
2.533
12
Ứng dụng phần mềm R nghiên cứu thống kê
2.707
13
2.360
3.169
14
4.729
2.360
15
3.400
3.574
16
3.863
4.383
17
2.707
2.996
18
3.920
* Kiểm định sự phù hợp của mô hình
Để biết mô hình vừa tìm được có thực sự phù hợp với bộ dữ liệu hay không,
ta tiến hành phân tích phần dư cho mô hình trên. Vẽ một loạt các đồ thị của reg
như sau:
> par(mfrow=c(2,2))
# yêu cầu R dành ra 4 cửa sổ
> plot(reg)
# vẽ các đồ thị trong reg
17
4.0
2
1
0
-1
-1
0
1
Theoretical Quantiles
Scale-Location
Residuals vs Leverage
3.0
3.5
4.0
4.5
1
2
8
0.5
1
6
2
Cook's distance
0.5
0.00
Fitted values
2
0
1.0
17
0.5
2.5
-2
Fitted values
8
6
17
4.5
Standardized residuals
1.5
3.5
0.0
Standardized residuals
3.0
8
6
-1
0.4
0.0
-0.4
Residuals
8
6
2.5
Normal Q-Q
Standardized residuals
Residuals vs Fitted
0.10
0.20
Leverage
Hình 3.3. Đồ thị phân tích phần dư để kiểm tra các giả định trong phân tích hồi qui.
Đồ thị bên trái dòng 1 (Residuals vs Fitted) vẽ phần dư ei và giá trị tiên
đoán yˆ i . Đồ thị này cho thấy các giá trị phần dư tập trung quanh đường y=0, có
nghĩa là ei có giá trị trung bình là 0.
Đồ thị bên phải dòng 1 (Normal Q-Q) vẽ giá trị phần dư và giá trị kỳ vọng
dựa vào phân phối chuẩn. Rất dễ nhận thấy các giá trị phần dư tập trung rất gần
với các giá trị đường chuẩn và nằm trong khoảng (-2; 2), tức là ei phân phối theo
tui luật phân phối chuẩn.
Đồ thị bên trái dòng 2 (Scale-Location) vẽ căn số phần dư chuẩn
( Standardized residual ) và giá trị của yˆ i . Chúng ta thấy không có gì khác nhau
giữa các số phần dư chuẩn cho các giá trị của yˆ i , và do đó i có phương sai 2
cố định cho tất cả xi.
27
Ứng dụng phần mềm R nghiên cứu thống kê
Qua phân tích phần dư, có thể kết luận rằng mô hình hồi qui tuyến tính mô
tả mối liên hệ giữa cholesterol và age một cách khá đầy đủ và hợp lí.
Vẽ đường biểu diển mô hình tiên đoán
> plot(chol~age, pch=16)
2.5
3.0
chol
3.5
4.0
4.5
> abline(reg)
2.0
age
Regression line
20
30
40
50
60
age
Hình 3.4. Đường biểu diễn mối quan hệ giữa tuổi (age) và cholesterol.
* Dự đoán (ước lượng giá trị trung bình)
Sau khi hoàn thành các giai đoạn trên, tiến hành dự đoán cho mô hình với
hàm predict().
> predict(model, data.frame(pred = new pred), level =
0.95, interval = “confidence”)
model
mô hình dự đoán.
data.frame thay biến cũ bằng một biến mới. Biến mới là biến chứa giá trị
mà mình muốn dự đoán.
level
khoảng ước lượng .
interval
có 2 thuộc tính: “confidence” yêu cầu R liệt kê ra khoảng tin
cậy cho những giá trị dự đoán, “prediction” liệt kê khoảng
dự đoán.
Giả sử từ ví dụ trên, ta muốn dự báo với biến age lần lượt là 50, 30, 47. Ta
làm như sau:
#Tạo ra biến mới chứa những phần tử cần dự báo.
> newage=c(50,30,47)
> predict(reg, data.frame(age=newage), level=0.95,
interval="confidence")
28
Ứng dụng phần mềm R nghiên cứu thống kê
R cho ta kết quả
fit
lwr
upr
1 3.978637 3.780636 4.176638
2 2.822869 2.640959 3.004779
3 3.805272 3.627489 3.983055
Hiểu kết quả như sau: fit là kết quả dự báo và (lwr;upr) là khoảng tin cậy
của fit.
1.2. Hồi qui tuyến tính bội
1.2.1. Mô hình
Trong mô hình hồi qui tuyến tính đơn, chúng ta chỉ đơn thuần xây dựng
mối quan hệ tuyến tính giữa hai biến X và Y. Nhưng thực tế cho thấy một đại
lượng không chỉ liên quan đến một đại lượng khác mà còn chịu tác động bởi
nhiều đại lượng liên quan. Vì thế, nếu chỉ dùng mô hình hồi qui đơn sẽ không thể
hiện được các quan hệ phức tạp vốn có của nó. Do đó, chúng ta mở rộng mô hình
hồi qui đơn với một biến độc lập thành nhiều biến độc lập, nói cách khác chúng
ta đi xây dựng mô hình hồi qui bội của Y qua tất cả các biến X.
Giả sử ta có biến Y phụ thuộc vào k biến độc lập X1, X2, …, Xk, mỗi giá trị
quan sát của Y có thể biểu diễn theo mô hình:
Y 0 1 X 1 ... k X k ,
(3.6)
trong đó:
Y được gọi là biến phụ thuộc,
X1, X2, …, Xk là biến độc lập,
là các sai số ngẫu nhiên,
0 là hệ số tự do, 1 là hệ số độ dốc của Y theo biến Xi khi các biến X1, X2,
…, Xk là không đổi.
Nếu là biến ngẫu nhiên không tương quan thì mô hình (3.6) được gọi là
mô hình tuyến tính bội.
Một số giả định trước khi xây dựng mô hình hồi qui tuyến tính bội
- Tuyến tính các tham số hồi qui. Nghĩa là biến phụ thuộc Y có thể được
viết dưới dạng tổ hợp tuyến tính của các mẫu quan sát trên các biến độc lập X
cộng với véc tơ sai số.
- Các giá trị mẫu của Xk được ước lượng đúng, không có sai số, các biến X
là đại lượng không ngẫu nhiên.
- E ( ) 0 .
- Các sai số độc lập với biến X Cov ( i , X ij ) 0 .
29
Ứng dụng phần mềm R nghiên cứu thống kê
- Các sai số i có phương sai bằng nhau, nếu mô hình có phương sai sai số
thay đổi thì mô hình không còn chính xác.
- Véc tơ sai số có phân phối chuẩn nhiều chiều với trung bình bằng 0 và
sai số bằng 2 ( E ( ) 0 và Var ( ) 2 ).
- Không có biến độc lập nào là hằng số, và không tồn tại các mối liên hệ
tuyến tính hoàn toàn chính xác giữa các biến độc lập, nghĩa là biến độc lập này
không là tổ hợp tuyến tính của biến độc lập kia. Hay nói cách khác không có hiện
tượng đa cộng tuyến.
1.2.2. Xây dựng mô hình hồi qui mẫu
Giả sử chúng ta có n quan sát, mỗi quan sát có k giá trị
( yi , x1i , x2i , ..., xki ), i 1, 2, 3, ..., n . Khi đó giá trị của biến phụ thuộc yi thể
hiện qua mô hình hồi qui tuyến tính bội như sau:
yi 0 1 x1i 2 x2i ... k xki i .
(3.7)
Nói cụ thể hơn:
y1 0 1 x11 2 x21 ... k xk 1 1
y2 0 1 x12 2 x22 ... k xk 2 2
...
yn 0 1 x1n 2 x2 n ... k xkn n
Mô hình (3.7) có thể viết dưới dạng ma trận Y X . Trong đó Y , X , và
lần lượt là ma trận cỡ (n 1), (n k ), (k 1) và (n 1) :
1 x11 ... xk 1
0
0
y1
1 x ... x
y
12
k2
2
1
; X
;
; 1
Y
...
...
...
...
1 x1n ... xkn
n
n
yn
Chúng ta vẫn dùng phương pháp bình phương tối thiểu để ước lượng các
tham số j ( j 1, 2, ..., n) bằng các hệ số ˆ j ( j 1, 2, ..., n) . Mô hình hồi qui
tuyến tính bội của mẫu để ước lượng mô hình hồi qui tổng thể là:
yˆ i ˆ0 ˆ1 x1i ˆ2 x2 i ... ˆk xki ,
(3.8)
hay viết dưới dạng ma trận: yˆ X ˆ .
Trong đó ˆ ( X T X ) 1 X T Y .
1.2.3. Đánh giá sự phù hợp của mô hình
Một số phương pháp đánh giá sự phù hợp của mô hình là: dựa vào hệ số
xác định, dùng thống kê F.
30
Ứng dụng phần mềm R nghiên cứu thống kê
i) Đánh giá qua hệ số xác định
Tương tự như ở mô hình tuyến tính đơn, hệ số xác định R2 dùng để đo
lường sự biến thiên của biến phụ thuộc được giải thích bởi biến độc lập. Công
thức xác định vẫn là:
R2
SSR
.
SST
ii) Hệ số xác định hiệu chỉnh
2
Hệ số xác định hiệu chỉnh Radj
là một cách khác đo lường sự biến thiên của
biến phụ thuộc qua các biến độc lập mà có tính đến cỡ mẫu và số biến số độc lập
trong mô hình hồi qui bội, công thức xác định như sau:
n 1
2
Radj
1 1 R 2
,
n k 1
(3.9)
trong đó:
n là kích thước mẫu,
k là số biến độc lập trong mô hình.
iii) Dùng thống kê F để đánh giá ý nghĩa toàn diện của mô hình
Ý tưởng của nội dung này là sử dụng hệ số xác định R2 để suy diễn về việc
mô hình được xây dựng có ý nghĩa về mặt thống kê hay không trong việc giải
thích cho biến thiên của biến phụ thuộc. Chúng ta tiến hành qua các bước sau:
H : R 2 0
- Đặt giả thuyết:
Hoặc có thể đặt dưới dạng sau:
H : R 2 0
H : 1 2 ... k 0
H : có ít nhất một i 0 .
- Chọn thống kê sử dụng cho bài toán kiểm định là:
SSR
F
SSE
k
.
n k 1
Nếu giả thuyết H đúng thì thống kê F tuân theo phân phối Fisher với bậc tự
do k , n k 1 .
Miền bác bỏ: W F ; k ; n k 1; +
Kết luận: theo nguyên tắc của bài toán kiểm định.
31
Ứng dụng phần mềm R nghiên cứu thống kê
Chú ý Trong thực hành chúng ta có thể dựa vào giá trị P-value kiểm định giả
thuyết. Nếu P-value nhỏ hơn mức ý nghĩa thì bác bỏ giả thuyết H và ngược lại
là chấp nhận giả thuyết H.
iv) Tính toán sai số của ước lượng
Sai số của ước lượng được tính theo công thức sau:
SSE
.
n k 1
SY / X
(3.10)
v) Đánh giá ý nghĩa của từng biến độc lập riêng biệt
Trong kiểm định F chúng ta đã có kết luận được mô hình toàn diện có ý
nghĩa. Điều này có nghĩa là có ít nhất một biến độc lập trong mô hình có thể giải
thích được sự biến thiên của biến phụ thuộc. Tuy nhiên để xác định xem biến độc
lập nào có ý nghĩa về mặt thống kê thì ta thực hiện theo các bước sau đây:
H : i 0
- Đặt giả thuyết:
- Miền bác bỏ: W t
; + .
2 ; n k 1
- Giá trị quan sát:
H : i 0
tqs
i
s
,
i
với s là sai số chuẩn ước lượng của hệ số độ dốc của biến độc lập thứ i, được
i
tính theo công thức sau:
sY2 / X
s2
X
2
i
Xi
2
.
n
Ví dụ 3.2: Xét một tập dữ liệu số thu được từ một nghiên cứu kiểm tra nhiệt
lượng phát sinh trong quá trình đông cứng của xi măng Portland. Nhiệt lượng này
được giả định là một hàm của các thành phần hóa học, các biến sau đây đã được
đo:
x1: số lượng tricalcium aluminat,
x2: số lượng tricalcium silicat,
x3: số lượng ferit nhôm tetracalcium,
x4: số lượng dicalcium silicat,
Y : nhiệt lượng tỏa ra tính bằng calo trên mỗi gram xi măng.
32
Ứng dụng phần mềm R nghiên cứu thống kê
STT
x1
x2
x3
x4
Y
1
7
6
26
60
78.5
2
1
26
15
52
74.3
3
11
56
8
20
104.3
4
11
31
8
47
87.6
5
7
52
6
33
95.9
6
11
55
9
22
109.2
7
3
71
17
6
102.7
8
1
31
22
44
72.5
9
2
54
18
22
93.8
10
21
47
4
26
115.9
11
1
40
23
34
83.8
12
11
66
9
12
113.3
13
10
68
8
12
109.4
Bảng 3.2. Dữ liệu quan sát nhiệt lượng phát sinh trong quá trình đông cứng của
xi măng Portland.
Tìm mô hình hồi qui bội và cho biết nếu x1= 9, x2= 32, x3=11, x4=45 thì Y (nhiệt
lượng tỏa ra) sẽ là bao nhiêu?.
Giả sử số liệu đã được nhập trong phần mềm Excel và được lưu dưới tên
XiMang. Để tìm mô hình hồi qui bội ta cần thực hiện một số câu lệnh như sau:
> setwd("D:/studying/luan van/csv")
> XiMang = read.csv("XiMang.csv", header=TRUE)
> x1= XiMang[,2]
# x1 nhận giá trị từ cột 2 của dữ liệu.
> x2= XiMang[,3]
# x2 nhận giá trị từ cột 3 của dữ liệu.
> x3= XiMang[,4]
# x3 nhận giá trị từ cột 4 của dữ liệu.
> x4= XiMang[,5]
# x4 nhận giá trị từ cột 5 của dữ liệu.
> y= XiMang[,6]
# y nhận giá trị từ cột 6 của dữ liệu.
> lm(y~x1+x2+x3+x4)
Call:
lm(formula = y ~ x1 + x2 + x3 + x4)
Coefficients:
(Intercept)
x1
88.78951 1.51099
x2
0.16493
33
x3
0.07777
x4
-0.44240
Ứng dụng phần mềm R nghiên cứu thống kê
* Dự đoán
> predict(lm(y ~ x1+x2+x3+x4), list(x1=9,x2=32,
x3=11,x4=45), interval="prediction")
fit
lwr
upr
1 88.61366 80.90073 96.3266
* Kiểm định sự phù hợp của mô hình
> reg= lm(y~x1+x2+x3+x4)
> summary(reg)
Kết quả từ R:
Residuals:
Min
1Q
-5.1587 -1.1806
Median
0.1552
3Q
1.6132
Max
3.7514
Coefficients:
Estimate Std. Error t value
(Intercept) 88.78951 71.08170
1.249
x1
1.51099 0.65083
2.322
x2
0.16493 0.75510
0.218
x3
0.07777 0.66596
0.117
x4
-0.44240 0.76687
-0.577
--Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01
‘ ’ 1
Pr(>|t|)
0.2469
0.0488 *
0.8326
0.9099
0.5799
‘*’ 0.05 ‘.’ 0.1
Residual standard error: 3.056 on 8 degrees of freedom
Multiple R-squared: 0.9725,
Adjusted R-squared: 0.9587
F-statistic: 70.62 on 4 and 8 DF, p-value: 2.813e-06
Trong lệnh “y ~ x1 + x2 + x3 + x4” có nghĩa là y được mô tả bởi các biến
x1, x2, x3, x4. Kết quả tính toán của lm cho ta được mô hình
yˆ i 88.79 1.51x1 0.16 x2 0.07 x3 0.44 x4 .
Ta thấy các biến độc lập xi (i 1, 2, 3, 4) giải thích khoảng 97% độ biến thiên
của y ( R 2 0.97 ). Giá trị kiểm định F= 70.62 với P value 2.81 106 cho ta
biết giả thuyết H (có ít nhất một i 0 ) bị bác bỏ, hay nói cách khác mô hình
vừa tìm được có ý nghĩa thống kê.
* Kiểm định t
Giá trị P-value của từng biến x1 , x2 , x3 , x4 lần lượt là 0.048, 0.83, 0.90 và
0.57 trong đó chỉ có giá trị P-value của biến x1 là nhỏ hơn mức ý nghĩa =5%
hay nói cách khác chỉ có biến x1 là có ý nghĩa thống kê.
Ta thấy có sự mâu thuẫn ở mô hình này, kiểm định F cho biết toàn bộ mô hình có
ý nghĩa thống kê, nhưng chỉ có biến x1 là có ý nghĩa thống kê. Ta thử tiến hành
xét sự tương quan tuyến tính giữa các biến độc lập với nhau bằng lệnh pairs().
34
Ứng dụng phần mềm R nghiên cứu thống kê
> pairs(XiMang)
15
5
15
25
80
100
2 6 10
5
15
stt
40
70
5
x1
25
10
x2
10 30 50
5
15
x3
80 100
x4
Y
2
6
10
10
40
70
10
30
50
Hình 3.5. Đồ thị tương quan tuyến tính giữa các biến với nhau.
Kết quả cho thấy có sự tương quan tuyến tính giữa các cặp biến x1 và x3
với hệ số tương quan 0.7. Ngoài ra x2 và x4 cũng có tương quan với nhau với hệ
số tương quan lên đến 0.9. Đây là dấu hiệu của hiện tượng đa cộng tuyến.
1.3. Hiện tượng đa cộng tuyến
1.3.1. Bản chất của hiện tượng đa cộng tuyến
a) Định nghĩa
Đa cộng tuyến là sự tồn tại ít nhất một mối quan hệ tuyến tính giữa một
biến giải thích nào đó với tất cả hay với một biến khác có mặt trong mô hình.
Giả sử hồi qui Y có k biến Xi, i 1, k cho dưới dạng:
. Y 0 1 X 1 2 X 2 ... X k i .
Khi đó một mô hình lý tưởng là các biến giải thích Xi ( i 1, k ) không có
tương quan với nhau. Nghĩa là mỗi biến chứa đựng một số thông tin riêng về Y
và thông tin đó lại không có trong biến giải thích khác. Khi đó ta nói không xảy
ra hiện tượng đa cộng tuyến.
Nếu tồn tại hằng số 1 , 2 , ..., k sao cho:
0 1 X 1i 2 X 2i ... k X ki 0 ,
35
Ứng dụng phần mềm R nghiên cứu thống kê
với 1 , 2 , ..., k không đồng thời bằng 0 thì giữa các biến Xi, i 1, k xảy ra
hiện tượng đa cộng tuyến hoàn hảo. Nói cách khác là xảy ra trường hợp một biến
giải thích được biểu diễn dưới dạng tổ hợp tuyến tính của các biến còn lại.
Nếu
0 1 X 1i 2 X 2i ... k X ki Vi 0 ,
Vi là sai số ngẫu nhiên thì ta có hiện tượng đa cộng tuyến không hoàn hảo giữa
các biến giải thích. Nói cách khác là một biến giải thích nào đó có tương quan
chặt chẽ với một biến giải thích khác.
Trong thực tế hiện tượng đa cộng tuyến không hoàn hảo thì phổ biến,
ngược lại thì hiện tượng đa cộng tuyến hoàn hảo thì rất hiếm.
b) Nguyên nhân của đa cộng tuyến hoàn hảo
Có rất nhiều nguyên nhân dẫn đến đa cộng tuyến như:
- Vấn đề thu thập số liệu: phương pháp thu thập số liệu có thể sinh ra đa
cộng tuyến nếu ta thu thập số liệu có giá trị liên hệ trên một biến.
- Trong hồi qui có chứa các biến giải thích với lũy thừa bậc cao.
1.3.2. Hậu quả của đa cộng tuyến
a) Đa cộng tuyến hoàn hảo
Trong trường hợp đa cộng tuyến hoàn hảo, có thể có các hậu quả sau đây:
- Ước lượng bình phương bé nhất (OLS) là ước lượng không chệch. Tính
không chệch là tính chất của mẫu lặp. Nhưng điều này chẳng nói gì về tính chất
của ước lượng trong mẫu như vậy.
- Cộng tuyến không phá hủy tính chất cực tiểu của phương sai. Nhưng điều
này không có nghĩa là phương sai của ước lượng OLS là phải nhỏ trong mẫu đã
cho.
- Đa cộng tuyến cơ bản là hiện tượng mẫu, nghĩa là nếu các biến X không
có liên hệ tuyến tính trong tổng thể, nhưng có thể có liên hệ đó trong mẫu.
b) Đa cộng tuyến không hoàn hảo
Khi gặp hiện tượng đa cộng tuyến không hoàn hảo thì có thể gặp các tình
huống sau:
- Phương sai và hiệp phương sai của ước lượng OLS lớn.
- Khoảng tin cậy rộng hơn.
- Tỉ số t “không có ý nghĩa”.
- R2 cao nhưng không có ý nghĩa.
- Các ước lượng OLS và sai số chuẩn của chúng trở nên rất nhạy cảm với
những thay đổi nhỏ trong dữ liệu.
36
Ứng dụng phần mềm R nghiên cứu thống kê
- Dấu của các ước lượng của hồi qui có thể sai.
- Thêm hay bớt đi các biến cộng tuyến với biến khác, mô hình sẽ thay đổi
về dấu hoặc thay đổi về độ lớn của các ước lượng.
1.3.3. Phát hiện ra hiện tượng đa công tuyến
a) R2 cao nhưng tỷ số t không có ý nghĩa
Dấu hiệu nhận biết đa cộng tuyến là hồi qui ước lượng được R2 cao (thường
R2 > 0.8) trong khi đó tỉ số t thấp. Đây là một mâu thuẫn bởi vì R2 cao chỉ ra rằng
có sự thích hợp hồi qui trong khi đó tỷ số t thấp lại chứng tỏ rằng không có liên
hệ giữa biến giải thích và biến được giải thích.
b) Tương quan cặp giữa các biến giải thích cao
Hệ số này được tính như sau:
RXZ
(X
(X
i
X )( Z i Z )
2
2
i X ) ( Zi Z )
,
(3.11)
trong đó X, Z là hai biến giải thích trong mô hình.
Nếu tương quan cặp giữa các biến giải thích cao (lớn hơn 0.8) thì có hiện
tượng đa cộng tuyến. Tuy nhiên tiêu chuẩn này thường không chính xác. Có
những trường hợp tương quan cặp không cao nhưng vẫn xảy ra hiện tượng đa
cộng tuyến.
c) Thực hiện hồi qui phụ
Hồi qui phụ là hồi qui một biến giải thích X nào đó theo các biến còn lại.
Tính R2 và F theo mỗi mô hình theo công thức:
F
R 2 (n k )
.
(1 R 2 )(k 1)
(3.12)
Trong đó n là số quan sát và k là số tham số có trong mô hình hồi qui phụ (kể cả
hệ số tự do).
Miền bác bỏ: W F ; k 1; n k ; .
Nếu giá trị F F ; k 1;n k thì giả thuyết H bị bác bỏ, khi đó tồn tại đa cộng
tuyến.
d) Thừa số tăng phương sai (Variance inflation factor-VIF)
VIF
1
.
(1 rij2 )
Trong đó rij là hệ số tương quan giữa hai biến độc lập trong mô hình.
Nếu VIF 10 thì mô hình có đa cộng tuyến.
37
(3.13)
Ứng dụng phần mềm R nghiên cứu thống kê
Từ công thức (3.13) cho thấy nếu rij càng tăng thì hệ số VIF càng lớn và
làm tăng mức độ đa cộng tuyến.
1.3.4. Biện pháp khắc phục
- Loại trừ một biến độc lập ra khỏi mô hình.
Bước 1: Xem cặp biến giải thích nào có quan hệ chặt chẽ với nhau. Giả sử
X1 , X 2 , ..., X k là các biến độc lập, Y là biến phụ thuộc và X1, X2 có tương quan
chặt chẽ với nhau.
Bước 2: Tính R2 đối với các hàm hồi qui: có mặt cả hai biến; không có mặt
một trong hai biến.
Bước 3: Ta loại biến mà giá trị R2 tính được khi không có mặt biến đó là lớn
hơn.
- Thu thập thêm số liệu hoặc lấy mẫu mới.
- Thay đổi dạng của mô hình.
Lệnh trong R
a) Chỉ số AIC
Chỉ số AIC cho bởi công thức:
SSE 2k
,
AIC log
n n
(3.14)
trong đó
n: số quan sát,
k: số biến có trong mô hình.
Mô hình có chỉ số AIC nhỏ nhất thì sẽ là mô hình tối ưu.
R cung cấp cho chúng ta lệnh step()dùng để khắc phục hiện tượng đa
cộng tuyến.
b) Hàm step()
i) Mô tả
Tìm ra mô hình tối ưu dựa vào chỉ số AIC.
ii) Cấu trúc
> step(object, scope=list(lower, upper),
direction=c("both", "backward", "forward"),...)
object
đối tượng đại diện cho mô hình hồi qui.
scope
xác định phạm vi của các mô hình nghiên cứu.
direction
phương thức tìm kiếm theo từng bước. Có 3 thuộc tính
“backward”, “forward” và “both”. Mặc định là “both”.
Nếu chúng ta không đề cập đến scope thì direction sẽ là
38
Ứng dụng phần mềm R nghiên cứu thống kê
“backward”.
…
* Ghi chú:
“Backward”: Bắt đầu với mô hình có đầy đủ biến. Sau đó, ở mỗi bước nó
sẽ loại bỏ dần từng biến độc lập không có ảnh hưởng tới biến phụ thuộc (giá trị
p-value của kiểm định t lớn hơn mức ý nghĩa ). Quá trình tiếp tục cho tới khi
tìm được mô hình thích hợp thì sẽ dừng lại.
“Forward”: Bắt đầu với mô hình không có biến độc lập. Nó sẽ thêm dần
từng biến độc lập có tác động đến biến phụ thuộc hay nói cách khác biến độc lập
có ý nghĩa thống kê (p-value của kiểm định t nhỏ hơn mức ý nghĩa ). Quá trình
được tiếp tục cho đến khi tìm được mô hình thích hợp.
“Both”: sử dụng cả hai “Backward” và “Forward”.
Ví dụ 3.3: Ta trở lại với ví dụ 3.2
> reg=lm(y~x1+x2+x3+x4)
> summary(reg)
Call:
lm(formula = y ~ x1 + x2 + x3 + x4)
Residuals:
Min
1Q
-5.1587 -1.1806
Median
0.1552
3Q
1.6132
Max
3.7514
Coefficients:
Estimate Std. Error t value
(Intercept) 88.78951 71.08170
1.249
x1
1.51099 0.65083
2.322
x2
0.16493 0.75510
0.218
x3
0.07777 0.66596
0.117
x4
0.44240 0.76687
-0.577
--Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01
‘ ’ 1
Pr(>|t|)
0.2469
0.0488 *
0.8326
0.9099
0.5799
‘*’ 0.05 ‘.’ 0.1
Residual standard error: 3.056 on 8 degrees of freedom
Multiple R-squared: 0.9725,
Adjusted R-squared: 0.9587
F-statistic: 70.62 on 4 and 8 DF, p-value: 2.813e-06
Ta thấy rằng R2 có giá trị rất cao 0.97 cho thấy một mô hình hồi qui có ý
nghĩa thống kê. Nhưng kiểm định t của mô hình chỉ ra rằng một số biến trong mô
hình không có ý nghĩa thống kê, bằng chứng là giá trị P-value của chúng lớn hơn
0.05 (5%). Do đó ta có thể nhận biết rằng mô hình trên có xảy ra hiện tượng đa
cộng tuyến.
* Khắc phục hiện tượng đa cộng tuyến với hàm step()
+ Sử dụng thuộc tính “forward”
> null=lm(y~1,data=data)
39
Ứng dụng phần mềm R nghiên cứu thống kê
> reg=lm(y~x1+x2+x3+x4)
> step(null, scope=list(lower=null, upper=reg),
direction="forward")
Trong các lệnh trên, null là mô hình chỉ có hệ số 0 (Intercept). Khi
đó null sẽ là giới hạn dưới, giới hạn trên sẽ là reg. Do chúng ta sử dụng thuộc
tính “forward” của hàm step nên chúng ta sẽ đi từ mô hình null đến mô hình
reg để tìm mô hình tối ưu.
Kết quả xuất ra từ R như sau:
Start:
y ~ 1
AIC=71.43
Step: AIC=58.69
y ~ x4
Df Sum of Sq
RSS
AIC
+ x4 1
1840.2 872.79 58.688
+ x2 1
1705.4 1007.58 60.555
+ x3 1
1441.1 1271.89 63.583
+ x1 1
1435.8 1277.14 63.637
2712.96 71.431
Df Sum of Sq
RSS
AIC
+ x1
1
796.75 76.04 28.962
+ x3
1
454.67 418.12 51.121
872.79 58.688
+ x2
1
9.59 863.20 60.544
Step: AIC=28.96
y ~ x4 + x1
Df Sum of Sq
+ x2
+ x3
1
1
RSS
AIC
76.039 28.962
1.1977 74.841 30.756
0.8795 75.160 30.811
Call:
lm(formula = y ~ x4 + x1, data = data)
Coefficients:
(Intercept)
x4
x1
103.3121
-0.6166
1.4289
+ Sử dụng thuộc tính “backward”
> step(reg, scope=list(lower=null),
direction= "backward")
Kết quả từ R
Start: AIC=32.73
y ~ x1 + x2 + x3 + x4
- x3
- x2
Df Sum of Sq
1
0.127
1
0.446
- x4
1
- x1
1
RSS
AIC
74.841 30.755
75.160 30.811
3.108
77.822 31.263
74.714 32.733
50.339 125.053 37.429
Step: AIC=30.76
y ~ x1 + x2 + x4
Df Sum of Sq
- x2
1
1.20
- x4
- x1
Step: AIC=28.96
y ~ x1 + x4
Df Sum of Sq
- x1
- x4
1
1
RSS
AIC
76.04 28.962
796.75 872.79 58.688
1201.10 1277.14 63.637
40
1
1
RSS
AIC
76.04 28.962
74.84 30.755
39.38 114.22 34.252
788.36 863.20 60.544
Ứng dụng phần mềm R nghiên cứu thống kê
Call:
lm(formula = y ~ x1 + x4)
Coefficients:
(Intercept)
103.3121
x1
1.4289
x4
-0.6166
Để cho đơn giản thì thông thường chúng ta thường sử dụng thuộc tính
“both”, nghĩa là sử dụng cả hai phương pháp “forward” và “backward”.
> step(reg, direction="both")
Từ kết quả trả về của hàm step cho ta thấy chỉ số AIC của mô hình với hai
biến x1 và x4 là nhỏ nhất, do đó mô hình tối ưu nhất sẽ là mô hình chỉ có biến x1
và x4.
yˆ 103.3 1.43 x1 0,62 x4
> summary(lm(y~x1+x4))
R xuất ra kết quả
Call:
lm(formula = y ~ x1 + x4)
Residuals:
Min
1Q
-5.1119 -1.3886
Median
0.0224
3Q
1.6686
Max
3.7343
Coefficients:
Estimate Std. Error t value
(Intercept) 103.31209
2.14205
48.23
x1
1.42892
0.13959
10.24
x4
-0.61657
0.04906 -12.57
--Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01
‘ ’ 1
Pr(>|t|)
3.54e-13 ***
1.28e-06 ***
1.89e-07 ***
‘*’ 0.05 ‘.’ 0.1
Residual standard error: 2.758 on 10 degrees of freedom
Multiple R-squared: 0.972,
Adjusted R-squared: 0.9664
F-statistic: 173.4 on 2 and 10 DF, p-value: 1.73e-08
Kết quả trên cho thấy hai biến x1 va x4 giải thích khoảng 97% phương sai
của y.
II. HỒI QUI PHI TUYẾN
Mô hình hồi qui tuyến tính được sử dụng rộng rãi trong rất nhiều lĩnh vực
khác nhau, tuy nhiên trong một số lĩnh vực đặc thù thì các mô hình trên tỏ ra kém
chính xác. Mặt khác, dữ liệu trong thực tế rất phong phú nên các mô hình hồi qui
khác tuyến tính nhằm giải quyết vấn đề khó khăn này. Những mô hình hồi qui
không phải tuyến tính được gọi là phi tuyến. Do đó mô hình hồi qui phi tuyến rất
phong phú, không thể nào có thể liệt kê hết được. Hiện nay đã có nhiều mô hình
hồi qui đặc biệt ra đời để đáp ứng nhu cầu của việc dự báo trong những lĩnh vực
khác nhau. Sau đây là một số mô hình hồi qui phi tuyến thông dụng.
41
Ứng dụng phần mềm R nghiên cứu thống kê
2.1. Hồi qui đa thức
Mô hình hồi qui đa thức có dạng:
yi 0 1 x 2 x 2 ... k x k i ,
(3.15)
trong đó các i , i 1, 2, ..., k là hệ số đo lường mối liên hệ giữa y và x, i là
phần dư của mô hình với giả định các i tuân theo phân phối chuẩn, có trung
bình bằng 0 và phương sai bằng nhau.
Trong mô hình trên, ta thấy rằng mô hình hồi qui đa thức còn là một phát
triển trực tiếp từ mô hình tuyến tính bội. Nếu ta đặt X 1 x; X 2 x 2 ; ...;
X k x k thì nó trở thành mô hình tuyến tính bội với k biến độc lập. Ngoài ra nếu
các hệ số i 0 với i 2, 3, , k thì mô hình trên sẽ đơn giản thành mô hình
hồi qui tuyến tính đơn.
Ví dụ 3.4: Thí nghiệm sau đây tìm mối liên hệ giữa hàm lượng gỗ cứng
(hardwood of concentration) và độ căng của vật liệu (tensile strength). Mười chín
vật liệu khác nhau với nhiều hàm lượng gỗ cứng được thử nghiệm để đo độ căng
mạnh của vật liệu, và kết quả được tóm lược trong bảng số liệu sau đây:
STT
Hàm lượng gỗ cứng (x) Độ căng mạnh (y)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
1.0
1.5
2.0
3.0
4.0
4.5
5.0
5.5
6.0
6.5
7..0
8.0
9.0
10.0
11.0
12.0
13.0
14.0
15.0
6.3
11.1
20.0
24.0
26.1
30.0
33.8
34.0
38.1
39.9
42.0
46.1
53.1
52.0
52.5
48.0
42.8
27.8
21.9
Bảng 3.3. Hàm lượng gỗ cứng và độ căng của vật liệu.
Dữ liệu được nhập trong phần mềm Excel là lưu dưới tên
docangvatlieu.csv.
42
Ứng dụng phần mềm R nghiên cứu thống kê
Lấy dữ liệu từ windows
> setwd("D:/studying/luan van/csv")
> data=read.csv("docangvatlieu.csv", header=T)
Gọi x là hàm lượng gỗ cứng và y là độ căng mạnh, công việc được thực
hiện trên phần mềm R như sau:
> x=data[,2]; y=data[,3]
Thử với mô hình hồi qui tuyến tính đơn với lệnh:
> reg.simple=lm(y~x)
> summary(reg.simple)
Call:
lm(formula = y ~ x)
Residuals:
Min
1Q
-25.986 -3.749
Median
2.938
3Q
7.675
Max
15.840
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 21.3213
5.4302
3.926 0.00109 **
x
1.7710
0.6478
2.734 0.01414 *
--Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1
‘ ’ 1
Residual standard error: 11.82 on 17 degrees of freedom
Multiple R-squared: 0.3054,
Adjusted R-squared: 0.2645
F-statistic: 7.474 on 1 and 17 DF, p-value: 0.01414
Từ kết quả ta nhận được mô hình tuyến tính đơn như sau:
y 21.32 1.77 x .
Với R2 là 0.31 cho thấy mô hình tuyến tính đơn này giải thích khoảng 31%
phương sai của y. Phương sai của phương trình này là s2 = (11.82)2 = 139.7.
Tiếp tục ta vẽ biểu đồ và đường biểu diễn của mô hình tuyến tính đơn vừa
tìm được:
> plot(y~x, xlab="hardwood of concentration",
ylab= "tensile strength")
> abline(reg.simple)
43
30
20
tensile strength
40
50
Ứng dụng phần mềm R nghiên cứu thống kê
10
Hardwood
Regression line
2
4
6
8
10
12
14
hardwood of concentration
Hình 3.6. Mối liên hệ giữa hàm lượng gỗ cứng và độ căng mạnh của vật liệu.
Qua hình 3.6, thấy rõ rằng mô hình hồi qui tuyến tính đơn hoàn toàn không
thích hợp cho bộ số liệu, vì mối liên hệ giữa hai biến này không tuân theo một
quy luật đường thẳng, mà là một đường cong. Nói cách khác, một mô hình đa
thức bậc hai sẽ phù hợp hơn. Có thể viết mô hình đa thức bậc hai như sau:
yi 0 1 x 2 x 2 .
Việc ước tính các hệ số i i 0, 1, 2 được thực hiện như sau:
> quadratic = lm(y~poly(x,2))
Trong lệnh trên, “Poly(x, 2)” miêu tả hàm đa thức bậc hai của x, trong
trường hợp bậc của đa thức là n thì ta sử dụng poly(x, n).
> summary(quadratic)
Và đây là kết quả từ R:
Call:
lm(formula = y ~ poly(x, 2))
Residuals:
Min
1Q
-5.8503 -3.2482
Median
-0.7267
3Q
4.1350
Max
6.5506
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept)
34.184
1.014 33.709 2.73e-16 ***
poly(x, 2)1
32.302
4.420
7.308 1.76e-06 ***
poly(x, 2)2 -45.396
4.420 -10.270 1.89e-08 ***
--Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1
‘ ’ 1
Residual standard error: 4.42 on 16 degrees of freedom
44
Ứng dụng phần mềm R nghiên cứu thống kê
Multiple R-squared: 0.9085,
Adjusted R-squared: 0.8971
F-statistic: 79.43 on 2 and 16 DF, p-value: 4.912e-09
Ta nhận được mô hình mới như sau:
y 34.18 32.30 x 45.4 x 2 .
Mô hình mới này giải thích khoảng 91% phương sai của y. Ước số phương
sai của mô hình này là s2 = (4.42)2 = 19.5 và tất cả các thông số đều có ý nghĩa
thống kê.
30
10
20
tensile strength
40
50
Rõ ràng ta thấy mô hình đa hồi qui đa thức bậc hai này tốt hơn nhiều so với
mô hình hồi qui tuyến tính.
2
4
6
8
10
12
14
hardwood of concentration
Hình 3.7. So sánh hai mô hình: tuyến tính đơn và đa thức bậc hai.
Trên hình 3.7 đường cong màu xanh là đường hồi qui đa thức bậc hai.
Đồ thị trong hình 3.7 được vẽ bởi các lệnh sau đây:
> plot(y~x, xlab="hardwood of concentration",
ylab="tensile strength")
> abline(reg.simple)
> lines(x, quadratic$fitted)
Thử tiếp tục với mô hình đa thức bậc ba (cubic) xem thử có mô tả y tốt hơn
mô hình bậc hai (quadratic) hay không.
> cubic=lm(y~poly(x,3))
> summary(cubic)
Và kết quả như sau:
45
Ứng dụng phần mềm R nghiên cứu thống kê
Call:
lm(formula = y ~ poly(x, 3))
Residuals:
Min
1Q
-4.6250 -1.6109
Median
0.0413
3Q
1.5892
Max
5.0216
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 34.1842
0.5931 57.641 < 2e-16 ***
poly(x, 3)1 32.3021
2.5850 12.496 2.48e-09 ***
poly(x, 3)2 -45.3963
2.5850 -17.561 2.06e-11 ***
poly(x, 3)3 -14.5740
2.5850 -5.638 4.72e-05 ***
--Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1
‘ ’ 1
Residual standard error: 2.585 on 15 degrees of freedom
Multiple R-squared: 0.9707,
Adjusted R-squared: 0.9648
F-statistic: 165.4 on 3 and 15 DF, p-value: 1.025e-11
Ta nhận được mô hình đa thức bậc ba:
y 34.2 32.3x 45.4 x 2 14.6 x 3 .
Ta thấy mô hình đa thức bậc ba này mô tả tốt hơn hai mô hình trước, với R2 là
0.97, nghĩa là mô hình đa thức bậc ba giải thích khoảng 97% phương sai của y.
Uớc lượng phương sai là s2 = 6.76 và tất cả các thông số đều có ý nghĩa thống kê.
* Dự đoán và vẽ đồ thị
# Tạo biến mới xnew với nhiều số gần nhau.
> xnew=(0:160)/10
# Giá trị tiên đoán của y qua hai đa thức bậc hai và bậc ba.
> quadr.pred=predict(quadratic, data.frame(x=xnew))
> cubic.pred=predict(cubic, data.frame(x=xnew))
# Vẽ đồ thị chứa 3 đường hồi qui: tuyến tính đơn, đa thức bậc hai và bậc ba.
> plot(y~x, pch=16)
> abline(reg.simple)
> lines(xnew, quadr.pred, col=4, lwd=2)
> lines(xnew, cubic.pred, col=6, lwd=2)
Kết quả được thể hiện bởi đồ thị sau đây:
46
30
10
20
y
40
50
Ứng dụng phần mềm R nghiên cứu thống kê
2
4
6
8
10
12
14
x
Hình 3.8. Biểu diễn ba đường hồi qui.
Chú ý. Trong hình 3.8 đường màu hồng là đường hồi qui đa thức bậc ba,
đường màu xanh dương là đường hồi qui đa thức bậc hai và đường thẳng biểu
diễn cho đường hồi qui tuyến tính đơn.
2.2. Hồi qui logistic
2.2.1. Những vấn đề cơ bản về ước lượng hợp lý cực đại
Phương pháp chung của hợp lý cực đại (log likelihood)
Giả sử X1, X2, …, Xn là các biến ngẫu nhiên độc lập có cùng hàm mật độ
xác suất f ( X i , ) trong đó (1 , 2 , ..., m ) là những tham số chưa biết. Lấy
một mẫu gồm n phần tử X X 1 x1 , X 2 x2 , ..., X n xn , ta có hàm mật độ
xác suất đồng thời của n quan sát được xác định như sau:
n
L ( ) f ( x1 , x2 , ..., xn | ) f ( xi , ) .
(3.16)
i 1
Hàm số xác định bởi (3.16) là hàm theo véc tơ tham số . Hàm này được gọi là
hàm hợp lý của được xây dựng từ mẫu X.
Hàm L ( ) có thể được chọn như là một tiêu chuẩn của ước lượng tối ưu
của . Phương pháp ước lượng làm cực đại hàm hợp lý được gọi là phương pháp
hợp lý cực đại của tham số. Trong phương pháp này giá trị tối ưu ˆ của được
chọn sao cho nó làm L ( ) đạt giá trị lớn nhất.
Khi cực đại của một tổng thì đơn giản hơn tích, vì vậy thay vì cực đại hàm
L ( ) người ta cực đại hàm ln( L ( )) (nếu ˆ cực đại trong ln( L ( )) thì nó cũng
cực đại trong L ( ) ). Gradient của ln( L ( )) là U ( ) được gọi là hàm điểm. Để
tìm ˆ cho hàm điểm U ( ) 0 , khi đó ta có hệ phương trình sau:
47
Ứng dụng phần mềm R nghiên cứu thống kê
n
ln f xi |
0
i 1
1
n
ln f xi |
i 1
0 .
(3.17)
2
...
n
ln f x |
i
i 1
0
m
Đây là hệ phương trình gồm m phương trình, m ẩn số i , i 1, 2, ..., m .
Giải hệ phương trình này ta sẽ tìm được tham số i .
2.2.2. Odds và tỉ số odds
Định nghĩa 3.1 Odds của một biến cố xảy ra được định nghĩa là tỉ số giữa xác
suất của biến cố xảy ra với xác suất của biến cố không xảy ra.
Odds của biến cố A được kí hiệu là odds(A).
odds ( A)
p( A)
,
1 p ( A)
(3.18)
trong đó p là xác suất biến cố xảy ra.
Tỉ số odds
Cho biến cố A, B khi đó ta có
OR ( A, B)
odds ( A)
.
odds ( B)
(3.19)
Nhận xét 3.1: Odds của một biến cố đã xảy ra là con số so sánh số lần xác
suất xảy ra và không xảy ra của một biến cố. Trong khi đó OR(A, B) là con số so
sánh số lần của odds(A) và odds(B).
2.2.3. Hồi qui logistic đơn
a) Mô hình
Với xác suất p để một biến cố A xảy ra, người ta cần đưa ra một phương
trình mô tả mối quan hệ giữa nó với giá trị của các biến độc lập
xi , i 1, 2, ..., n . Phương trình dạng tuyến tính biểu diễn p qua một tổ hợp tuyến
tính của các biến độc lập thường được nghĩ đến trước tiên. Tuy nhiên, một
phương trình tuyến tính như vậy là không hợp lý, vì xác suất p chỉ nhận giá trị
trên 0, 1 , trong khi đó tổ hợp tuyến tính của các biến độc lập có thể nhận giá trị
bất kỳ trên đường thẳng thực. Để giải quyết khó khăn này người ta sử dụng mô
hình hồi qui logistic. Hàm logistic sẽ tìm mối quan hệ giữa odds(p) với các biến
48
Ứng dụng phần mềm R nghiên cứu thống kê
độc lập bất kỳ. Mối quan hệ có thể là phi tuyến hay tuyến tính, tuy nhiên trong
các bài toán thực tế mối quan hệ này thông thường là tuyến tính. Vì vậy luận văn
chỉ giới hạn trong mối quan hệ tuyến tính.
Xét hai biến X và Y, trong đó Y chỉ nhận hai giá trị 0 và 1 còn giá trị của X
ảnh hưởng đến giá trị của Y. Gọi P ( X ) P (Y 1| X ) là xác suất có điều kiện
của Y=1 khi X xảy ra. Giả sử P(X) có mối quan hệ với biến X, nhưng ta không
thể tìm trực tiếp mối quan hệ này vì P(X) thuộc đoạn [0, 1] trong khi X là tùy ý.
P( X )
Bởi vì ln odds P ( X ) ln
có mối quan hệ với P(X) và có giá
1 P ( X )
trị bất kỳ (xem hình 3.9) nên ta có thể thay thế mối quan hệ giữa P(X) và X bằng
P( X )
mối quan hệ giữa ln
và X. Giả sử mối quan hệ này là tuyến tính.
1 P ( X )
P( X )
ln
0 1 X ,
1 P ( X )
(3.20)
P( X )
e( X ) .
1 P( X )
(3.21)
hay
0
1
0
-4
-2
logit(p)
2
4
(3.20) và (3.21) là hai hình thức của mô hình hồi qui logistic đơn.
0.0
0.2
0.4
0.6
0.8
1.0
p(x)
Hình 3.9. Mối quan hệ giữa logit[p(x)] và p(x).
Trong đó
P( X )
ln odds P ( X ) hay ln
còn được gọi là logit P ( X ) .
1
P
(
X
)
49
Ứng dụng phần mềm R nghiên cứu thống kê
Hai tham số 0 và 1 được gọi là hai hệ số của đường hồi qui, cụ thể hơn
0 được gọi làm điểm chắn, 1 được gọi là độ dốc.
Chú ý 3.2
i) Ta có
logit P ( X 1) logit P( X ) 0 1 ( X 1) ( 0 1 X ) 1 .
Như vậy khi Xi tăng lên 1 đơn vị thì logit P ( X ) sẽ tăng lên 1 %.
ii) Khi X=X0 thì giá trị của odds tương ứng là
odds P ( X ) | X 0 e X .
0
1
0
Khi X=X0+1 (tức tăng một đơn vị từ X0), thì
odds P ( X ) | X 0 1 e ( X
0
1
0 1)
.
Khi đó tỉ số OR là tỉ số của hai odds được tính bằng công thức sau:
odds P | X 0 1 e ( X 1)
OR
X e .
odds P | X 0
e
0
1
0
1
0
1
0
b) Xây dựng mô hình hồi qui mẫu
Thông thường để ước lượng các hệ số trong đường hồi qui ta dùng phương
pháp bình phương bé nhất, tuy nhiên trong hồi qui logistic nó rất phức tạp. Ở đây
ta sử dụng phương pháp hợp lý cực đại.
Giả sử ta có n mẫu quan sát độc lập (xi, pi), i=1, 2, …, n trong đó
Pi ( x) pi . Giả sử phân phối có điều kiện cho yi khi xi xảy ra là phân phối nhị
p
thức B 1, pi với ln i 0 1 x .
1 pi
Gọi ˆ0 , ˆ1 lần lượt là các ước lượng của 0 và 1 . Chúng ta xây dựng
đường hồi qui:
pˆ ( x) ˆ
0 ˆ1 x .
ln
1 pˆ ( x )
(3.22)
Việc ước lượng các hệ số ˆ0 , ˆ1 trong (3.22) rất phức tạp, có thể đề cập
một cách ngắn gọn bởi một hệ phương trình sau đây:
n
n
1 e ˆ ˆ x
y
i
i 1
i 1
n
n
ˆ ˆ x
x y x 1 e
i i
i
i 1
i 1
1
0
1 i
1
0
1 i
Ta có xác suất sự thành công được xác định bởi
50
Ứng dụng phần mềm R nghiên cứu thống kê
ˆ
ˆ
e X
pˆ
,
ˆ ˆ
1 e X
0
1
0
0
1
0
hay
pˆ
1
ˆ
ˆ
1 e( X
0
1
0)
.
(3.23)
Lệnh trong R
Hàm số glm (viết tắt từ generalized linear model) trong R được sử dụng để
tìm hệ số hồi qui cho mô hình logistic, với cú pháp như sau:
> glm(fomular, family = “binomial”)
Chú ý: Trong hàm glm có nhiều luật phân phối, trong trường hợp mô hình hồi
qui logistic có biến phụ thuộc là nhị phân nên chúng ta sử dụng phân phối là nhị
thức (family = “binomial”).
Ví dụ 3.5: Nghiên cứu mối tương quan giữa fibrinogen và ESR (erythrocyte
sedimentation rate). ESR là tỉ suất mà các hồng cầu đọng lại trong huyết thanh.
Bệnh nhân với ESR cao hơn 20mm/giờ có nguy cơ cao bị bệnh thấp khớp, và các
bệnh viêm mãn tính; và bệnh nhân với ESR thấp hơn 20mm/giờ được xem là
bình thường. Khi ESR tăng, một số protein trong máu cũng tăng. Một trong
những protein đó là fibrinogen. Một nghiên cứu đo lường ESR và fibrinogen ở 32
đối tượng (Collett D, Jenmain AA. Residuals, outliers ang influential
observations in regression analysis. Sain Malaysias 1985; 4:493-511), các nhà
nghiên cứu phát hiện trong nhóm này có 6 đối tượng với ESR cao hơn 20 mm/
giờ. Số liệu của 32 đối tượng được trình bày trong bảng sau đây:
STT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Fibrinogen
2.52
2.56
2.19
2.18
3.41
2.46
3.22
2.21
3.15
2.6
2.29
2.35
3.15
2.68
2.6
2.23
ESR
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
STT
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Fibrinogen
2.88
2.65
2.28
2.67
2.29
2.15
2.54
3.34
2.99
3.32
5.06
3.34
2.38
3.53
2.09
3.39
ESR
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
Bảng 3.4: Nghiên cứu đo lường ESR và fibrinogen ở 32 đối tượng.
51
Ứng dụng phần mềm R nghiên cứu thống kê
Trong bảng trên các bệnh nhân có nguy cơ cao bị bệnh thấp khớp được mã
hóa là 1 (ESR=1) và các bệnh nhân “bình thường” là 0 (ESR=0). Tìm mối tương
quan giữa Fibrinogen và ESR.
Để nhập số liệu các bước sau đây là cần thiết:
> setwd("D:/studying/luan van/csv")
> fulldata=read.csv("ESR.csv", header=T)
> fibrinogen=fulldata[,2]
> esr=fulldata[,3]
# Vẽ đồ thị thể hiện mối quan hệ giữa ESR và fibrinogen
> plot(fibrinogen, esr, pch=16,
0.6
0.4
0.0
0.2
ESR (0=no, 1=yes)
0.8
1.0
ylab="ESR (0=no, 1=yes)")
2.0
2.5
3.0
3.5
4.0
4.5
5.0
fibrinogen
Hình 3.10. Đồ thị thể hiện mối quan hệ giữa ESR và fibrinogen.
> boxplot(fibrinogen ~ esr, xlab="ESR",
ylab="Fibrinogen")
Lệnh trên yêu cầu R vẽ biểu đồ hình hộp (box plot) về fibrinogen phân
nhóm theo biến ESR, và kết quả được trình bày trong biểu đồ sau đây:
52
3.5
2.0
2.5
3.0
Fibrinogen
4.0
4.5
5.0
Ứng dụng phần mềm R nghiên cứu thống kê
0
1
ESR
Hình 3.11. Thể hiện độ phân phối của fibrinogen giữa hai nhóm ESR.
Gọi p là xác suất bệnh nhân có nguy cơ bị thấp khớp. Ta có phương trình
hồi qui:
pˆ ( x) ˆ
ˆ
ln
0 1 fibrinogen .
ˆ
p
x
1
(
)
(3.24)
Để ước tính các thông số của mô hình (3.24) ta thực hiên các bước sau:
> logistic=glm(esr~fibrinogen, family="binomial")
> summary(logistic)
Kết quả xuất ra từ R
Call:
glm(formula = esr ~ fibrinogen, family = "binomial")
Deviance Residuals:
Min
1Q
Median
-0.9298 -0.5399 -0.4382
3Q
-0.3356
Max
2.4794
Coefficients:
Estimate
-6.8451
1.8271
(Intercept)
fibrinogen
--Signif. codes:
‘ ’ 1
Std. Error
2.7703
0.9009
z value
-2.471
2.028
Pr(>|z|)
0.0135 *
0.0425 *
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 30.885 on 31 degrees of freedom
Residual deviance: 24.840 on 30 degrees of freedom
AIC: 28.84
Number of Fisher Scoring iterations: 5
53
Ứng dụng phần mềm R nghiên cứu thống kê
Từ kết quả trên ta có mô hình log(odds) hay logit như sau:
pˆ ( x) ˆ
0 ˆ1 x 6.85 1.83* fibrinogen ,
ln
1 pˆ ( x)
(3.25)
hay
pˆ ( x)
exp(6.85 1.83* fibrinogen) .
1 pˆ ( x)
Khi đó xác suất để bệnh nhân mắc bệnh thấp khớp là:
pˆ
1
1
.
1 exp ( ˆ0 ˆ1 X 0 ) 1 exp ( 6.45 1.71* fibrinogen)
Từ mô hình hồi qui (3.25), ta có nhận xét:
Nếu fibrinogen tăng lên 1 thì khi đó odds(p) tăng lên exp(1.83x1) = 6.23.
Nếu fibrinogen tăng lên 2 thì odds(p) tăng lên exp(1.83x2) = 38.86.
d) Tổng bình phương sai số deviance
Trong hồi qui logistic định nghĩa tổng bình phương sai số được thay thế bởi
khái niệm deviance. Trước khi đến với công thức tính deviance, ta cần xét log likelihood của hồi qui logistic.
* Log likelihood của hồi qui logistic
Gọi yi là số lần xảy ra khi thực hiện mi phép thử i=0, 1, …, n.
Khi đó
yi | xi Bin(mi , p( xi )) .
Hàm mật độ xác suất được xác định như sau:
P (Yi yi | xi ) Cmy p( xi ) y (1 p ( xi )) m y .
i
i
i
i
i
Ta có hàm hợp lý cực đại (likelihood) như sau:
n
n
L P (Yi yi | xi ) Cmy p ( xi ) y (1 p ( xi ))m y .
i
i 1
i
i
(3.26)
i
i
i 1
Hàm log-likelihood được cho bởi:
n
log( L ) log Cmy log p ( xi ) y log 1 p( xi )
i 1
i
i
i
n
mi yi
.
= yi log p ( xi ) ( mi yi ) log 1 p ( xi ) log C
yi
mi
i 1
Do luận văn chỉ xét hồi qui logistic với biến phụ thuộc là biến nhị phân nên
mi= 1. Khi đó
54
Ứng dụng phần mềm R nghiên cứu thống kê
n
log( L ) yi log p ( xi ) (1 yi ) log 1 p ( xi ) log C1y . (3.27)
i 1
i
* Công thức tính deviance
n
y
1 yi
G 2 2 yi log i (1 yi ) log
.
i 1
yˆ i
1 yˆ i
(3.28)
Deviance trong mô hình hồi qui logistic (M) được dựa trên sự so sánh giữa
giá trị maximum-likelihood (M) với maximum-likelihood (S). Trong thực tế thì
deviance được hiểu là độ khác biệt giữa hai giá trị maximum-likelihood ở trên.
(S) ước tính giá trị p xi , i 1, 2, ..., n bởi những giá trị quan sát. Ký hiệu
pˆ S xi yi . Đặt pˆ M xi ký hiệu cho ước tính p ( xi ) từ mô hình hồi qui logistic.
Đặt yˆ i là giá trị dự đoán của yi từ mô hình hồi qui logistic, khi đó pˆ M xi yˆ i .
Ta có
G 2 2 log( LS ) log( LM )
n
=2 yi log yi (1 yi )log 1 yi
i 1
n
-2 yi log yˆ i (1 yi ) log 1 yˆ i
i 1
n
1 yi
y
=2 yi log i (1 yi )log
.
ˆ
ˆ
1
y
y
i 1
i
i
Ở ví dụ 3.5, trong phần kết quả xuất ra từ R ta có một số dòng code sau đây:
Null deviance: 30.885 on 31 degrees of freedom
Residual deviance: 24.840 on 30 degrees of freedom
Cho biết giá trị deviance của mô hình khi không có biến độc lập (Null
deviance) và có biến độc lập (Residual deviance)
e) Hệ số xác định R2
Nhớ lại rằng công thức để tính R2 được chúng ta sử dụng trong hồi qui
tuyến tính được tính bằng công thức:
R2
SSR
SSE
.
1
SST
SST
Trong mô hình hồi qui logistic thì R2 được tính bởi công thức:
R2 1
G12
.
G02
(3.29)
Trong đó
G02 : là giá trị deviance khi không có biến độc lập (null deviance),
55
G12 : là giá trị deviance khi có biến độc lập (residuals deviance).
Ứng dụng phần mềm R nghiên cứu thống kê
Trở lại với ví dụ 3.5, kết quả xuất ra từ R, ta nhận được
Null deviance: 30.885 on 31 degrees of freedom
Residual deviance: 24.840 on 30 degrees of freedom
Khi đó hệ số xác định sẽ là:
R2 1
24.84
0.2 .
30.885
Nói cách khác, fibrinogen giải thích khoảng 20% phương sai của ESR.
f) Kiểm định Z-Đánh giá ý nghĩa từng biến độc lập riêng biệt
Đặt giả thuyết
H : 1 0
H : 1 0
Thống kê dùng để kiểm định :
Z
ˆ1
S ˆ
.
(3.30)
1
Miền bác bỏ: W Z ; .
2
Nếu Z W thì ta bác bỏ giả thuyết H.
Trong thực tế, khi xét trong mô hình hồi qui logistic đơn thì kiểm định Z
không được quan tâm nhiều.
2.2.4. Hồi qui logistic bội
Dạng của mô hình như sau :
n
P
ln
i X i ,
0
i 1
1 P
hay
n
P
exp( 0 i X i ) .
1 P
i 1
Gọi ˆi (i 1, 2, ..., n) là các ước lượng i . Khi đó ta có mô hình hồi qui
n
pˆ ˆ
ln
ˆi xi .
0
ˆ
1
p
i 1
Các hệ số ˆi (i 1, 2, ..., n) được tính bởi hệ phương trình sau:
56
Ứng dụng phần mềm R nghiên cứu thống kê
1
n
n
n
ˆ
ˆ
yi 1 exp 0 j xij
i 1
i 1
i 1
1
n
n
n
ˆ
ˆ
xi yi xi 1 exp 0 j xij
i 1
i 1
i 1
Ví dụ 3.6. Các yếu tố có thể làm tăng nguy cơ tử vong khi nhiểm trùng huyết
là tuổi bệnh nhân, hạ huyết áp, có bệnh nền, procaltionin hoặc suy giảm miễn
dịch… Trong ví dụ này ta chỉ xét đến 3 yếu tố: procaltionin, hạ huyết áp và tuổi
bệnh nhân. Dữ liệu 30 bệnh nhân nhiễm trùng huyết như sau: age (tuổi),
hypotension (hạ huyết áp), procaltionin (ng/ml) và dealth (tử vong):
STT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Age (x1) Hypotension (x2) Procaltionin (x3) dealth
70
1
0.7
1
80
1
0.4
1
50
1
0.7
1
55
1
0.8
1
60
1
0.9
1
65
1
1.0
1
70
1
0.5
1
75
1
0.7
1
80
1
1.2
1
50
1
0.8
1
70
1
1.1
1
45
1
0.6
1
60
1
1.3
1
90
0
3.3
1
40
1
0.2
0
60
0
0.7
0
60
0
0.5
0
30
0
0.2
0
28
0
0.3
0
30
0
0.4
0
35
0
0.8
0
55
0
0.7
0
60
0
0.5
0
70
0
0.1
0
32
0
0.2
0
30
0
0.4
0
44
0
0.5
0
29
0
0.2
0
30
0
0.7
0
40
0
0.1
0
Bảng 3.5. Dữ liệu 30 bệnh nhân nhiễm trùng huyết.
57
Ứng dụng phần mềm R nghiên cứu thống kê
Tìm mô hình thích hợp thể hiện mối quan hệ giữa nguy cơ bệnh nhiễm
trùng huyết và các biến x1, x2, x3.
Giải
Gọi p là xác suất một người có nguy cơ bị tử vong. Ta có mô hình hồi qui
logistic bội như sau:
ln(
p
) 0 1 x1 2 x2 3 x3 .
1 p
# Nhập dữ liệu
> x1 = c(70, 80, 50, 55, 60, 65, 70, 75, 80, 50,
70, 45, 60, 90, 40, 60, 60, 30, 28, 30, 35,
35, 60, 70, 32, 30, 44, 29, 30, 40)
> x2 = c(rep(1, 14), 0, 1, rep(0, 14))
> x3 = c(0.7, 0.4, 0.7, 0.8, 0.9, 1.0, 0.5, 0.7, 1.2,
0.8, 1.1, 0.6, 1.3, 3.3, 0.2, 0.7, 0.5, 0.2,
0.3, 0.4, 0.8, 0.7, 0.5, 0.1, 0.2, 0.4, 0.5,
0.2, 0.7, 0.1)
> y = c(rep(1, 15), rep(0, 15))
# Hợp các biến thành một data
> data reg summary(reg)
Call:
glm(formula = y ~ ., family = "binomial", data = data)
Deviance Residuals:
Min
1Q
Median
-2.2871 -0.3560 -0.0367
3Q
0.3656
Max
2.3426
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -3.41371
2.60661 -1.310
0.1903
x1
0.01779
0.05739
0.310
0.7565
x2
4.79989
2.00120
2.399
0.0165 *
x3
0.12241
1.91052
0.064
0.9489
--Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1
‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 41.589
Residual deviance: 14.582
AIC: 22.582
on 29
on 26
58
degrees of freedom
degrees of freedom
Ứng dụng phần mềm R nghiên cứu thống kê
Ta có được mô hình hồi qui logistic bội như sau:
p
ln
3.41 0.02 x1 4.79 x2 0.12 x3 .
1 p
Với hệ số R2 được xác định như sau:
R2 1
14.6
0.65 .
41.6
R2= 0,65 cho thấy các biến độc lập giải thích khoảng 65% phương sai của phụ
thuộc. Ngoài ra ta thấy các ở các biến độc lập chỉ có biến x2 là có ý nghĩa thống
kê với p-value= 0.01 (thỏa mản điều kiện nhở hơn 5%). Ở đây đã xảy ra hiện
tượng đa cộng tuyến.
# Sử dụng hàm step để khắc phục hiện tượng đa cộng tuyến và tìm ra mô
hình thích hợp nhất dựa vào chỉ số AIC.
> step(reg)
Kết quả từ R:
# Mô hình với đầy đủ các biến.
# mô hình sau khi loại bỏ biến x3.
Start: AIC=22.58
y ~ x1 + x2 + x3
Step: AIC=20.59
y ~ x1 + x2
Df Deviance
AIC
- x3
1
14.586 20.586
- x1
1
14.675 20.675
14.582 22.582
- x2
1
22.108 28.108
Df Deviance
AIC
- x1
1
14.696 18.696
14.586 20.586
- x2
1
27.121 31.121
# Mô hình sau khi loại bỏ hai biến x3, x1.
Step: AIC=18.7
y ~ x2
Df Deviance
AIC
14.696 18.696
- x2
1
41.589 43.589
Từ kết quả trên ta có thể tóm lượt theo chỉ số AIC như sau:
Mô hình
AIC
y ~ x1 + x2 + x3
y ~ x1 + x2
y ~ x2
22.58
20.59
18.7
Ta thấy chỉ số AIC của mô hình chỉ có biến x2 là nhỏ nhất, nói cách khác mô
hình chỉ có biến x2 là mô hình phù hợp nhất.
> summary(glm(y~x2, family="binomial"))
Call:
glm(formula = y ~ x2, family = "binomial")
59
Ứng dụng phần mềm R nghiên cứu thống kê
Deviance Residuals:
Min
1Q
Median
-2.3272 -0.3715
0.0000
3Q
0.3715
Max
2.3272
Coefficients:
Estimate Std. Error z value
(Intercept)
-2.639
1.035 -2.550
x2
5.278
1.464
3.606
--Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01
‘ ’ 1
Pr(>|z|)
0.010785 *
0.000311 ***
‘*’ 0.05 ‘.’ 0.1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 41.589
Residual deviance: 14.696
AIC: 18.696
on 29
on 28
degrees of freedom
degrees of freedom
Từ kết quả trên ta nhận được mô hình:
p
ln
2.3 5.3 x2 .
1
p
và hệ số R 2 1
14.7
0.65 , cho thấy biến x2 giải thích khoảng 65% phương sai
41.6
của y.
60
Ứng dụng phần mềm R nghiên cứu thống kê
Chương 4
PHÂN TÍCH CHUỖI THỜI GIAN
I. ĐẠI CƯƠNG VỀ CHUỖI THỜI GIAN
1.1. Chuỗi thời gian
Định nghĩa 4.1: Chuỗi thời gian là một dãy các giá trị quan sát được sắp xếp
thứ tự theo diễn biến thời gian.
Dạng tổng quát của dãy số thời gian như sau:
ti
yi
t1
y1
t2
y2
...
...
tn
yn
trong đó
ti (i=1, 2, …, n): Thời gian thứ i,
yi (i=1, 2, …, n): Giá trị chỉ tiêu tương ứng với thời gian ti (i=1, 2, …, n).
Ví dụ 4.1
- Giá một loại sản phẩm.
- Số lượng hàng bán được của một công ty trong 12 tháng.
- Chỉ số giá tiêu dùng theo tháng của Việt Nam.
- Điện tâm đồ của một bệnh nhân tim mạch.
Tạo chuỗi thời gian với phần mềm R
Hàm được sử dụng cho việc tạo chuỗi thời gian là hàm ts().
i) Cú pháp
> ts(data=NA,start=1,end=numeric(0),frequency=1,
deltat=1, ts.eps=getOption("ts.eps"), class=,names =)
as.ts(x, ...)
is.ts(x)
ii) Các thông số
data
giá trị của chuỗi thời gian dưới dạng số hoặc ma trận. Một
khung dữ liệu sẽ được lưu trữ một ma trận số data.matrix.
start
thời gian bắt đầu quan sát. Nó có thể là một số hay là một véc
tơ, chỉ rõ một đơn vị thời gian và số mẫu chứa trong đơn vị thời
gian đó.
end
thời gian kết thúc quan sát. Công thức tương tự như start.
frequency
số quan sát trong mỗi đơn vị thời gian.
deltat
phần của mẫu được lấy trong kỳ quan sát liên tục; vd:1/12 cho
61
Ứng dụng phần mềm R nghiên cứu thống kê
dữ liệu tháng. Chỉ một trong frequency hoặc deltat được cung
cấp.
ts.eps
bộ so sánh chuỗi thời gian trong giới hạn cho phép. Những tần
số được xem là bằng nhau nếu những tần số cực đại khác nhau
nhỏ hơn ts.eps.
class
class sẽ cho là kết quả, hoặc không có nếu NULL hoặc "none".
Mặc định là "ts" cho chuỗi thời gian đơn, c("mts", "ts") cho
chuỗi thời gian bội.
names
tên của một véc tơ chuỗi thời gian trong chuỗi thời gian bội.
x
một đối tượng R bất kỳ.
...
các đối số hợp với phương pháp.
Ví dụ 4.2
Tạo ra một chuỗi thời gian với số liệu 1, 2, ..., 36 với tần suất bằng 12, bắt
đầu từ tháng thứ nhất của năm 1990.
> ts(1:36, frequency = 12, start = c(1990, 1))
Kết quả từ R như sau:
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1990
1
2
3
4
5
6
7
8
9 10 11 12
1991 13 14 15 16 17 18 19 20 21 22 23 24
1992 25 26 27 28 29 30 31 32 33 34 35 36
1.2. Các thành phần của chuỗi thời gian
Một chuỗi thời gian chứa một vài hoặc tất cả các thành phần sau:
a) Thành phần xu hướng T (Trend component)
Thành phần này dùng để chỉ xu hướng tăng giảm của đại lượng X trong
khoảng thời gian dài. Về mặt đồ thị, thành phần này có thể diễn tả một đường
thẳng hoặc một đường cong trơn.
Xu hướng giảm theo thời gian
62
Ứng dụng phần mềm R nghiên cứu thống kê
b) Thành phần mùa S (Seasonal component)
Thành phần này chỉ sự thay đổi của đại lượng X theo các mùa trong năm
(cũng có thể theo các tháng trong năm).
Ví dụ 4.3
- Lượng tiêu thụ chất đốt sẽ tăng vào mùa đông và sẽ giảm vào mùa hè.
Ngược lại lượng tiêu thụ xăng sẽ tăng vào mùa hè và giảm vào mùa đông.
- Lượng tiêu thụ đồ dùng học tập sẽ tăng vào mùa khai trường.
Chất
đốt
thay đổi theo mùa
Xu hướng tăng theo thời gian
c) Thành phần chu kỳ C (Cyclial component)
Thành phần này chỉ sự thay đổi giá trị của đại lượng X theo chu kỳ. Sự
khác biệt của thành phần này so với thành phần mùa là chu kỳ của nó dài hơn
một năm. Để đánh giá thành phần chu kỳ các giá trị của chuỗi thời gian sẽ được
quan sát hàng năm.
Ví dụ 4.4: Lượng dòng chảy đến hồ chứa Trị An từ năm 1959 đến 1985.
63
Ứng dụng phần mềm R nghiên cứu thống kê
d) Thành phần bất thường I (Irregular component)
Thành phần này dùng để chỉ những sự thay đổi bất thường của các giá trị
của đại lượng X. Sự thay đổi này không thể dự đoán bằng các số liệu kinh
nghiệm trong quá khứ. Bản chất của thành phần này là nó không có chu kỳ.
Lệnh trong R
Trong R các hàm decompose và stl đánh giá thành phần xu hướng và
mùa dựa trên phương pháp trung bình dịch chuyển và đa thức tương ứng. Hai
hàm này có thể được sử dụng như phương pháp mô tả để xem các thành phần
chính của một chuỗi thời gian, trước khi chuyển sang các phương pháp mô hình
thống kê.
a) Hàm decompose()
i) Mô tả
Hàm decompose dùng để phân tích chuỗi thời gian trong các thành phần
mùa và thành phần xu hướng sử dụng phương pháp trung bình dịch chuyển. Xét
với thành phần mùa thì ta có mô hình là nhân hoặc cộng.
ii) Cú pháp
> decompose(x, type = c("additive",
"multiplicative"), filter = NULL)
c) Các thông số
x
một chuỗi thời gian.
type
loại của thành phần mùa: mô hình cộng "additive", mô hình
nhân "multiplicative". Có thể viết tắt.
filter
một vector của phép lọc những hệ số trong bậc lùi thời gian (hệ số
của mô hình AR hoặc MA), dùng cho việc lọc ra thành phần mùa.
Nếu NULL, mô hình trung bình dich chuyển với cửa sổ đối xứng
được thi hành.
Ví dụ 4.5
Gán x là tập dữ liệu
> x = c(418, 463, 343, 344, 453, 430, 486, 418, 281,
420, 506, 479, 482, 406, 440, 430, 417, 408, 377, 412, 320)
#Tạo ra chuỗi thời gian có tên là x.ts, năm bắt đầu là 1990 với tần số là 4.
> x.ts=ts(x,st=1990,fr=4)
# Gán p là decompose của x.ts
> p = decompose(x.ts)
# Vẽ đồ thị p
> plot(p)
64
Ứng dụng phần mềm R nghiên cứu thống kê
Hình 4.1. Sự phân tích chuỗi thời gian với hàm decompose.
b) Hàm stl()
i) Mô tả
Dùng để phân tích chuỗi thời gian với thành phần mùa, thành phần xu
hướng dựa trên phương pháp đa thức tương ứng (hay trung bình có trọng số hồi
qui).
ii) Cú pháp
> stl(x, s.window, s.degree = 0,…)
c) Các thông số
x
chuỗi thời gian được phân tích. Nó là một đối tượng của lớp
"ts" với tần số lớn hơn một.
s.window
ở đây luận văn chỉ xét thuộc tính "periodic" cho s.window.
s.degree
bậc của đa thức thích hợp trong sự trích ra thành phần mùa. Phải
là 0 hoặc 1.
…
…
Ví dụ 4.6: Ta tiếp tục ví dụ 4.5
Tiến hành phân tích chuỗi thời gian với hàm stl()
# Gán p là phân tích stl của x.
> p = stl(x.ts, s.window="per")
> plot(p)
65
Ứng dụng phần mềm R nghiên cứu thống kê
Hình 4.2. Sự phân tích chuỗi thời gian với hàm stl.
1.3. Mô hình hóa dự báo giá trị của đại lượng ngẫu nhiên
Các thành phần của chuỗi thời gian X có thể được kết hợp trong nhiều cách
khác nhau. Thông thường chúng được kết hợp theo mô hình nhân và mô hình
cộng.
1.3.1. Mô hình nhân (Mutiplicative model)
Mô hình có dạng:
X t Tt St Ct I t ,
(4.1)
trong đó
X t là giá trị đại lượng X ở thời điểm t ,
Tt là giá trị của thành phần xu hướng ở thời điểm t , Tt có cùng đơn vị với
X t ,
St , Ct , I t là các hệ số đánh giá ảnh hưởng của các thành phần mùa, thành
phần chu kỳ và thành phần bất kỳ đến giá trị của X ở thời điểm t .
Trong thực tế, việc xác định thành phần I t rất khó nên ta thường bỏ qua
thành phần này.
Khi đó
X t Tt St Ct .
2.3.2. Mô hình cộng (Additive model)
Mô hình cộng có dạng:
X t Tt St Ct I t ,
trong đó
66
Ứng dụng phần mềm R nghiên cứu thống kê
X t là giá trị đại lượng X ở thời điểm t .
Tt , St , Ct , I t là thành phần xu hướng, mùa, chu kỳ và bất thường ở thời
điểm t .
Trong nhiều trường hợp, để dự báo giá trị của đại lượng X , ta có thể kết
hợp cả hai mô hình trên.
1.4. Tách thành phần xu hướng và thành phần mùa
Trong lý thuyết quá trình ngẫu nhiên, người ta thường biểu diễn một quá
trình {X t , t T } dưới dạng:
X t f ( Dt , t ) ,
(4.2)
trong đó f là hàm số tất định, Dt là biến tất định (một biến thay đổi theo quy
luật tất định phụ thuộc vào thời gian t ) và t là biến ngẫu nhiên phụ thuộc vào
thời gian t .
Trong thực tế, các kết quả nghiên cứu về chuỗi thời gian đều tập trung vào
mô hình cộng và mô hình nhân.
Nếu mô hình cộng thì biểu thức (4.2) có dạng
X t Dt t ,
(4.3)
trong đó thành phần t bé so với Dt nhưng chưa nhỏ đến mức có thể bỏ qua
được.
Nếu mô hình nhân thì biểu thức (4.2) có dạng
X t Dt t .
(4.4)
Về nguyên tắc, bao giờ cũng tìm được phép biến đổi thích hợp để đưa (4.4)
về dạng (4.3). Vì vậy ta chỉ tập trung nghiên cứu dạng (4.3).
1.5. Độ trể
Trong phân tích chuỗi thời gian, chúng ta thường gặp biến phụ thuộc ở thời
điểm t phụ thuộc vào chính biến đó ở thời điểm t-1 và các biến khác, hay nói một
cách dể hiểu biến ngày hôm nay phụ thuộc vào chính biến đó của ngày hôm qua.
Chẳng hạn khi nghiên cứu mối quan hệ giữa tiêu dùng và thu nhập, chúng
ta thấy rằng tiêu dùng ở thời điểm hiện tại chẳng những phụ thuộc vào thu nhập
mà còn phụ thuộc vào tiêu dùng ở thời điểm trước đó.
1.6. Ồn trắng
Định nghĩa 4.2. Một chuỗi thời gian { t : t 1, 2,..., n} được gọi là ồn trắng
riêng biệt nếu các biến số của nó độc lập nhau và có phân bố đồng nhất với kỳ
vọng là 0, phương sai 2 và corr( i , j ) 0 , i j . Nếu các biến số này có
phân bố chuẩn (tức là, t N (0, 2 ) ) thì chuỗi này được gọi là ồn trắng
Gaussian.
67
Ứng dụng phần mềm R nghiên cứu thống kê
Ví dụ 4.7. Tạo ra 100 biến ngẫu nhiên độc lập có phân phối chuẩn ta dùng lệnh
rnorm(). Điều này tương đương với tạo ra một chuỗi ồn trắng Gaussian có độ
dài 100. Ta thực hiện các lệnh sau:
> set.seed(1)
> w = rnorm(100)
Lệnh thứ hai yêu cầu R gán w là tập gồm 100 biến ngẫu nhiên có phân phối
chuẩn. Ta biết mỗi lần chạy lệnh thì w sẽ nhận những giá trị khác nhau, do dó
lệnh thứ nhất có chức năng là cố định tập w. Ở lệnh thứ nhất set.seed(1) có
nghĩa là cố định dòng tiếp theo sau nó. Tất nhiên nếu set.seed(2) thì sẽ có
chức năng cố định 2 dòng tiếp theo sau nó.
# Vẽ đồ thị của w theo dạng đường.
0
-2
-1
w
1
2
> plot(w, type = “l”)
0
20
40
60
80
100
Index
Hình 4.3. Đồ thị của 100 biến ngẫu nhiên.
1.7. Quá trình dừng (Stationary process)
1.7.1. Quá trình dừng
a) Hàm tự hiệp phương sai (Autocovariance function)
Định nghĩa 4.3. Nếu {X t , t T } là một quá trình có Var( X t ) với mỗi
t T thì hàm tự hiệp phương sai được định nghĩa bởi
( r , s ) cov( X r , X s ) E ( X r EX r )( X s EX s ) ; r , s T .
b) Quá trình dừng mạnh (Strongly/strichly stationary process)
Định nghĩa 4.4. Chuỗi thời gian {X t , t } được gọi là dừng mạnh (hay dừng
nghiêm ngặt) nếu
68
Ứng dụng phần mềm R nghiên cứu thống kê
d
( X t1 , X t2 , ..., X tk ) ( X t1 h , X t2 h , ..., X tk h ) t1 , ..., tk , h .
d
Trong đó “ ” ký hiệu cho “=” trong phân bố.
Một cách trực quan, tính dừng có nghĩa là quá trình đạt đến một loại cân
bằng thống kê và phân bố của quá trình không thay đổi nhiều.
c) Quá trình dừng yếu (Weak stationary process)
Định nghĩa 4.5. Chuỗi thời gian {X t , t } được gọi là dừng yếu hay dừng
cấp hai nếu:
i) E ( X t ) , t .
ii) E X t , t .
2
iii) ( r , s ) ( r t , s t ), t , r , s .
Về bản chất, quá trình dừng yếu là một quá trình có kỳ vọng, phương sai là
hằng (không phụ thuộc vào thời điểm khảo sát) và có tự hiệp phương sai không
phụ thuộc vào thời điểm khảo sát mà phụ thuộc vào khoảng cách giữa hai thời
điểm khảo sát.
Chú ý 4.1
- Quá trình dừng mạnh thì dừng yếu. Điều ngược lại không đúng ngoại trừ
trường hợp của phân bố chuẩn.
- Trong luận văn này, nếu không nói gì thêm thì ta hiểu khái niệm dừng là
dừng yếu.
- Khi {X t , t } dừng thì
( r , s ) ( r s,0) , r , s .
Vì vậy, với quá trình dừng ta có thể định nghĩa lại hàm tự hiệp phương sai
thông qua hàm một biến:
( h) (h,0) cov( X t , X t h ) , t , h .
Hàm số (.) được coi là hàm tự hiệp phương sai của {X t } và ( h) là giá
trị của nó tại “trễ” h.
d) Hàm tự tương quan (Autocorrelation function)
Định nghĩa 4.6. Hàm tự tương quan của chuỗi thời gian dừng {X t } được định
nghĩa tại biến trễ h là:
(h)
(h)
corr(X t , X t h ), t , h .
(0)
69
Ứng dụng phần mềm R nghiên cứu thống kê
Chứng minh
h
cov X , X
h cov X t , X t h
t th
0
VarX
VarX . VarX
t
t
=
t h
cov X , X
t t h Corr ( X , X
).
t th
( X ). ( X
)
t
th
1.7.2. Các tính chất của hàm tự hiệp phương sai của một quá trình dừng
Định lí 4.1 (Các tính chất sơ cấp)
Nếu ( h) là hàm hiệp tự phương sai của một quá trình dừng {X t } thì
i) (0) 0 .
ii) (h) (0) h .
iii) ( h) là hàm chẳn, tức là ( h) ( h) h .
Định nghĩa 4.7 (Tính xác định không âm)
Một hàm thực k : được gọi là xác định không âm nếu và chỉ nếu
n
a k t
i
i
t j a j 0 .
i , j 1
t
Với mọi số nguyên dương n và với mọi véc tơ a : a1 , a2 , ..., an n và
t
t : t1 , t 2 , ..., t n n hay nếu và chỉ nếu
n
a k i j a
i
j
0 với mọi n và a
i , j 1
đã nêu ở trên.
Định lí 4.2 Một hàm thực xác định trên tập là hàm tự hiệp phương sai của
một chuỗi thời gian dừng nếu và chỉ nếu nó là hàm chẳn và xác định không âm.
1.7.3. Quá trình Gauss
Định nghĩa 4.8 Giả sử {X t , t } là một quá trình dừng cấp hai với kỳ vọng
0. Quá trình X t là quá trình Gauss nếu X t1 , X t2 ,..., X tn có phân bố chuẩn đồng
thời cho tất cả t1 , t2 , ..., tn .
Nhận xét 4.1
i) Nếu { X t } là quá trình dừng Gauss thì n, h ,( X t1 ,..., X tn ) và
( X t1 h ,..., X tn h ) có cùng ma trận kỳ vọng và ma trận hiệp phương sai nên có
chung phân phối. Do đó { X t } là quá trình dừng nghiêm ngặt.
70
Ứng dụng phần mềm R nghiên cứu thống kê
ii) Không có hai quá trình Gauss phân biệt có cùng hàm tự hiệp phương
sai.
Lệnh trong R
Một số hàm trong phần mềm R được sử dụng trong mục này như sau:
acf(), pacf(), ccf().
a) Mô tả
Hàm acf dùng để ước lượng hàm tự hiệp phương sai hoặc hàm tự tương
quan của một đối tượng chuỗi thời gian.
Hàm pacf dùng để tính tự tương quan riêng của một đối tượng chuỗi thời
gian.
Hàm ccf tính sự tự tương quan ngược hoặc tự hiêp phương sai ngược của
hai đối tượng chuỗi thời gian.
b) Cú pháp
i) Hàm acf
> acf(x, lag.max = NULL,
type = c("correlation", "covariance", "partial"),
plot = TRUE, na.action = na.fail, demean = TRUE, ...)
ii) Hàm pacf
> pacf(x, lag.max, plot, na.action, ...)
Thường mặc định là :
> pacf(x, lag.max = NULL, plot = TRUE, na.action =
na.fail, ...)
iii) Hàm ccf
> ccf(x, y, lag.max = NULL, type = c("correlation",
"covariance"), plot = TRUE, na.action = na.fail, ...)
c) Các thông số
x, y
là một đối tượng chuỗi thời gian có đại lượng ngẫu nhiên đơn
hoặc bội hoặc là một véc tơ hoặc là một ma trận, hoặc là một
đối tượng "acf".
lag.max
trễ lớn nhất để tính acf. Mặc định là 10*log10(N/m) ở đây N
là số quan sát và m là số chuỗi. Giới hạn của trễ sẽ tự động nhỏ
hơn số quan sát trong chuỗi. đặc
type
đặc điểm chuỗi được tính trong acf. Cho phép các giá trị sau:
"correlation" (mặc định), "covariance" hoặc "partial".
71
Ứng dụng phần mềm R nghiên cứu thống kê
plot
nếu nhận giá trị là TRUE thì sẽ vẽ đồ thị.
na.action hàm dùng để xử lý những giá trị khuyết. Có thể sử dụng
na.pass.
demean
hiệp phuơng sai trung bình mẫu hay không?.
...
thêm vào các đối số cho hợp với hàm plot.acf.
Hàm acf() cho kết quả là một đồ thị của tự tương quan mẫu rh ở mỗi trễ
h. Ta gọi là tương quan đồ. Nó có các đặc trưng sau:
+ Trục x cho ta các giá trị của trễ h và trục y cho ta các giá trị của tự tương
quan rh ở mỗi trễ. Đơn vị của trễ là khoảng thời gian lấy mẫu (0,1 giây). Tương
quan là đại lượng không có thứ nguyên, vì thế không có đơn vị cho trục y.
+ Giá trị của tự tương quan mẫu nằm giữa -1 và 1.
+ Tự tương quan ở trễ 0 luôn luôn là 1 và được thể hiện trên đồ thị.
Mục đích chính của việc sử dụng tương quan đồ là giúp ta tìm ra tự tương
quan trong chuỗi thời gian sau khi chúng ta đã lấy ra một ước của xu hướng và
biến thiên mùa.
Ví dụ 4.8. Tiến hành phân tích tập dữ liệu AirPassengers trong thư viện của R
để thấy hàm tự tương quan của chuỗi thời gian này.
# Truy nhập vào dữ liệu.
> data(AirPassengers)
# Gán AP là tập dữ liệu.
> AP = AirPassengers
# Xem dữ liệu AP
> AP
Kết quả
1949
1950
1951
:
1957
1958
1959
1960
Jan
112
115
145
Feb
118
126
150
Mar
132
141
178
Apr
129
135
163
315
340
360
417
301
318
342
391
356
362
406
419
348
348
396
461
May
121
125
172
:
355
363
420
472
Jun
135
149
178
Jul
148
170
199
Aug
148
170
199
Sep
136
158
184
422
435
472
535
465
491
548
622
467
505
559
606
404
404
463
508
# Vẽ đồ thị tự tương quan
> acf(AP)
Kết quả từ R như sau:
72
Oct
119
133
162
:
347
359
407
461
Nov
104
114
146
Dec
118
140
166
305
310
362
390
336
337
405
432
Ứng dụng phần mềm R nghiên cứu thống kê
0.2 0.4 0.6 0.8 1.0
-0.2
ACF
Series AP
0.0
0.5
1.0
1.5
Lag
Hình 4.4. Tương quan đồ của dữ liệu air passenger giai đoạn 1949 – 1960.
Ta thấy có một xu hướng và biến thiên mùa được thể hiện trong tương quan
đồ. Các đỉnh mùa được chồng lên trên mẫu hình. Xuất hiện một chu kỳ hàng năm
cho sự biến thiên mùa. Giá trị lớn nhất của tự tương quan là ở trễ của 1 năm,
phản ánh một quan hệ tuyến tính dương giữa cặp biến số ( xt , xt 12 ) được tác biệt
bởi 12 tháng. Mặt khác, xu hướng mùa gần như là một đồ thị hình sin, các giá trị
được tác biệt bởi 6 tháng (0.5 năm) sẽ có xu hướng có quan hệ âm. Ví dụ, các
đỉnh của giá trị tương quan trong những tháng hè có xu hướng thấp hơn giá trị
tương quan trong những tháng mùa đông. Vì thế độ dốc trong tương quan đồ xảy
ra ở trễ 6 tháng.
1.8. Toán tử lùi (Backward) và toán tử tiến (forward)
Định nghĩa 4.9 Toán tử lùi B liên kết với quá trình {X t , t } là quá trình
{Yt , t } sao cho
Yt BX t X t 1 .
(4.5)
Nếu B là toán tử tuyến tính, khả nghịch thì nghịch đảo của nó B 1 F , gọi
là toán tử tiến, được định nghĩa bởi:
FX t X t 1 .
Tính chất Các toán tử B và F thỏa mãn
i) B n X t X t n ; F n X t X t n .
n
n
ii) ( ai Bi ) X t ai X t i , (tác động lên quá trình X t của một đa thức theo
i 0
i 0
B).
1.9. Các phương pháp làm trơn
Trong một số chuỗi thời gian, thành phần mùa và thành phần bất thường
thay đổi lớn làm cho việc xác định thành phần xu hướng và thành phần chu kỳ
gặp nhiều khó khăn. Sự thay đổi lớn này có thể được giảm đi bằng các phương
73
Ứng dụng phần mềm R nghiên cứu thống kê
pháp làm trơn. Các phương pháp làm trơn thường được sử dụng là phương pháp
trung bình dịch chuyển (Moving average method) và phương pháp làm trơn bằng
hàm số mũ (Exponential smoothing method).
1.9.1. Phương pháp trung bình dịch chuyển (Moving average method)
Nội dung của phương pháp này là thay giá trị quan sát X t bằng giá trị trung
bình của chính nó với m giá trị trước nó và m giá trị sau nó, tức là ta thay giá trị
X t bởi giá trị
Xt
m
1
X t j .
2m 1 j m
Ví dụ 4.9. Khi m = 2 ta có giá trị trung bình trượt của 5 điểm được tính theo
công thức
Xt
X t 2 X t 1 X t X t 1 X t 2
.
5
Chuỗi thời gian truyền thống thường được phân tích thành các thành phần
xu hướng, mùa và các phần còn lại. Phương pháp phổ biến để nhận được thành
phần xu hướng là dùng lọc tuyến tính chuỗi thời gian. Phần mềm R cung cấp
lệnh filter() giúp ta thực hiện điều đó.
Hàm filter()
i) Mô tả
Hàm filter dùng để lọc tuyến tính một chuỗi thời để nhận được thành
phần xu hướng.
ii) Cú pháp
> filter(x, filter, method = c("convolution",
"recursive"),sides = 2, circular = FALSE, init)
iii) Các thông số
x
một chuỗi thời gian đơn hay bội.
filter
một véc tơ của phép lọc hệ số (xem như là hệ số của AR hoặc
MA).
method
hoặc là "convolution" hoặc là "recursive" (có thể viết
tắt). Nếu là "convolution" thì dùng phương pháp trung
bình dịch chuyển. Nếu là "recursive" thì dùng phương
pháp tự hồi qui.
sides
chỉ dùng cho phương pháp "convolution". Nếu sides=1
chỉ lọc hệ số các giá trị đã xảy ra; nếu sides=2 thì nó có trung
tâm gần trễ 0. Trong trường hợp này chiều dài của phép lọc
phải là lẻ, nhưng nếu nó là chẳn thì phép lọc sẽ tiến về thời gian
trước hơn là đi lùi về sau.
74
Ứng dụng phần mềm R nghiên cứu thống kê
circular
chỉ dùng cho phương pháp "convolution". Nếu là TRUE
thì quá trình lọc sẽ quay về điểm ban đầu và lắp đầy những giá
trị khuyết.
init
chỉ dùng cho phương pháp "recursive". Chỉ rõ những giá
trị ban đầu của chuỗi thời gian đúng vào giá trị bắt đầu . Mặc
định là tập 0.
Ví dụ 4.10 Cho dữ liệu về số lượng sản phẩm bán ra của một cửa hàng trong
24 tháng được lưu dưới tên tieuthu.csv. Tiến hành lọc tuyến tính dữ liệu
tieuthu.csv và vẽ giá trị trung bình.
Áp dụng phương pháp trung bình dịch chuyển với m =2 cho các giá trị của
tập dữ liệu tieuthu.csv
1
1
.
2m 1 5
Với m = 2 thì hệ số của phép lọc sẽ là
Như vậy ta sẽ thực hiện phép lọc với hệ số .
Thực hiện lọc tuyến tính trong R
# Lấy dữ liệu từ windows và gán vào đối tượng tieuthu
1
5
> setwd("D:/studying/luan van/csv")
> tieuthu=read.csv("tieuthu.csv",header=T)
# Gán dữ liệu quan sát ở cột thứ 3 của tieuthu cho đối tượng x
> x=tieuthu[,3]
# Vẽ đồ thị cho chuỗi dữ liệu thô
25
15
20
x
30
35
> plot(x,type="l")
5
10
15
20
Index
Hình 4.5. Số lượng sản phẩm bán ra của một cửa hàng trong 24 tháng.
# Lọc tuyến tính với hệ số của phép lọc là 1/5
> filter=filter(x, rep(1/5,5))
75
Ứng dụng phần mềm R nghiên cứu thống kê
> filter
Kết quả từ R
Time Series:
Start = 1
End = 24
Frequency = 1
[1]
NA
NA 18.4 17.2 17.6 19.4 20.8 23.0 25.0
[10] 24.6 24.0 24.0 23.8 24.4 27.6 29.0 29.0 28.8
[19] 27.6 25.0 23.0 23.4
NA
NA
Trong lệnh trên, rep(1/5, 5) có nghĩa là hệ số của phép lọc 1/5 được lặp lại 5
lần.
# Vẽ đồ thị cho filter với đường màu đỏ
> plot(x,type="l")
> lines(filter, col="red")
Hình 4.6. Lọc tuyến tính dữ liệu chuỗi thời gian x (filter).
1.9.2. Phương pháp làm trơn bằng hàm số mũ
Phương pháp làm trơn hàm số mũ dựa vào trung bình có trọng số của chuỗi
dữ liệu, tức là lấy tổng trọng số của các quan sát trong quá khứ. Ta có
X t X t (1 ) X t 1 (1 ) 2 X t 2 ... (1 )t 1 X 1 .
(4.6)
Tương tự,
X t 1 X t 1 (1 ) X t 2 (1 ) 2 X t 3 ... (1 )t 2 X 1 .
(4.7)
Suy ra
(1 ) X t 1 (1 ) X t 1 (1 ) 2 X t 2
(1 )3 X t 3 ... (1 )t 1 X 1.
76
(4.8)
Ứng dụng phần mềm R nghiên cứu thống kê
Số i (1 )i gọi là trọng số hình học (geometric weight).
Từ (4.6), (4.7) và (4.8) ta có:
X t X t (1 ) X t 1 ,
(4.9)
với 0 1 , gọi là hằng số trơn (smoothing constant).
Cụ thể, ta chọn
X1 X 1
X 2 X 2 (1 ) X 1
X 3 X 3 (1 ) X 2
...................................
X n X n (1 ) X n1.
Phương pháp Holt-Winters
Phương pháp HoltWinter được phát minh bởi Holt (1975) và Winters
(1960) thuộc trường Industrial Administation ở Carnegie Institute of
Technology. Phương pháp này sử dụng giá trị trung bình dịch chuyển có trọng số
mũ dùng để ước lượng sự thay đổi theo mùa của trung bình, xu hướng và mùa.
Hàm dự đoán Holt-Winters (cho chuỗi thời gian với chu kỳ p) có dạng
Y [t h] a[t ] h * b[t ] s[t l ( h 1) mod p ] ,
trong đó a[t ], b[t ], c[t ] được cho bởi:
a[t ] (Y [t ] s[t p ]) (1 ) ( a[t 1] b[t 1]),
b[t ] ( a[t ] a[t 1]) (1 ) b[t 1],
s[t ] (Y [t ] a[t ]) (1 ) s[t p ]
(h là khoảng cách từ điểm dự đoán đến điểm cuối của chuỗi dữ liệu thô).
Ở đây a[t ], b[t ], c[t ] lần lượt là ước lượng mức độ, xu hướng và tác động
mùa tại thời điểm t, và , , và là các tham số san bằng.
Các hàm này sẽ tìm một giá trị tối ưu cho các tham số , , và bằng
phương pháp bình phương cực tiểu sai số dự đoán nếu chúng là NULL (mặc
định).
Đối với những mô hình mùa, các giá trị bắt đầu cho a, b và s sẽ được suy
ra từ việc thực hiện một phân tích đơn giản trong thành phần xu hướng và thành
phần mùa sử dụng trung bình dịch chuyển (sử dụng hàm decompose()). Đối
với những mô hình không có thành phần mùa thì giá trị bắt đầu cho a và b lần
lượt là x[2] và x[2]-x[1]. Đối với mô hình chỉ có thành phần trung bình
(thông thường là san bằng hàm số mũ) thì giá trị bắt đầu cho a là x[1].
77
Ứng dụng phần mềm R nghiên cứu thống kê
Thủ tục lọc Holt-Winters trong R
i) Mô tả
Thủ tục lọc Holt-Winters cho chuỗi thời gian. Các tham số được xác
định bởi cực tiểu hóa sự dự báo bình phương sai số.
ii) Cú pháp
HoltWinters(x, alpha = NULL, beta = NULL, gamma = NULL,
seasonal = c("additive", "multiplicative"),
start.periods = 2, l.start = NULL,
b.start = NULL, s.start = NULL,
optim.start = c(alpha = 0.3, beta = 0.1,
gamma = 0.1), optim.control = list())
iii) Các thông số
x
một đối tượng của lớp ts.
alpha
tham số trơn alpha (cho mức độ) của phép lọc
HoltWinters.
beta
tham số trơn beta (cho xu hướng) của phép lọc
HoltWinters. Nếu tập là FALSE, hàm sẽ thực hiện sang
bằng hàm số mũ.
gama
tham số trơn gama được dùng cho thành phần mùa. Nếu
tập là FALSE, một mô hình không có thành phần mùa sẽ
được lọc.
seasonal
đặc điểm của chuỗi để chọn một mô hình mùa là mô hình
cộng hay mô hình nhân. Một vài đặc điểm đầu là đủ. (chỉ
có tác dụng nếu gamma là hằng số khác không).
start.periods chu kỳ bắt đầu được dùng khi tự tìm thấy những giá trị
đầu tiên. Tối thiểu phải là 2.
l.start
giá trị bắt đầu cho mức độ (a[0]).
b.start
giá trị bắt đầu cho xu hướng (b[0]).
s.start
véctơ của giá trị bắt đầu cho thành phần mùa (s_1[0] …
s_p[0]).
optim.start
là véctơ với các thành phần có tên là alpha, beta và gamma
bao gồm những giá trị bắt đầu được tối ưu hóa. Chỉ các
giá trị cần phải xác định. Không xét trường hợp một tham
số.
optim.control dãy bất kỳ được thêm vào tham số điều chỉnh phù hợp với
optim nếu nó được sử dụng. Không xét trường hợp một
tham số.
78
Ứng dụng phần mềm R nghiên cứu thống kê
Ví dụ 4.11: Trở lại với ví dụ 4.10 ta thấy dữ liệu không bị tác động bởi xu
hướng và mùa, do đó ta tiến hành san bằng hàm số mũ cho chuỗi thời gian này.
Ta thực hiện như sau:
# Tạo một chuỗi thời gian cho dữ liệu x, thời gian bắt đầu từ năm 1990 với
tần số là 12.
> tieuthu.ts=ts(x, start=1990, fr=12)
# Vẽ đồ thị chuỗi thời gian trên.
> plot(tieuthu.ts)
Hình 4.7. Số lượng sản phẩm bán ra của một của hàng năm 1990-1991.
Tiếp theo, tiến hành lọc holtwinters
> tieuthu.hw=HoltWinters(tieuthu.ts, beta=F, gamma=F)
Lệnh trên yêu vầu R gán tieuthu.hw là lọc HoltWinters cho chuỗi thời
gian không chứa thành phần xu hướng (beta = F) và thành phần mùa (gamma =
F).
> tieuthu.hw
Kết quả từ R:
Holt-Winters exponential smoothing
without seasonal component.
without
trend
Call:
HoltWinters(x = tieuthu.ts, beta = F, gamma = F)
Smoothing parameters:
alpha: 0.9999339
beta : FALSE
gamma: FALSE
Coefficients:
[,1]
a 26.99967
79
and
Ứng dụng phần mềm R nghiên cứu thống kê
# Vẽ đồ thị dữ liệu đã được lọc là đường màu đỏ.
> plot(tieuthu.hw)
Hình 4.8. Số lượng sản phẩm bán ra và trung bình dịch chuyển
có trọng số mũ 1990-1991.
Từ kết quả của phép lọc HoltWinters ta ước lượng được giá trị trung bình
của sản phẩm bán ra là 26.99. Giá trị của tham số 0.99 .
Ví dụ 4.12. Ta có dữ liệu doanhthu.csv cho biết doanh thu của công ty A
được cung cấp hàng tháng từ tháng 1 năm 2010 đến tháng 11 năm 2012. Dùng
mô hình HoltWinters dự báo cho các tháng 12 năm 2012 và năm 2013.
# Nhập dữ liệu.
> setwd("D:/studying/luan van/csv")
> doanhthu= read.csv("doanhthu.csv", header=T)
# Trích cột 2 của dữ liệu.
> doanhthu= doanhthu[, 2]
# Tạo ra một chuỗi thời gian cho doanhthu với tên doanhthu.ts.
> doanhthu.ts= ts(doanhthu, start=c(2010,1),
end=c(2012,11), fr=12)
> doanhthu.ts
Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
2010
4.8
4.0
5.5 15.6 23.1 23.3 31.4 46.0
2011 48.4 61.6 65.6 71.4 83.4 93.6 94.2 85.4
2012 100.3 111.7 108.2 115.5 119.2 125.2 136.3 146.8
80
Ứng dụng phần mềm R nghiên cứu thống kê
Sep
Oct
Nov
2010 46.1 41.9 45.5
2011 86.2 89.9 89.2
2012 146.2 151.4 150.9
Dec
53.5
99.1
# Vẽ đồ thị cho chuỗi thời gian doanhthu.ts.
0
50
Doanh thu
100
150
> plot(doanhthu.ts, xlab="Months", ylab="Doanh thu")
2010.0
2010.5
2011.0
2011.5
2012.0
2012.5
Time
Hình 4.9. Doanh thu của công ty A 2010-2012.
# Làm trơn dữ liệu với hàm holtwinters
> loc = HoltWinters(doanhthu.ts)
Trong lệnh yêu cầu R gán "loc" là lọc HoltWinters cho chuỗi thời gian
doanhthu.ts, các thuộc tính alpha, beta, gamma được mặc định là “TRUE”
> loc
R xuất ra kết quả:
Holt-Winters
exponential
smoothing
additive seasonal component.
Call:
HoltWinters(x = doanhthu.ts)
Smoothing parameters:
alpha: 0.7035284
beta : 0
gamma: 0.9457524
Coefficients:
[,1]
a
156.5152073
b
4.5149038
s1
-1.9795226
s2
-4.7991235
s3
-0.7301894
s4
-4.7537455
s5
-1.7366888
s6
3.9279917
81
with
trend
and
Ứng dụng phần mềm R nghiên cứu thống kê
s7
s8
s9
s10
s11
s12
10.7410493
6.3807509
6.4453125
3.0521337
-0.4364703
-5.6210669
Từ kết quả, ta nhận được các giá trị alpha= 0.7, beta= 0 và gamma= 0.9
Phần kết quả
Coefficients:
[,1]
a
156.5152073
b
4.5149038
s1
-1.9795226
s2
-4.7991235
s3
-0.7301894
s4
-4.7537455
s5
-1.7366888
s6
3.9279917
s7
10.7410493
s8
6.3807509
s9
6.4453125
s10
3.0521337
cho biết các ước lượng hệ số giá trị trung bình, xu hướng và mùa.
# Dự đoán cho tháng 12 năm 2012 và năm 2013.
> predict(loc, n.ahead=13)
Jan
2012
2013
2012
2013
Feb
Mar
Apr
May
Jun
160.7459 169.3297 169.8211 177.3530 187.5326 198.8606
Jul
Aug
Sep
Oct
Nov
Dec
159.0506
199.0152 203.5947 204.7164 205.7427 205.0730 213.2294
# Vẽ đồ thị các giá trị của chuỗi thời gian và các giá trị dự đoán.
> plot(doanhthu.ts, xlim=c(2010,2014), ylim=c(0,200))
> lines(predict(loc,n.ahead=13),col=6)
Kết quả từ R:
82
100
đường dự
đoán
0
50
doanhthu.ts
150
200
Ứng dụng phần mềm R nghiên cứu thống kê
2010
2011
2012
2013
2014
Time
Hình 4.10. Giá trị dự đoán cho doanh thu của công ty A.
# Độ lệch chuẩn cho dữ liệu thô ban đầu.
> sd(doanhthu)
[1] 44.46887
# Tổng bình phương sai số dự đoán SSE.
> loc$SSE
[1] 2158.505
# Căn bậc 2 của trung bình tổng bình phương sai số dự đoán.
> sqrt(loc$SSE/length(doanhthu.ts))
[1] 7.853126
Nhận xét 4.2: Từ kết quả của phép lọc HoltWinters ta tìm được giá trị tối ưu
của các tham số san bằng là 0.7, 0 và 0.9 dựa trên sự cực tiểu hóa
sai số dự đoán (SSE). Sự phân tích này nhanh chóng làm thích hợp sự biến đổi
mùa và trung bình nhưng ngược lại xu hướng thì chậm lại. Các hệ số trong kết
quả là ước lượng giá trị trung bình (a= 156.5), xu hướng (b= 4.5) và sự biến
thiên mùa từ tháng 1 đến tháng 12 (Si, i= 1, 2, …, 12), những giá trị này được
dùng để dự đoán cho các giá trị tương lai. Ta thấy giá trị trung bình của bình
phương sai số dự đoán nhỏ hơn độ lệch chuẩn của chuỗi thời gian ban đầu.
II. QUÁ TRÌNH ARMA
Trong phần này ta nghiên cứu các quá trình tự hồi qui AR (Auto
Regressive), quá trình trung bình trượt MA (Moving Average) và quá trình tổng
quát ARMA (Auto Regressive Moving Average). Đây là các quá trình đóng vai
trò then chốt trong việc phân tích chuỗi thời gian.
2.1. Quá trình tự hồi qui - AR (Autoregressive Processes)
2.1.1. Quá trình tự hồi qui cấp một AR(1)
Định nghĩa 4.10 Quá trình {X t ; t } được gọi là quá trình tự hồi qui cấp một,
kí hiệu X t AR(1) , nếu X t là quá trình dừng thỏa
83
Ứng dụng phần mềm R nghiên cứu thống kê
X t aX t 1 t hoăc X t aX t 1 t ,
(4.10)
trong đó t là ồn trắng (White noise), nghĩa là t là biến ngẫu nhiên có kỳ vọng
là không, E t s 0 (t s) , và có phương sai hữu hạn 2 Var t .
Chú ý 4.2 Phương trình (4.10) có thể viết dưới dạng toán tử
a( B ) X t t ,
trong đó a( B) được xác định như sau: a( z ) 1 az (đa thức hồi qui) .
Định lý 4.3. Không tồn tại quá trình dừng {X t ; t } thỏa (4.10) với a 1 .
Nhận xét 4.3 Định lý 4.3 cho thấy hệ thức (4.10) không đương nhiên xác định
một quá trình AR(1). Tuy nhiên, ta có điều dưới đây:
Định lý 4.4 Với a 1 thì hệ thức (4.10) xác định duy nhất một quá trình
AR(1).
Khi a 1 quá trình có dạng
Xt a i t i ,
(4.11)
i 0
với a i .
i 0
Nhận xét 4.4
i) Từ biểu thức (4.11) và giả thuyết t là ồn trắng suy ra
E t X t 1 0 .
Vì E t X t 1 E t a i t 1i a i E ( t t 1i ) 0.
i 1
i 1
ii) Mặt khác, với s t.
Ngoài ra, ta có:
(0) VarX t X2 EX t2 (0) E[X t (a1 X t 1 a2 X t 2 t )]
a1E ( X t X t 1 ) a2 E ( X t X t 2 ) E ( X t t ),
tức là
87
(4.17)
Ứng dụng phần mềm R nghiên cứu thống kê
(0) a1 (1) a2 (2) 2 .
Tổng quát hơn ta có:
( h) cov( X t , X t h ) E ( X t X t h ) E[X t h (a1 X t 1 a2 X t 2 t )]
E (a1 X t 1 X t h a2 X t 2 X t h X t h t )
a1 ( h 1) a2 (h 2) E ( X t h t ),
tức là
( h) a1 (h 1) a2 (h 2) .
Đặc biệt ta có
(1) a1 (0) a2 (1),
(2) a1 (1) a2 (0).
Nhân hai vế (4.18) với
(4.18)
1
(h)
và để ý rằng h
ta được
(0)
(0)
1 a1 a2 1
2 a11 a2 .
(4.19)
Cho trước a1 và a2 , ta có thể dùng (4.13) để tính 1 , 2 và ngược lại, cho
trước 1 , 2 thì dùng (4.19) để tính a1 , a2 . Tuy nhiên, trong thực tế khi cho
chuỗi quan sát X {X 1 , X 2 ,..., X n } thì có thể tính r1 , r2 xấp xỉ cho 1 và 2 . Do
đó ta có thể thay 1 , 2 bởi r1 , r2 và tìm r1 , r2 từ hệ phương trình
r1 a1 a2 r1
r
a
r
a
2
11
2
(4.20)
Khi 1 r 2 0 thì hệ phương trình (4.20) cho
a1
r1 (1 r2 )
1 r2
; a2 1
.
2
1 r1
1 r12
(4.21)
Công thức (4.21) cho thấy khi r2 rất gần r12 thì mô hình AR(2) rất gần với mô
hình AR(1).
2.1.3. Quá trình tự hồi qui cấp p (AR(p))
Định nghĩa 4.13. Quá trình {X t ; t } gọi là một quá trình tự hồi qui cấp p, kí
hiệu X t AR( p ) , là quá trình dừng X t thỏa:
hay
X t a1 X t 1 ... a p X t p t , a p 0 ,
a( B ) X t t .
Trong đó t là ồn trắng và a( B) là biểu thức được định nghĩa bởi
(4.22)
88
(4.23)
Ứng dụng phần mềm R nghiên cứu thống kê
a( z ) 1 a1 z a2 z 2 ... a p z p ,
đa thức a( z ) có nghiệm thỏa z 1
Chú ý 4.4. Cũng như hai trường hợp p = 1, 2; điều kiện nhân quả đảm bảo tính
khả nghịch của toán tử a( B) . Hơn nữa, có thể biểu diễn X t một cách duy nhất
dạng
X t ( B ) t .
Nghĩa là X t có thể biểu diễn tường minh dạng (4.16).
Các đặc trưng của quá trình AR(p)
i) Ta có EX t 0 .
ii) Mặt khác, từ (4.22) ta suy ra
p
X t ai X t 1 t .
(4.24)
i 1
Nhân hai vế (4.24) với X t rồi lấy kỳ vọng hai vế, chú ý rằng
(i ) E ( X i X t i ) và dùng hệ thức (4.17) ta được
p
(0) ai (i ) 2 .
i 1
Tương tự trên, nhân (4.24) với X t h , h 0 và lấy kỳ vọng hai vế rồi chia
cho (0) ta được hệ phương trình dưới đây gọi là hệ phương trình Yule-Walker.
p
p ai hi 0,
h 0 .
i 1
Lần lượt cho h=1, 2, …, p ta được
1 1 ... p 2 p 1 a1 1
1 1 ... p 3 p 2 a2 2
. . . . . . ... ... .
p 2 p 3 ... 1 1 a p 1 p1
p 1 p 2 ... 1 1 a p p
(4.25)
Các phương trình trong hệ (4.25) là song tính đối với a và . Nếu cho
thì tính được a và ngược lại. Trong thực tế, khi cho chuỗi quan sát
X X 1 , X 2 ,..., X n thì dùng công thức (4.25) để tính các ri xấp xỉ i và có hệ
phương trình:
89
Ứng dụng phần mềm R nghiên cứu thống kê
1 r1 ... rp 2 r p 1 a1 r1
r1 1 ... r p 3 r p 2 a 2 r2
. . . . . . ... ... .
rp 2 r p 3 ... 1 r1 a p 1 rp 1
rp 1 r p 2 ... r1 1
a p rp
(4.26)
Khi giải những bài toán thực tế, người ta thường lấy p 13 .
Lệnh trong R
Hàm ar() dùng để tạo ra một mô hình tự hồi qui AR(p) thích hợp nhất cho
chuỗi thời gian.
Một phương pháp được sử dụng trong hàm ar()là “mle”. Phương pháp
“mle” được sử dụng trong quá trình làm trơn dựa trên sự tối đa hóa hàm loglikelihood (hàm hợp lí cực đại).
Bậc p của quá trình ar được chọn dựa trên tiêu chuẩn Akaike Information
Criterion (AIC). Trong phần này tiêu chuẩn AIC được tính theo công thức như
sau:
AIC 2.LL 2k ,
trong đó
k: số tham số có trong mô hình,
LL: log-likelihood.
Trong hàm ar, mô hình có giá trị AIC nhỏ nhất được chọn là mô hình là mô hình
AR thích hợp nhất.
Ví dụ 4.15. Ta trở lại ví dụ 4.13, quá trình AR(1) có thể được mô tả trong R
bằng các lệnh sau:
# Gán e là biến ngẫu nhiên có phân phối chuẩn độ dài 100 và cố định e.
> set.seed(1)
> e = rnorm(100)
# Cho x là một chuỗi rỗng.
> x = c()
# Gán giá trị đầu của x là giá trị đầu của biến ngẫu nhiên e.
> x[1]=e[1]
# Vòng lập for cho t chạy từ 2 đến 100 và gán xt 0.7 xt 1 et .
> for (t in 2:100) x[t] = 0.7 * x[t - 1] + e[t]
# Vẽ đồ thị dạng đường, hàm tự tương quan và hàm tự tương quan riêng
cho x.
90
Ứng dụng phần mềm R nghiên cứu thống kê
> plot(x, type = "l")
> acf(x)
-1
0
x
1
2
3
> pacf(x)
0
20
40
60
80
100
Index
(a) Hình dạng chuỗi thời gian x.
0.2 0.4 0.6 0.8 1.0
-0.2
ACF
Series x
0
5
10
15
20
Lag
(b) Đồ thị hàm tự tương quan của x.
0.2
-0.2
0.0
Partial ACF
0.4
0.6
Series x
5
10
15
20
Lag
(c) Đồ thị hàm tự tương quan riêng của x.
91
Ứng dụng phần mềm R nghiên cứu thống kê
Hình 4.11. Mô tả quá trình AR(1) của chuỗi thời gian xt 0.7 xt 1 et .
# Tìm mô hình ar thích hợp cho x.
> x.ar = ar(x, method = "mle")
> x.ar
Call:
ar(x = x, method = "mle")
Coefficients:
1
0.6009
Order selected 1 sigma^2 estimated as
0.7881
# Xác định bậc của mô hình ar.
> x.ar$order
[1] 1
# Ước lượng tham số của mô hình.
> x.ar$ar
[1] 0.6009459
Kết luận: Bậc của mô hình được chọn là bậc 1. Tham số được ước lượng cho mô
hình là aˆ 0.6 gần bằng tham số của mô hình cơ sở a 0.7 . Trong khoảng tin
cây 95% thì giá trị aˆ đáng tin cậy. Vậy mô hình AR(1) trên là chấp nhận được.
Ví dụ 4.16. Ta có dữ liệu là chuỗi thời gian nhiệt độ trung bình hàng tháng
toàn cầu được ghi nhận từ năm 1856 đến năm 2005. Ta tiến hành tìm mô hình ar
thích hợp cho dữ liệu này.
Bước đầu tiên của quá trình là nhập dữ liệu, ta làm như sau:
> setwd("D:/Studying/luan van/csv")
> Global = read.table("global.txt", header=FALSE,
dec=",", sep=";")
Lệnh thứ hai yêu cầu R gán cho Global một dữ liệu dạng text “global.txt”.
# Tạo một chuỗi thời gian cho dữ liệu với thời gian bắt đầu là tháng 1 năm
1856 và kết thúc là tháng 12 năm 2005, tần số là 12.
> Global.ts = ts(Global,st = c(1856, 1),
end = c(2005,12),fr = 12)
# Dùng hàm aggregate() để lấy ra tác động mùa và tạo ra chuỗi thời
gian Global.annual là nhiệt độ trung bình hàng năm từ năm 1856 đến năm
2005.
> Global.annual = aggregate(Global.ts, FUN = mean)
92
Ứng dụng phần mềm R nghiên cứu thống kê
FUN là một hàm để tính thống kê mô tả, ở lệnh trên FUN = mean có nghĩa là yêu
cầu R tính trung bình các giá trị theo năm. Mỗi một năm sẽ có một giá trị trung
bình và nó được gán vào Global.annual
# Tìm mô hình AR thích hợp cho chuỗi thời gian x.
> Global.ar =ar(Global.annual, method="mle")
> Global.ar
Kết quả từ R như sau:
Call:
ar(x = global.annual, method = "mle")
Coefficients:
1
2
-0.6995 -1.0103
7
8
-0.8886 -0.9417
Order selected 12
3
-0.8404
9
-0.7723
4
-0.8699
10
-1.0131
5
-0.9282
11
-0.8531
sigma^2 estimated as
6
-0.8585
12
-0.4192
40.35
Kết quả xuất ra từ lệnh Global.ar cho ta biết được các hệ số của mô hình
AR, bậc thích hợp cho mô hình là 12 và giá trị 2 =40.35.
# Trung bình của chuỗi thời gian x đã được loại khỏi tác động mùa.
> mean(Global.annual)
[1] -0.1382628
# Trích phần dư của chuỗi.
> global.ar$resid
Time Series:
Start = 1856
End = 2005
Frequency = 1
[1]
NA
NA
NA
[6]
NA
NA
NA
[11]
NA
NA -6.9771410
[16] 10.6638343 1.4479266 -1.8583830
[21] 0.4955568 -8.9485088 2.0423271
[26] 4.3124410 3.1042509 -3.2498834
[31] -1.5072996 -8.4249412 3.9471621
NA
NA
-4.4388808
11.6521789
-0.2242413
-9.8690482
7.5518000
NA
NA
-2.6134818
-5.4360080
14.2734031
1.7987573
-1.5756421
[116] 10.6638343 1.4479266 -1.8583830 11.6521789 -5.4360080
[121] 0.4955568 -8.9485088 2.0423271 -0.2242413 14.2734031
[126] 4.3124410 3.1042509 -3.2498834 -9.8690482 1.7987573
[131] -1.5072996 -8.4249412 3.9471621 7.5518000 -1.5756421
[136] 0.3524998 -7.0379762 -6.9771410 -4.4388808 -2.6134818
[141] 10.6638343 1.4479266 -1.8583830 11.6521789 -5.4360080
[146] 0.4955568 -8.9485088 2.0423271 -0.2242413 14.2734031
93
Ứng dụng phần mềm R nghiên cứu thống kê
# Đồ thị hàm tự tương quan của chuỗi phần dư.
> acf(Global.ar$res[-(1:Global.ar$order)], lag = 50)
Trong lệnh trên, “Global.ar$res[-(1:Global.ar$order)]” yêu cầu R
loại bỏ những giá trị từ vị trí thứ 1 cho đến vị trí n (n là số bậc được chọn của mô
hình), ở ví dụ này n=12.
-0.5
0.0
ACF
0.5
1.0
Series global.ar$res[-(1:12)]
0
10
20
30
40
50
Lag
Hình 4.12. Tương quan đồ của chuỗi phần dư
Ta thấy trên đồ thị acf của chuỗi phần dư , các giá trị chưa dần về 0 (tắt dần
rất chậm) nên chuỗi phần dư không là một ồn trắng. Nên mô hình AR(12) chưa
thích hợp cho dữ liệu này.
2.2. Quá trình trung bình trượt – MA (Move Average Processes)
2.2.1. Quá trình trung bình trượt cấp q (MA(q))
Định nghĩa 4.14 Quá trình X t được gọi là quá trình trung bình trượt cấp q, kí
hiệu X t MA( q ) , là quá trình thỏa
X t t b1 t 1 ... bq t q ; b1 , ..., bq , bq 0 ,
(4.27)
hoặc dưới dạng toán tử lùi
X t b( B ) t .
(4.28)
Trong đó t là ồn trắng và hàm b(.) được định nghĩa bởi
b( z ) 1 b1 z ... bq z q ,
b( z ) được gọi là đa thức trung bình trượt.
Các đặc trưng của quá trình MA(q)
i) EX t 0 .
ii) Nhân cả hai vế (4.27) với s , lấy kỳ vọng hai vế và dùng giả thiết t là
ồn trắng ta được
94
Ứng dụng phần mềm R nghiên cứu thống kê
2
E ( X t s ) 2bi
0
khi
st
khi
s t i, 1 i q .
(4.29)
Mặt khác, ta có
( h) E ( X t X t h ) E ( X t h ( t b1 t 1 ... bq t q ) .
(4.30)
Từ (4.29) và (4.30) ta suy ra
2
( h) (bh b1bh1 ... bq hbq ) ; b0 1, 1 h q
( h) 0
(4.31)
Đặc biệt
(0) VarX t 2 (1 b12 ... bq2 ) .
Từ (4.31) ta suy ra các tự tương quan
bh b1bh1 ... bq hbq
; h 1, q
(h) 1 b12 ... bq2
0 ; h q
2.2.2. Quá trình trung bình trượt cấp môt (MA(1))
Định nghĩa 4.15 Quá trình MA(1) là quá trình có dạng
X t t b t 1 ,
(4.32)
trong đó t là ồn trắng.
1
Đa thức trung bình trượt b( z ) 1 bz . b( z ) 0 có nghiệm là z . Do
b
đó điều kiện để quá trình khả nghịch là b 1 . Với điều kiện này, ta có thể biểu
diễn
( z)
1
b j z j .
1 bz j 0
Vì b 1 nên j b j . Khi đó ta có thể biểu diễn
j 0
j 0
X t b j X t j t .
j 1
Dùng công thức (4.31) ta được:
95
(4.33)
Ứng dụng phần mềm R nghiên cứu thống kê
(0) VarX t 2 (1 b 2 )
2
(1) b
( h) 0, h 1
Suy ra
1
(1)
b
, h 0; h 1 .
(0) 1 b 2
Trong thực tế, với chuỗi quan sát X {X t ; t 1, n} thì 1 được xấp xỉ với
hệ số tương quan mẫu r1 và có
r1
b
.
2
1 b
Từ đó b là nghiệm của phương trình bậc hai:
2
rb
b r1 0 .
1
(4.33)
Vậy để (4.32) thực sự biểu diễn một quá trình MA(1) thì b phải là một
nghiệm có trị tuyệt đối bé hơn 1 của (4.33). Điều này dẫn đến điều kiện:
r1
1
.
2
2.2.3. Quá trình trung bình trượt cấp hai (MA(2))
Định nghĩa 4.16 Quá trình MA(2) là quá trình có dạng
X t t b1 t 1 b2 t 2 ,
(4.34)
trong đó t là ồn trắng.
Đa thức trung bình trượt b( z ) 1 b1 z b2 z 2 . Với điều kiện khả nghịch là
b( z ) 0 có nghiệm thỏa z 1 , dùng công thức (4.31) ta được
(0) 2 (1 b12 b22 )
2
(1) (b1 b1b2 )
2
(2) b2
( h) 0, h 2
(4.35)
Từ (4.35), ta suy ra các giá trị tương quan
1
b1 b1b2 2
b2
; 2
, h 0, h 0 .
2
2
1 b1 b2
1 b12 b22
Trong thực tế, với chuỗi quan sát X thì 1 và 2 được xấp xỉ với các tự
tương quan r1 , r2 và có
96
Ứng dụng phần mềm R nghiên cứu thống kê
r1
b1 b1b2
b2
;
r
.
2
1 b12 b22
1 b12 b22
(4.36)
Từ (4.36), suy ra hệ phương trình bậc hai để tính b1 và b2 khi tính được
r1 , r2 theo công thức
(1 b12 b22 )r1 b1 b1b2
.
2
2
(1 b1 b2 )r2 b2
Lệnh trong R
Hàm arima() được dùng để tạo ra một mô hình trung bình trượt MA(q)
thích hợp cho chuỗi thời gian với bậc của các tham số của hàm được chứa trong
tập c(0,0,q).
Ví dụ 4.17. Tạo ra một chuỗi thời gian là trung bình dịch chuyển của 1000 giá
trị dựa trên mô hình xt et 0.8 et 1 , et là ồn trắng. Vẽ đồ thị và tương quan đồ
acf cho chuỗi xt. Tìm mô hình MA(1) thích hợp cho chuỗi thời gian trên.
Bước đầu tiên là tạo ra chuỗi thời gian xt et 0.8 et 1 . Được thực hiện bởi
các lệnh sau đây:
> e = rnorm(1000)
> x = c()
> x[1] = e[1]
> for (t in 2:1000) x[t] = e[t] - 0.8 * e[t-1]
Vẽ đồ thị và tương quan đồ acf cho chuỗi xt.
> plot(x, type='l')
-4
-2
0
x
2
4
> acf(x)
0
200
400
600
800
Index
Hình 4.13. Đồ thị chuỗi thời gian xt et 0.8 et 1 .
97
1000
Ứng dụng phần mềm R nghiên cứu thống kê
-0.5
0.0
ACF
0.5
1.0
Series x
0
5
10
15
20
25
30
Lag
Hình 4.14. Tương quan đồ của chuỗi thời gian xt et 0.8 et 1 .
Nhìn vào đồ thị ACF ta thấy ở trễ 0 thì tự tương quan là 1 ngoài ra chỉ ở trễ
1 thì tự tương quan có ý nghĩa và nó phải mang giá trị âm. Ở các trễ còn lại thì tự
tương quan gần như không có ý nghĩa.
# Tìm mô hình MA(1) cho chuỗi thời gian x.
> arima(x, order=c(0,0,1))
R cho kết quả
Call:
arima(x = x, order = c(0, 0, 1))
Coefficients:
s.e.
ma1
intercept
-0.8380
-0.0024
0.0168
0.0053
sigma^2 estimated as 1.065:
aic = 2908.29
log likelihood = -1451.14,
Ta có hệ số ước lượng của mô hình là bˆ 0.838 gần bằng hệ số của mô hình cơ
sở b 0.8 .
2.3. Quá trình tự hồi qui trung bình trượt – ARMA (Autoregressive Moving
Average Process)
2.3.1. Quá trình tự hồi qui trung bình trượt cấp p, q (ARMA(p, q))
Quá trình ARMA đóng vai trò rất quan trọng trong phân tích chuỗi thời
gian do tính mềm dẻo của nó trong việc thích hợp với hàm tự tương quan (ACF).
Ta có thể tìm một mô hình ARMA thích hợp với một số bất kỳ các giá trị đầu
tiên của ACF. Đặc biệt, nếu ACF của một chuỗi thời gian có hữu hạn số khác
không thì nó có thể thích hợp với một quá trình MA(q) ; nếu PACF của chuỗi
98
Ứng dụng phần mềm R nghiên cứu thống kê
thời gian có hữu hạn số khác không thì nó có thể thích hợp với một quá trình
AR(p).
Định nghĩa 4.17 Quá trình X t được gọi là quá trình tự hồi qui trung bình trượt
cấp p, q, kí hiệu X t ARMA( p, q ) , là một quá trình dừng thỏa
p
q
X t a i X t i t b j t j ; a i , b j , i 1, p, j 1, q ,
i 1
(4.37)
j 1
trong đó t là ồn trắng, các đa thức hồi qui a( z ) và đa thức trung bình trượt b( z )
có bậc p, q tương ứng:
a( z ) 1 a1 z ... a p z p , a p 0,
b( z ) 1 b1 z ... bq z q , bq 0.
Dạng toán tử của (4.37) là
a( B ) X t b( B ) t .
(4.38)
Định nghĩa 4.18 (Quá trình nhân quả và khả nghịch ARMA)
Một quá trình ARMA(p, q) được gọi là một quá trình nhân quả khả nghịch
nếu các phương trình a( z ) 0 và b( z ) 0 thỏa hai điều kiện:
i) Không có nghiệm chung;
ii) Không có nghiệm z 1 .
Trong luận văn này ta chỉ nói về quá trình nhân quả khả nghịch.
Chú ý 4.5 Dạng tổng quát của quá trình ARMA(p, q) là
p
q
X t a i X t i b0 t b j t j ,
i 1
(4.39)
j 1
trong đó b0 là một hằng số thực.
Chú ý 4.6 Do tính nhân quả và khả nghịch và do tính chất khả đảo của các đa
thức toán tử lập luận tương tự như phần AR(1) ta được các biểu diển khác của
quá trình X t ARMA( p, q ) :
X t i t i ; 0 1;
i 0
,
i
(4.40)
i 1
và có thể tính hệ số bằng cách chia (theo lũy thừa tăng) a( z ) cho b( z ) . Đây là
biểu diễn X t dưới dạng một trung bình trượt vô hạn ( tức là X t MA() )
Cũng có thể biểu diễn t thành một quá trình tự hồi qui có bậc vô hạn
(tức là t AR() ) :
t j X t j ; 0 1;
j 0
99
j 0
j
.
(4.41)
Ứng dụng phần mềm R nghiên cứu thống kê
Các đặc trưng của quá trình ARMA(p, q)
Từ biểu diển (4.37) và bằng cách nhân hai vế (4.37) với X t h (h 0) , sau đó
lấy kỳ vọng hai vế ta được
p
q
( h) E ( X t X t h ) ai (h i ) , X ( h) bi , X ( h i ) ,
i 1
(4.42)
i 1
với
, X E ( t , X t k ) .
Ta có
X t k i t k i .
(4.43)
i 0
Từ (4.43) và từ giả thiết t là ồn trắng ta suy ra
0 , k 0
, X (k ) E ( t i t k i )
2
k
,
0
i0
k
Với h q thì (4.42) được viết thành
p
( h) ai ( h i) ,
i 1
và do đó
p
h ai h1 .
i 1
2.3.2. Quá trình tự hồi qui trung bình trượt cấp (1,1) (ARMA(1,1))
Định nghĩa 4.19 Quá trình ARMA(1,1) là quá trình dừng có dạng
X t aX t 1 t b t 1 ,
trong đó t là ồn trắng.
Đa thức hồi qui: a( z ) 1 az .
Đa thức trung bình trượt: b( z ) 1 bz .
Điều kiện nhân quả khả nghịch: a 1 ; b 1
Dạng trung bình trượt cấp vô hạng là X t ( B ) t , trong đó
( z)
1+bz
j z j ,
1 az j 0
100
(4.44)
Ứng dụng phần mềm R nghiên cứu thống kê
với
0 1
0 1
a b
a b
1
1
0
a
0
a
(
a
b
)
1
2
2
j a j 1 0, j 2
j a j 1 , j 2
(4.45)
Các đặc trưng của quá trình ARMA(1,1)
i) Hàm tự hiệp phương sai
( h) a (h 1) , X ( h) b , X ( h 1) ,
(4.46)
trong đó , X ( k ) E ( k X t k ) k 2 .
Dùng công thức (4.46) và lần lượt cho h 0, 1 ta được
(0) a (1) 0 2 1 2b .
Dùng (4.45) ta lại có
(0) a (1) [1 b( a b)] 2 ,
(4.47)
và
(1) a (0) b0 2
(1) a (0) b 2
(4.48)
Từ (4.47) và (4.48) ta nhận được
(0)
(1)
1 2ab b 2 2
,
1 a2
(a b)(1 ab) 2
,
1 a2
( h) a (h 1), h 2 .
ii) Hàm tự tương quan
1
(1) (a b)(1 ab)
; 2 a 1 ; h a h1 , h 2 .
(0) 1 2ab b 2
Để ARMA(1,1) là quá trình nhân quả và khả nghịch thì a , b phải là
nghiệm có trị tuyệt đối bé thua 1 của hệ phương trình sau:
2
a
1
2
2
( 2 )b (2 ( 2 ) 1)b ( 2 ) 0
2
1
1 1
1
1
101
Ứng dụng phần mềm R nghiên cứu thống kê
2.3.3. Quá trình tự hồi qui trung bình trượt cấp (p, 1) (ARMA(p,1))
Định nghĩa 4.20 Quá trình ARMA(p, 1) là quá trình dừng có dạng
X t a1 X t 1 ... a p X t p t b t 1 ,
(4.49)
trong đó t là ồn trắng.
Đa thức hồi qui: a( z ) 1 a1 z ... a p z p , a p 0 .
Đa thức trung bình trượt: b(z)=1+bz .
Điều kiện nhân quả khả nghịch là
b 1
1
a ( ) 0, a( z ) 0,
b
z 1
Dạng trung bình trượt cấp vô hạng là X t ( B ) t , trong đó
( z)
b( z )
j z j .
a ( z ) j 0
Lệnh trong R
a) Hàm arima()
i) Mô tả
Tạo ra một mô hình ARIMA phù hợp cho chuỗi thời gian.
ii) Cú pháp
arima(x, order = c(0, 0, 0),
seasonal = list(order = c(0, 0, 0), period = NA),
xreg = NULL, include.mean = TRUE,
transform.pars = TRUE,
fixed = NULL, init = NULL,
method = c("CSS-ML", "ML", "CSS"),
n.cond, optim.method = "BFGS",
optim.control = list(), kappa = 1e6)
iii) Các thông số
x
một chuỗi thời gian đơn.
order
chỉ ra thành phần không mùa của mô hình ARIMA. Ba
thành phần (p, d, q) lần lượt là bậc của AR, bậc lấy sai
phân, bậc của MA.
seasonal
chỉ ra thành phần mùa của mô hình ARIMA, và chu kỳ
(mặc định là Frequency (x)). Đây là một dãy gồm các
thành phần order và Period.
102
Ứng dụng phần mềm R nghiên cứu thống kê
xreg
một véc tơ hoặc ma trận bất kỳ bên ngoài biến hồi qui độc
lập. Nó phải có số hàng bằng với số hàng của x.
include.mean
xem mô hình ARIMA có chứa số hạng trung bình hay bị
chặn không?. Mặc định là TRUE cho chuỗi không lấy sai
phân, và nó bỏ qua đối với mô hình ARIMA khi chuỗi lấy
sai phân.
transform.pars nếu là “TRUE” các tham số AR sẽ thay đổi để đảm bảo
rằng chúng vẫn nằm trong vùng có tính dừng. Không dùng
cho method = "CSS".
fixed
một véc tơ bất kỳ có chiều dài bằng với tổng số tham số.
init
véc tơ bất kỳ của những giá trị tham số ban đầu. Những giá
trị khuyết sẽ được lấp đầy bởi 0 trừ những hệ số hồi qui.
Những giá trị đã chỉ ra trong fixed sẽ được bỏ qua.
method
có hai phương pháp: maximum likelihood (tối đa hàm hợp
lý cực đại) hoặc phương pháp tổng bình phương nhỏ nhất.
Mặc định (nêu không có giá trị khuyết) là dùng phương
pháp tổng bình phương nhỏ nhất để tìm các giá trị bắt đầu,
sau đó là phương pháp maximum likelihood.
n.cond
chỉ sử dụng nếu sự điều chỉnh bằng phương pháp tổng bình
phương: số quan sát không xét đến ban đầu. Nó bỏ qua nếu
nhỏ hơn trễ lớn nhất của một số hạng AR.
optim.method
giá trị phù hợp với phương pháp đối số optim.
optim.control
dãy của các tham số điều chỉnh cho optim.
kappa
phương sai của mô hình lấy sai phân.
b) Hàm arima.sim()
i) Mô tả
Tổng quát dùng để mô phỏng mô hình ARIMA mà ta sẽ nói ở những phần
sau. Trong phần này nó được dùng để mô phỏng mô hình ARMA(p, q).
ii) Cú pháp
arima.sim(model, n, rand.gen = rnorm,
innov = rand.gen(n, ...), n.start = NA,
start.innov = rand.gen(n.start, ...), ...)
iii) Các thông số
moldel
một dãy với thành phần ar hoặc ma hoặc cả hai lần lượt cho
bởi hệ số của AR và MA. Các thành phần này có bậc tùy ý.
Một dãy rỗng cho bởi mô hình ARIMA(0, 0, 0) được gọi là
ồn trắng.
n
chiều dài của chuỗi cung cấp.
103
Ứng dụng phần mềm R nghiên cứu thống kê
rand.gen
một hàm bất kỳ được tạo ra từ sự đổi mới.
innov
một chuỗi bất kỳ của sự đổi mới. Nếu nó không được cung
cấp thì rand.gen sẽ được dùng.
n.start
chiều dài của chu kỳ “burn-in”. Nếu là NA (mặc định) thì
một giá trị hợp lý được tính.
start.innov một chuỗi thời gian bất kỳ được dùng cho chu kỳ trên. Giá trị
n.start ở đây phải nhỏ nhất (và n.start được mặc định
...
tính toán bên trong hàm)
những đối số được thêm vào cho rand.gen. Hầu hết, độ
lệch chuẩn của sự đổi mới được tạo ra bởi rnorm có thể
được chỉ ra bởi sd.
Ví dụ 4.18. Xây dựng một chuỗi thời gian Xt có độ dài 100 theo mô hình sau:
X t X t 1
1
X t 2 et 0.6et 1 .
4
Tạo ra mô hình ARMA(2,1) thích hợp cho chuỗi thời gian trên và mô phỏng mô
hình ARMA(2,1) vừa mới tạo.
Các bước được thực hiện trên R như sau:
# Tạo dữ liệu.
> set.seed(1)
> e = rnorm(100)
> x = NULL
# Gán 2 phần tử đầu của tập X là 2 giá trị đầu của biến ngẫu nhiên e.
> x[1:2] = e[1:2]
1
4
Tạo ra vòng lập for và gán X t X t 1 X t 2 et 0.6et 1 với t chạy từ 3 đến
1
4
100. Do X t X t 1 X t 2 et 0.6et 1 nên t chạy từ 3 mới có ý nghĩa.
> for (t in 3:100)
x[t]= x[t-1]-1/4*x[t-2]+e[t]+0.6*e[t-1]
# Vẽ đồ thị.
> plot(x, type=”l”)
> acf(x); pacf(x)
104
2
-2
0
x
4
6
Ứng dụng phần mềm R nghiên cứu thống kê
0
20
40
60
80
100
Index
a) Đồ thị của chuỗi X
0.4
-0.2
0.0
0.2
ACF
0.6
0.8
1.0
Series x
0
5
10
15
20
Lag
b) Đồ thị hàm tự tương quan của X
0.2
-0.4 -0.2 0.0
Partial ACF
0.4
0.6
0.8
Series x
5
10
15
20
Lag
c) Đồ thị hàm tự tương quan riêng của X
Hình 4.15. Mô tả quá trình ARMA(2, 1) của chuỗi Xt.
# Tạo mô hình ARMA(2,1) thích hợp cho chuỗi thời gian Xt.
> arma21=arima(x,order=c(2,0,1))
> arma21
105
Ứng dụng phần mềm R nghiên cứu thống kê
Kết quả từ R
Call:
arima(x = x, order = c(2, 0, 1))
Coefficients:
ar1
ar2
1.0518 -0.4290
ma1
0.5098
intercept
0.7427
s.e. 0.1316
0.1259 0.1404
0.3491
sigma^2 estimated as 0.7689: log likelihood = -130,
= 270
aic
# Tiến hành mô phỏng 100 giá trị cho mô hình ARMA(2,1) cho chuỗi Xt
với hệ số vừa mới tìm được.
> arima.sim(list(ar=c(1.0518,-0.4290),
ma=c(0.5098)), n=100)
Time Series:
Start = 1
End = 100
Frequency = 1
[1] 1.176921 0.361940 0.367709 0.785277 1.372793
[6] 2.501715 2.793043 1.099710 0.673459 -1.170717
[11] -3.084749 -3.275706 -2.418492 -0.202717 1.480769
[16] 2.121052 1.733592 0.630286 0.488515 1.744248
[21] -0.193722 -1.604398 -0.937692 -0.532211 0.576701
[86] 3.271709 4.860148 2.253887 -0.185553 -0.460208
[91] -0.525307 -0.364762 -0.935421 -0.588647 -0.198672
[96] -1.692272 -2.862070 -1.107232 0.424548 1.483876
Ví dụ 4.19. Tìm mô hình thích hợp cho chuỗi thời gian
Xt
3
1
X t 1 et et 1 ,
4
2
a) Vẽ đồ thị cho chuỗi Xt và tương quan đồ cho chuỗi thời gian trên.
b) Tạo mô hình AR(1), MA(1), ARMA(1,1) thích hợp cho chuỗi thời gian
trên. Từ đó dựa vào chỉ số AIC tìm mô hình thích hợp nhất cho chuỗi Xt.
Giải
Nhập dữ liệu
> set.seed(1)
> e = rnorm(100)
# Cho X là một tập rổng và gán phần tử đầu của tập X là giá trị đầu của biến
ngẫu nhiên e.
> x = NULL
> x[1] = e[1]
106
Ứng dụng phần mềm R nghiên cứu thống kê
# Vòng lập for cho t chạy từ 2 đến 100 và gán X t
3
1
X t 1 et et 1 .
4
2
> for (t in 2:100) x[t]=3/4*x[t-1]+e[t]+0.5*e[t-1]
a) Vẽ đồ thị và tương quan đồ
# Vẽ đồ thị.
1
-2
-1
0
x
2
3
4
> plot(x, type=”l”)
0
20
40
60
80
100
Index
Hình 4.16. Đồ thị của chuỗi thời gian X t
3
1
X t 1 et et 1 .
4
2
# Tương quan đồ của chuỗi x.
> acf(x); pacf(x)
0.4
-0.2
0.0
0.2
ACF
0.6
0.8
1.0
Series x
0
5
10
Lag
a) Đồ thị hàm tự tương quan
107
15
20
Ứng dụng phần mềm R nghiên cứu thống kê
x
0.2
0.0
-0.4
-0.2
Partial ACF
0.4
0.6
0.8
Ser ies
5
10
15
20
Lag
b) Đồ thị hàm tự tương quan riêng
Hình 4.17. Tương quan đồ của chuỗi X t
3
1
X t 1 et et 1 .
4
2
b) Tìm các mô hình cho chuỗi Xt.
# Tạo mô hình AR(1) cho chuỗi Xt.
> arima(x,order=c(1,0,0))
Kết quả từ R
Call:
arima(x = x, order = c(1, 0, 0))
Coefficients:
ar1 intercept
0.7788
0.5897
s.e. 0.0631
0.4376
sigma^2 estimated as 0.9931:
aic = 290.03
# Tạo mô hình MA(1) cho chuỗi Xt.
log likelihood = -142.01,
> arima(x,order=c(0,0,1))
Call:
arima(x = x, order = c(0, 0, 1))
Coefficients:
ma1 intercept
0.8223
0.7003
s.e. 0.0467
0.1870
sigma^2 estimated as 1.063:
aic = 297.01
# Tạo mô hình MA(1) cho chuỗi Xt.
> arima(x,order=c(1,0,1))
108
log likelihood = -145.5,
Ứng dụng phần mềm R nghiên cứu thống kê
Call:
arima(x = x, order = c(1, 0, 1))
Coefficients:
ar1
ma1
0.6150 0.5608
s.e. 0.0899 0.0907
intercept
0.6374
0.3513
sigma^2 estimated as 0.7768:
aic = 267.98
log likelihood = -129.99,
* Tìm mô hình thích hợp cho chuỗi thời gian Xt.
# Chỉ số AIC lần lượt cho các mô hình AR(1), MA(1), ARMA(1, 1).
> AIC(arima(x,order=c(1,0,0)))
[1] 290.0293
> AIC(arima(x,order=c(0,0,1)))
[1] 297.0099
> AIC(arima(x,order=c(1,0,1)))
[1] 267.9812
So sánh chỉ số AIC của 3 mô hình thì ta thấy chỉ số AIC của mô hình
ARMA(1,1) là nhỏ nhất. Vậy mô hình thích hợp nhất để tái hiện chuỗi thời gian
trên là ARMA(1,1).
# Tiến hành mô phỏng 100 giá trị của mô hình ARMA(1,1) cho chuỗi Xt.
> arima.sim(list(ar=c(0.6150),ma=c(0.5608 )), n=100)
Time Series:
Start = 1
End = 100
Frequency = 1
[1]
[5]
[9]
[13]
[17]
[21]
-1.227488462 -4.196677689 -4.841545194 -2.766224797
-1.441010844 -1.017893226 -0.120242245 -0.945899355
-0.150317063 0.517283544 1.022443116 2.059570073
2.070043628 0.519697035 0.989799003 -0.739248035
-2.121120782 -1.865678637 -1.456893532 0.031313709
0.727755984 0.931130771 0.731330203 0.163041314
[73] 1.529267675 1.662393520 2.461376432 3.953603885
[77] 3.362481002 2.681673914 0.942778467 0.328248473
[81] 1.426627316 1.561712153 0.561879280 -0.564906074
[85] -0.751102121 0.587088362 0.476670159 -0.099271104
[89] -1.423054203 -1.106619213 0.904541342 2.786805107
[93] 3.368128470 0.658495510 -0.161573311 0.627090163
[97] 0.288061011 0.149460112 -0.676507490 -0.221372695
109
Ứng dụng phần mềm R nghiên cứu thống kê
2.4. Quá trình hợp nhất tự hồi qui trung bình trượt ARIMA (Integrated
Autoregressive Moving Average)
Trong thực tế, phần lớn các quá trình X t không dừng, khi đó người ta xét
quá trình
X t X t X t 1 X t BX t (1 B ) X t
( X t là sai phân cấp 1 của Xt) với hy vọng Yt là quá trình dừng. Trường hợp X t
cũng chưa dừng thì ta xét tiếp quá trình 2 X t X t X t 1 , tức là xét
2 X t ( X t X t 1 ) ( X t 1 X t 2 ) X t 2 X t 1 X t 2 (1 B ) 2 X t ,
trong đó B là toán tử lùi.
Một cách tổng quát, nếu X t chưa là quá trình dừng thì ta xét quá trình
(1 B) d X t (sai phân cấp d của Xt), trong đó d là một số nguyên không âm với hy
vọng quá trình (1 B) d X t sẽ thỏa mãn tính dừng.
Định nghĩa 4.21 Quá trình {X t ; t } được gọi là quá trình hợp nhất tự hồi
qui trung bình trượt, kí hiệu X t ARIMA( p, d , q ) nếu quá trình (1 B) d X t là
dừng thỏa
a( B )(1 B) d X t b( B ) t , t ,
(4.50)
trong đó t là ồn trắng, a( B) , b( B ) lần lượt là các đa thức hồi qui và trung bình
trượt bậc p, q và d là một số nguyên không âm (gọi là bậc lấy sai phân).
Chú ý 4.4 Nếu đặt U t (1 B ) d X t thì U t ARIMA(p, q ) .
Trong thực tế, với chuỗi quan sát X {X t :t 1,..., n} khi lấy sai phân sẽ
làm mất đi một số số liệu ban đầu và một số số liệu cuối. Vì vậy phải tìm các bổ
sung các số liệu đã mất nhưng sẽ làm giảm tính khách quan của số liệu.
Chú ý 4.5
Trong thực tế, người ta chỉ chọn d 3 , nếu d 3 mà vẫn chưa thỏa mản
tính dừng thì có thể kết luận quá trình nghiên cứu không phù hợp với quá trình
ARMA.
Lệnh trong R
Mô hình ARIMA cơ bản là mô hình ARMA được làm thích hợp cho chuỗi
thời gian lấy sai phân. Do đó, ta cũng sử dụng hàm arima() để tạo ra một mô
hình ARIMA(p, d, q) thích hợp cho chuỗi thời gian với p là bậc của mô hình hồi
qui, d là bậc lấy sai phân của chuỗi và q là bậc của mô hình trung bình trượt.
110
Ứng dụng phần mềm R nghiên cứu thống kê
2.5. Hàm tự tương quan riêng PACF (Partial Autocorrelation Function)
2.5.1. Xấp xỉ tuyến tính
Cho {X t ; t } là một quá trình dừng có kỳ vọng 0 và hàm tự hiệp phương
sai
( h) E ( X t h X t ), h .
Người ta chứng minh được rằng có thể xác định được một tổ hợp tuyến tính
của các giá trị X 1 , X 2 ,..., X n để xấp xỉ tốt nhất X n1 theo nghĩa nếu tổ hợp tuyến
n
tính là Xˆ n1 nj X n1 j thì E X n 1 Xˆ n1 đạt min.
j 1
2.5.2. Tự tương quan riêng
Xét quá trình dừng {X t ; t } có kỳ vọng 0. Trong trường hợp tổng quát
nhất, X 1 tương quan với X n1 thông qua {X 2 ,..., X n } .
Mối tương quan trực tiếp (nếu có) giữa X 1 và X n1 mà không qua các biến
ngẫu nhiên trung gian X 2 ,..., X n gọi là tương quan riêng cấp n giữa X 1 và X n1 ,
kí hiệu ( n) .
Một cách hợp lý để “khử” các tương quan giữa X 1 và {X 2 ,..., X n } cũng
như khử các tương quan giữa X n1 và {X 2 ,..., X n } là tìm xấp xỉ tuyến tính tốt
nhất Xˆ của X và Xˆ của X và loại Xˆ ra khỏi X , Xˆ ra khỏi X và
1
n 1
1
1
n 1
1
n 1
n 1
tìm tương quan giữa các phần còn lại X 1 Xˆ 1 và X n1 Xˆ n1 .
Định nghĩa 4.22 Tự tương quan riêng cấp n giữa X 1 và X n1 , kí hiệu ( n) là
tương quan giữa X Xˆ và X Xˆ , tức là:
1
1
n 1
n 1
(n) corr(X 1 Xˆ 1 , X n1 Xˆ n1 )
cov (X 1 Xˆ 1 , X n 1 Xˆ n 1 )
.
ˆ
ˆ
var( X 1 X 1 ). var( X n1 X n1 )
Ta có (1) corr(X 1 X 2 ) 1 .
Trong định nghĩa trên ta chưa chú ý đến tính dừng của quá trình X t có kỳ
vọng không và có cov (X k , X l ) không phụ thuộc vào k, l mà chỉ phụ thuộc k l .
Một cách tổng quát, ta có định nghĩa sau:
Định nghĩa 4.23 Cho quá trình dừng X t , t , có kỳ vọng không. Tự tương
quan riêng cấp n của quá trình X t , kí hiệu ( n) , được cho bởi
(n) corr(X t Xˆ t , X t n Xˆ t n )
tức là
111
cov (X t Xˆ t , X t n Xˆ t n )
,
ˆ
ˆ
var( X t X t ). var( X t n X t n )
Ứng dụng phần mềm R nghiên cứu thống kê
(n)
cov (X t Xˆ t , X t n Xˆ t n )
,
var( X t Xˆ t )
(n)
cov (X t Xˆ t , X t n Xˆ t n )
,
var( X t n Xˆ t n )
hay
trong đó Xˆ t là xấp xỉ tuyến tính của X t .
Tính chất
i) Với quá trình AR(1): X t aX t 1 t , t là ồn trắng và a 1 ta có
(1) 0, (n) 0, n .
ii) Với quá trình MA(1): X t t b t 1 , t là ồn trắng và b 1 ta có
(b) n (1 b 2 )
(1) 1 , ( n)
.
1 b 2( k 1)
III- NHẬN DẠNG MÔ HÌNH ARIMA
Trong phần này ta nghiên cứu việc ước lượng các tham số d, p, q và các hệ
số a, b của các đa thức a( z ), b( z ) của mô hình ARIMA(d, p, q):
a( B )(1 B) d X t b( B ) t , t .
3.1. Các giả thiết và công cụ tính toán
Bằng cách ước lượng tham số d của quá trình ARIMA ta có thể nhận được
quá trình ARMA. Do đó ta có thể giả thiết X t là quá trình ARMA, tức là
a( B ) X t b( B ) t .
Trong thực tế, từ chuỗi quan sát X {X t : t 1, n} ta xác định được ba đặc
trưng số:
i) Tự hiệp phương sai mẫu ck :
ck
1 n k
1 n
(
X
X
)(
X
X
),
0
k
n
,
X
jk
X j .
j
n j 1
n j 1
(4.51)
ii) Tự tương quan mẫu rk :
rk
n
ck
, c0 ( X j X ) 2 .
c0
j 1
iii) Tự tương quan riêng mẫu akk :
112
(4.52)
Ứng dụng phần mềm R nghiên cứu thống kê
k
r
ri ak k i 1
k 1
i 1
ak 1 k 1
k
1 ri aki
i 1
ak 1 j akj ak 1 k 1 a (k ) j 1, k
(4.53)
trong đó a ( k ) ( ak k ak k 1...ak1 ).
3.2. Kiểm tra tính dừng
Quá trình dừng là bản chất của việc khảo sát quá trình ARMA. Ta đã biết
một quá trình X t , t là dừng nếu có kỳ vọng, phương sai là hằng (không phụ
thuộc vào thời điểm khảo sát) và có tự hiệp phương sai không phụ thuộc vào thời
điểm cụ thể mà chỉ phụ thuộc vào khoảng cách giữa hai thời điểm khảo sát, tức
là:
EX t m, t ,
varX t X2 , t ,
cov( X t X t h ) (k ) (chỉ phụ thuộc k); X2 (0) .
Trong thực tế, ta chỉ có thông tin về quá trình X t nhận được từ chuỗi quan
sát X {X t : t 1, n} nên ta không thể khẳng định tính dừng hay không dừng của
quá trình X t .
Box và Jenkins để xuất lấy sai phân X t (1 B) d X t có nhiều khả năng
dừng hơn bản thân quá trình X t . Do đó ta có thể xét quá trình
X t (1 B) X t X t X t 1 (d 1)
với giả thiết X t là quá trình dừng.
Nhận xét 4.5: Nếu X t là quá trình dừng thì các tự hiệp phương sai mẫu và
do đó các tự tương quan mẫu rk (của quá trình nguyên thủy Xt) không bị triệt tiêu
nhanh chóng với những k lớn.
Ta có dấu hiệu quan sát cho chuỗi X: Nếu các tự tương quan mẫu rk triệt
tiêu nhanh với k khá lớn thì X t chưa dừng.
Khi đó ta xét tiếp quá trình 2 X t X t X t 1 với hy vọng quá trình 2 X t
gần với quá trình dừng hơn và có thể tiếp tục với quá trình này nhưng nói chung ,
d 3 , nếu d=3 mà vẫn chưa có quá trình dừng thì ta kết luận quá trình nguyên
thủy không phù hợp với quá trình ARMA.
3.3. Nhận dạng quá trình AR
Về nguyên tắc, ta giả thiết quá trình Xt là quá trình nhân quả khả nghịch, tức
là có thể biểu diễn dạng AR hữu hạn thành một MA vô hạn và ngược lại, có thể
113
Ứng dụng phần mềm R nghiên cứu thống kê
biểu diễn một MA hữu hạn thành một AR vô hạn. Tuy nhiên, trong thực tế, nếu
dùng AR mà vẫn phù hợp thì nên dùng AR vì việc tìm hệ số a của mô hình AR
đơn giản hơn so với các mô hình MA và ARMA.
Ta có các kết quả sau
+ Nếu X t AR( p ) thì a p p 0 và ak k 0 k p .
+ Nếu X t MA( q ) thì aq q 0 và ak k 0 k q .
Từ đó ta suy ra thủ tục nhận biết AR hay không: nếu tự tương quan riêng
mẫu ak k giảm dần (về trị tuyệt đối) và giảm tới 0 theo dáng điệu của hàm mũ
(hàm sin) thì có thể kết luận quá trình tuân theo mô hình ARMA.
Thủ tục nhận dạng AR
Tính tự tương quan riêng mẫu ak k .
Vẽ đồ thị ak k với k 1, 40 .
Nếu ak k tắt dần nhanh chóng theo kiểu hàm mũ hoặc hàm sin thì kết luận
có AR.
Nếu ak k tắt dần chậm và không tuân theo luật nào cả thì kết luận không có
AR.
Chú ý 4.6. Trong quá trình tìm hiểu dáng điệu tắt dần của ak k có thể ước
lượng bậc hồi qui p cũng như bậc trung bình trượt q. Tuy nhiên, trên thực tế
người ta chỉ quan tâm nhiều đến việc ước lượng p và thường lấy p không vượt
quá 13. Khi quá trình nghiên cứu không phải là AR thì người ta điều chỉnh q từ
q 1 đến q 3 mà mô hình vẫn không phù hợp thì kết luận ARMA không phù
hợp với dữ liệu X.
3.4. Ước lượng các tham số a, b
Trong phần này ta giả thiết là đã biết các tham số d, p, q của quá trình
ARMA X t ( X t ARIMA( p, d , q ) ). Công việc tiếp theo là ước lượng các tham
số a, b của mô hình (ước lượng thô các tham số a, b).
3.4.1. Ước lượng tham số a của AR(p)
Đối với quá trình AR(p) với p > 2 ta thường gặp khó khăn khi kiểm tra điều
kiện nhân quả. Do đó ta chỉ tập trung xét quá trình AR(1) và AR(2).
a) Trường hợp X t AR(1)
X t có dạng: X t aX t 1 t .
Điều kiện nhân quả: a 1 .
Dùng công thức (4.51) và (4.52) tính c0 , c1 , r1 và dùng công thức của tự
tương quan ta được: a r1 .
114
Ứng dụng phần mềm R nghiên cứu thống kê
b) Trường hợp X t AR(2)
X t có dạng: X t a1 X t 1 a2 X t 2 t , a2 0 .
Điều kiện nhân quả: phương trình 1 a1 z a2 z 2 0 có nghiệm z thỏa
z 1 dẫn đến
a1 a2 1
a2 a1 1
(4.54)
a2 1
Dùng công thức (4.51) và (4.52) tính c0 , c1 , c2 , r1 , r2 ta được
a1
r1 (1 r2 )
;
1 r12
a2 1
1 r2
.
1 r12
(4.55)
Thay các giá trị của a1 và a2 ở (4.55) vào (4.54) ta được điều kiện nhân quả đối
với r1 và r2 :
(1 r2 )(1 r1 ) 0
(1 r2 )(1 r1 ) 0
2
(1 r2 )( r2 2r1 1) 0
(4.56)
Do điều kiện r1 1 và r2 1 nên (4.56) thu gọn thành
r2 2r12 1 .
3.4.2. Ước lượng tham số b của mô hình MA(q)
Trong thực tế, người ta chỉ dùng MA(q) với q 2 nên ta chỉ tìm q cho quá
trình MA(1) và MA(2).
a) Trường hợp X t MA(1)
X t có dạng: X t t b t 1 .
Điều kiên khả nghịch: b 1 trong đó b là nghiệm của phương trình
2
rb
b r1 0 .
1
Do đó ta có điều kiện đối với r1 : r1
1
.
2
b) Trường hợp X t MA(2)
X t có dạng: X t t b1 t 1 b2 t 2 .
Điều kiên khả nghịch: 1 b1 z b2 z 2 0 có nghiệm z với z 1 cho ta điều
kiện
115
Ứng dụng phần mềm R nghiên cứu thống kê
b1 b2 1
b2 b1 1
b 1
2
trong đó b1 , b2 là nghiệm của hệ phương trình
(1 b12 b22 )r1 b1 b1b2
2
2
(1 b1 b2 )r2 b2
3.4.3. Ước lượng tham số a, b của mô hình ARMA(p, q)
Trong phần này ta nghiên cứu việc ước lượng tham số a, b của mô hình
ARMA(p, 1) với p 3 .
a) Trường hợp X t ARMA(1,1)
X t có dạng: X t aX t 1 t b t 1 .
Điều kiện nhân quả khả nghịch: a 1 ; b 1 .
Ta tìm a, b từ hệ phương trình:
r2
a
r1
r2 2
r2 2
r2
(r1 )b (2r2 ( ) 1)b ( r1 ) 0 ,
r1
r1
r1
a 1, b 1
trong đó b thỏa hệ:
r2
a
r1
r
r
r
2
2
(r 2 )b (2r ( 2 ) 1)b (r 2 ) 0.
2
1
1 r1
r1
r1
b) Trường hợp X t ARMA( p,1)
X t có dạng: X t a1 X t 1 ... a p X t p t b t 1 .
Đa thức hồi qui: a( z ) 1 a1z ... a p z p , a p 0 .
Đa thức trung bình trượt: b(z ) =1+ bz .
Điều kiện nhân quả khả nghịch:
116
Ứng dụng phần mềm R nghiên cứu thống kê
b 1
1
a ( ) 0, a( z ) 0,
b
z 1
trong đó a1 , a2 , ..., a p là nghiệm của hệ
r1a1 a2 r1a3 ... rp 2 a p r2
r2 a1 r1a2 a3 ... rp 3a p r3
... ...
...
r a r a ... a r
p
p
p 1 1 p 2 2
rp a1 rp 1a2 ... r1a p rp 1
Sau khi tìm được ai , i 1, p , ta tìm b và 2 từ hệ phương trình sau:
1 r1a1 a2 ... rp a p 2 (1 a1b b 2 )
2
r1 a1 r1a2 ... rp1a p b
Khi p > 3 thì việc giải hệ phương trình trên trở nên không đơn giản.
3.5. Xử lý mùa trong mô hình ARIMA
Giả sử từ chuỗi quan sát X {X t : t 1, n} ta phát hiện ra quá trình X t có
tính mùa, tức là có tính tuần hoàn với chu kỳ s; với s = 12 với chu kỳ năm, s = 4
nếu chu kỳ là quý, s = 7 nếu chu kỳ là tuần lễ… Khi đó, theo Box và Jenkins, X t
sẽ thỏa phương trình
a( B s ) X t b( B s ) t ,
(4.57)
tức là
(1 a1 B s a2 B 2 s ... a p B ps ) X t (1 b1B s b2 B 2 s ... bq B qs ) t
Chẳng hạn, khi s = 12 (chu kỳ năm), ta được
X t a1 X t 12 a2 X t 24 ... a p X t 12 p t b1 t 12 b2 t 24 ... bp t 12 q .
Trên thực tế, với chuỗi quan sát X {X t : t 1, n} , khi dùng mô hình này;
thực chất là ta đã chia X thành 12 chuỗi con (ứng với s =12) như sau:
X 1 {X 1 , X 13 , X 25 ,..., X 12 m1}
X 2 {X 2 , X 14 , X 26 ,..., X 12 m 2 }
...........................................
X 12 {X 12 , X 24 ,..., X 12 m 12 }.
Mỗi chuỗi gồm ít nhất m + 1 số liệu và trong mỗi chuỗi con X i (i 1, 12) ,
việc xây dựng mô hình ARMA theo các thủ tục đã được giới thiệu.
117
Ứng dụng phần mềm R nghiên cứu thống kê
Chú ý 4.7
- Tính mùa có thể nhận biết dựa vào đồ thị SAC (hoặc AFC). Nếu sau m
thời gian mà đoạn đoạn SAC có giá trị cao (đồ thị SAC có đỉnh cao) thì có tính
mùa.
- Việc xử lý tính mùa theo (4.57) gặp khó khăn vì số liệu rất ít (khi chu kỳ s
càng lớn thì số liệu càng ít). Dẫn đến việc ước lượng các tham số sẽ thiếu chính
xác. Hơn nữa, ta phải dùng nhiều mô hình (4.57) (dùng s mô hình) khác nhau nên
việc tính toán sẽ phức tạp hơn.
- Nói chung, kích thước ni của các chuỗi quan sát Xi sẽ khác nhau. Các kích
thước đó chỉ giống nhau khi n là bội của s.
3.6. Phương pháp BOX-JENKINS
Box và Jenkins đề xuất một phương pháp cho phép nghiên cứu một cách có
hệ thống các dạng khác nhau của chuỗi thời gian dựa vào các tính chất của nó.
Mục tiêu là tìm trong số tất cả các mô hình ARIMA một mô hình thích hợp nhất
với chuỗi thời gian nghiên cứu. Phương pháp này gồm các bước cơ bản sau:
- Nhận dạng mô hình.
- Ước lượng các tham số.
- Kiểm tra chuẩn đoán.
Các bước này được lặp lại đến khi nhận dạng được mô hình thích hợp.
i) Bước 1: Nhận dạng mô hình
Đây là bước quan trọng và khó nhất. Nhận dạng mô hình ARIMA( p, d , q )
là tìm các giá trị thích hợp của p, d , q với d là bậc sai phân của chuỗi thời gian
được khảo sát, p là bậc tự hồi qui và q là bậc trung bình trượt. Các nguyên tắc sau
đây nhằm xác định thông số p, d, q của mô hình ARIMA:
- Xác định p, q của mô hình ARMA nhờ vào đồ thị tự tương quan riêng
phần mẫu (SPAC) và tự tương quan mẫu (SAC) :
+ Chọn mô hình AR( p ) nếu đồ thị SPAC có giá trị cao tại độ trễ 1, 2, …,
p và giảm nhiều sau p và dạng hàm SAC giảm dần.
+ Chọn mô hình MA( q) nếu đồ thị SAC có giá trị cao tại độ trễ 1, 2, …, q
và giảm nhiều sau q và dạng hàm SPAC giảm dần. Tóm lại:
Loại mô hình
Dạng đồ thị SAC
Dạng đồ thị SPAC
AR(p)
Giảm dần
Có đỉnh ở p
MA(q)
Có đỉnh ở q
Giảm dần
ARMA(p, q)
Giảm dần
Giảm dần
Trong thực hành, phương pháp phân tích đồ thị chỉ cho ta tìm được p, q
trong các trường hợp đơn giản. Trong trường hợp tổng quát có thể áp dụng các
tiêu chuẩn sau để xác định p, q. Thực chất điểm chung của các tiêu chuẩn này là
118
Ứng dụng phần mềm R nghiên cứu thống kê
dựa vào sự khảo sát các giá trị liên quan đến phương sai của sai số cho bởi mô
hình với thông số đề nghị. Có 2 tiêu chuẩn thông dụng sau được sử dụng:
- Tiêu chuẩn Akaike Information Criterion (AIC):
AIC n ln( et2 ) 2 z .
Tiêu chuẩn này luận văn đã có nhắc ở chương 3, nhưng có sự khác biệt về
cách ghi công thức, mục đích nhằm thuận tiện cho việc tính toán.
- Tiêu chuẩn Schwarz Information Criterion (SIC):
SIC n ln( et2 ) z ln( n) .
Trong trường hợp lý tưởng, giá trị chọn của p, q tương ứng với trường hợp
cho ta các giá trị AIC và SIC cực tiểu. Trong khi áp dụng ta có thể gặp trường
hợp ở đó giá trị p, q không làm cho 2 tiêu chuẩn này đồng thời cực tiểu. Tuy
vậy, thường các tiêu chuẩn này cho giá trị p, q tối ưu không khác nhau lớn. Trong
trường hợp này ta sẽ khảo sát từng tổ hợp p, q cụ thể để quyết định chọn mô hình
hợp lý nhất.
ii) Bước 2: Ước lượng các hệ số của mô hình
Các hệ số của mô hình sẽ được xác định theo phương pháp bình phương tối
thiểu (OLS – Ordinary Least Square) sao cho:
(X
t
X t )2 min
t X t
Xt.
Trong luận văn này chúng ta sẽ dùng phần mềm R để chạy mô hình và xác định
giá trị các hệ số ước lượng.
iii) Bước 3: Kiểm định mô hình
Sau khi các thông số của mô hình được xác định, ta sẽ thực hiện kiểm định
trên các kết quả của ước lượng thu được.
- Các hệ số của mô hình phải khác 0 (kiểm định t). Nếu có một hay nhiều hệ
số không thỏa mãn ta sẽ loại bỏ ra khỏi mô hình AR hay MA đang xét.
- Phân tích các giá trị sai số được thực hiện từ 2 tiêu chuẩn sau:
+ Giá trị trung bình của sai số bằng 0, trong trường hợp ngược lại ta
nên thêm 1 hằng số vào mô hình.
+ Dãy giá trị sai số là một sai số ngẫu nhiên trắng. Các giá trị thống
kê của Box – Pierce và của Ljung – Box cho phép kiểm định tính
chất này. Nếu nó không phải là một sai số ngẫu nhiên trắng ta kết
luận mô hình không hoàn chỉnh và phải thêm vào mô hình các bổ
sung cần thiết.
Các phương pháp kiểm định:
- Kiểm tra sai số ngẫu nhiên trắng, kiểm tra phần dư giữa kết quả dự báo và
số liệu thực tế Xˆ t X t .
119
Ứng dụng phần mềm R nghiên cứu thống kê
+ Để xem dãy giá trị sai số có phải là một sai số ngẫu nhiên trắng hay
không, ta kiểm định xem tất cả các giá trị k có bằng 0 hay không. Quá trình
kiểm định thực hiện theo quy tắc sau đây:
H 0 : k 0
H1 : k 0
+ Trong thực hành, Quenouille đã chứng minh được rằng với một mẫu có
kích thước tương đối lớn, hệ số k tiến một cách tiệm cận về phân phối chuẩn có
giá trị trung bình bằng 0 và độ lệch chuẩn là
1
.
n
Khoảng tin cậy của hệ số k như sau:
0 t .
2
1
(n là số lượng quan sát).
n
Nếu hệ số k nằm ngoài khoảng tin cậy thì ta bác bỏ giả thuyết H0 (dãy
giá trị sai số không phải là một sai số ngẫu nhiên trắng).
- Tham số thống kê Box – Pierce:
+ Tương tự như trên ta đặt giả thuyết:
+ Tính giá trị thống kê Q định nghĩa bởi Box – Pierce như sau:
H 0 : k 0
H1 : k 0
Q n ' rl 2 (ˆ ) ,
trong đó n' n d với n là số quan sát của chuỗi, d là bậc sai phân và rl (ˆ ) là tự
tương quan mẫu của những phần dư ở trễ l.
+ Giá trị thống kê Q tuân theo một phân phối 2 có bậc tự do k. Từ đó
với mức ý nghĩa cho trước và bậc tự do k ta có giá trị 02 tra từ bảng.
Nếu Q 02 thì ta bác bỏ giả thuyết H0 và ngược lại ta chấp nhận H0.
Một cách khác trong thực hành có thể dựa vào giá trị P-value để kiểm
định giả thuyết (nếu P-value thì chấp nhận H0 và ngược lại).
- Tham số thống kê Ljung – Box:
LB n ' (n ' 2) rl 2 ( ) / (n ' l ) .
Bước kiểm định mô hình rất quan trọng, ta phải trở lại bước 1 nếu mô hình đề
nghị không thích hợp.
iv) Bước 4: Dự báo
Khi mô hình đã được kiểm định, ta có thể sử dụng nó để tiến hành dự báo
cho tương lai cho chuỗi thời gian. Một trong những lý do làm cho mô hình
ARIMA được thông dụng là tính chính xác của nó trong việc dự báo.
120
Ứng dụng phần mềm R nghiên cứu thống kê
3.7. Dùng R để xây dựng mô hình ARIMA bằng phương pháp Box-Jenkins
3.7.1 Mô hình ARIMA không có tính mùa
Bước 1: Nhận dạng mô hình
Thông thường một tập hợp các giá trị quan sát không cho ta chuỗi thời gian
dừng. Ta tiến hành lấy các sai phân để được chuỗi thời gian "gần dừng" hơn.
Lệnh sai phân cho bởi
> diff(file, d=n)
trong đó n là bậc lấy sai phân.
Chuỗi thời gian dừng sẽ có kỳ vọng và phương sai không đổi.
Ví dụ 4.20. Nhận dạng mô hình cho chuỗi dữ liệu sản lượng lúa được thu thập
từ năm 1990 - 2010 của cả nước (được lưu với tên “sanluonglua”).
Truy xuất dữ liệu và đặt tên cho dữ liệu là data:
> setwd("D:/studying/luan van/csv")
> sanluonglua=read.csv("sanluonglua.csv",header=T)
> sanluonglua.ts=ts(sanluonglua[,2],fr=1)
Chuỗi dữ liệu thô chưa có tính dừng nên ta lấy sai phân bậc 1
> d1=diff(sanluonglua.ts)
500 1000 1500 2000 2500
-500
0
d1
> plot(d1)
5
10
15
20
Time
Hình 4.18. Sai phân bậc 1 của sản lượng lúa cả năm.
Ta thấy tính dừng chưa thể hiện rõ sau khi lấy sai phân bậc 1. Ta tiếp tục lấy sai
phân bậc 2 với hy vọng nó sẽ dừng.
> d2= diff(d1)
> plot(d2)
121
0
-2000 -1000
d2
1000 2000
Ứng dụng phần mềm R nghiên cứu thống kê
5
10
15
20
Time
Hình 4.19. Sai phân bậc 2 của sản lượng lúa cả năm.
Tính dừng thể hiện rõ hơn ở sai phân bậc 2 (d=2) vì các giá trị tập trung
gần về 0.
Khi đã xác định được d = 2 ta tiếp tục xác định bậc p và q nhờ vào đồ thị
tương quan riêng phần mẫu (SPAC) và tự tương quan (SAC).
> acf(d2)
d2
-0.5
0.0
ACF
0.5
1.0
Series
0
2
4
6
8
10
12
Lag
Hình 4.20. Hàm SAC của sai phân bậc 2 của sản lượng lúa cả nước.
> pacf(d2)
d2
0.0
-0.2
-0.6
-0.4
Partial ACF
0.2
0.4
Series
2
4
6
8
10
12
Lag
Hình 4.21. Hàm SPAC của sai phân bậc 2 của sản lượng lúa cả nước.
122
Ứng dụng phần mềm R nghiên cứu thống kê
i) Dự báo với mô hình bình quân di động (MA)
Nhìn vào Hình 4.20 và Hình 4.21, ta thấy đồ thị ACF có trễ 0 thì tự tương
quan là 1 ngoài ra chỉ ở trễ 1 thì tự tương quan có ý nghĩa và nó phải mang giá trị
âm. Ở các trễ còn lại thì tự tương quan gần như không có ý nghĩa. Trong đó, ở đồ
thị SPAC có dạng hàm PAC giảm dần. Vì vậy, ta có thể tiên đoán có một MA(1)
ii) Dự báo với mô hình tự hồi qui (AR)
Nhìn vào Hình 4.20 và Hình 4.21, ta thấy ACF giảm dần nhanh và PACF có
giá trị cao ở trễ 1 và tắt dần sau trễ 1. Do đó ta có thể nhận ra mô hình cấp p=1,
hay có 1 mô hình AR(1).
iii) Dự báo với mô hình ARIMA bằng phương pháp Box-Jenkins:
Tương tự như trên, ta thấy ở đồ thị ACF có giá trị cao ở trể 0, 1 và PACF có
giá trị cao ở trể 1. Ta tiên đoán được 2 mô hình ARIMA cho chuỗi thời gian trên
như sau: ARIMA(0, 2, 1) và ARIMA(1, 2, 1). Để xem mô hình nào thích hợp
hơn thì ta có thể sử dụng chỉ số AIC để kiểm định.
Bước 2: Ước lượng các tham số của mô hình
Khi cấp của mô hình ARIMA(p,d,q) được đặc biệt, hàm arima() từ thư
viện ts được dùng để ước lượng các tham số.
Ví dụ 4.21. Ta tiếp tục với ví dụ 4.20
Từ ví dụ 4.20 ta nhận dạng được 4 mô hình cho chuỗi dữ liệu sản lượng lúa.
Ta sẽ tiến hành chọn ra một mô hình tốt nhất để dự báo cho chuỗi dữ liệu trên
bằng cách so sánh chỉ số AIC của từng mô hình.
> AIC(arima(sanluonglua.ts, order=c(0,0,1)))
[1] 414.1859
> AIC(arima(sanluonglua.ts, order=c(1,0,0)))
[1] 372.8698
> AIC(arima(sanluonglua.ts, order=c(1,2,1)))
[1] 320.7702
> AIC(arima(sanluonglua.ts, order=c(0,2,1)))
[1] 320.1791
Ta thấy chỉ số AIC của mô hình ARIMA(0, 2, 1) là nhỏ nhất, nên ta chọn
nó để dự báo cho chuỗi dữ liệu.
Tiến hành ước lượng tham số cho mô hình ARIMA(0, 2, 1).
> fit=arima(sanluonglua.ts, order=c(0,2,1))
> fit
R cho kết quả dưới đây:
Call:
arima(x = data, order = c(0, 2, 1))
123
Ứng dụng phần mềm R nghiên cứu thống kê
Coefficients:
ma1
-1.0000
s.e.
0.2603
sigma^2 estimated as 843625:
aic = 320.18
log likelihood = -158.09,
Bước 3: Kiểm định mô hình
Bước đầu tiên của việc kiểm tra chuẩn đoán là phân tích phần dư (residual)
từ việc làm phù hợp cho dấu hiệu không ngẫu nhiên. Việc này được thực hiện
bằng cách vẽ đồ thì ACF của residual của mô hình được làm phù hợp. Nếu ACF
mẫu của residual nằm trong giới hạn
1.96
1
(khoảng tin cậy 95% ),
N
trong đó N là số các quan sát, thì residual là white noise và chứng tỏ rằng mô
hình được làm phù hợp tốt.
R có hàm tsdiag() tạo ra đồ thị phỏng đoán cho mô hình phù hợp.
Ví dụ 4.22 (ta tiếp tục với ví dụ 4.21)
Từ ví dụ 4.21 ta đã tìm được mô hình thích hợp và đã tìm các hệ số của mô
hình. Tiếp theo tha tiến hành kiểm định bởi lệnh:
> fit = arima(sanluonglua.ts, order=c(0,2,1))
> tsdiag(fit)
Tạo ra kết quả chứa hình của residual (phần dư, thặng dư), tự tương quan
của phần dư (ACF of Residual) và p-giá trị của thống kê Ljung-Box của 10 lag
(trễ) đầu tiên.
-1 0 1 2
Standardize d Residua ls
5
10
15
20
Time
-0.4 0.2 0.8
ACF
ACF of Residuals
0
2
4
6
8
10
12
Lag
0.0 0.4 0.8
p value
p value s for Ljung-Box statistic
2
4
6
8
10
lag
Hình 4.22. Đồ thị các giá trị kiểm định cho mô hình ARIMA(0, 2, 1)
của dữ liệu sanluonglua.
124
Ứng dụng phần mềm R nghiên cứu thống kê
Với N=21 thì 1.96.
1
0.43 , nhìn trên đồ thị ta thấy ACF of Residuals
21
nằm trong khoảng . Do đó residuals là white noise.
- Mặt khác, ta dùng tham số Box-Pierce (và Ljung-Box) để kiểm tra phần
dư.
Trong R ta có hàm Box.test()
Cấu trúc:
> Box.test(x, lag = 1, type = c("Box-Pierce", "LjungBox"), fitdf = 0)
Bước 4: Dự báo
Khi một mô hình được nhận dạng và tham số của nó đã được ước lượng, ta
muốn dự đoán giá trị tương lai của chuỗi thời gian.
Tiếp tục với ví dụ trên, ta dự đoán các giá trị tương lai cho chuỗi dữ liệu sản
lượng lúa ở 8 năm kế tiếp (2011-2015) với hàm predict().
> fit = arima(data, order=c(0,2,1))
> data.pred = predict(fit, n.ahead=5)
Trong data.pred chứa hai đối tượng (entries): các giá trị dự đoán
data.pred$pred và sai số tiêu chuẩn của dự đoán data.pred$se.
> data.pred$pred
Time Series:
Start = 22
End = 26
Frequency = 1
[1] 41027.09 42065.29
43103.48
44141.67
45179.86
> data.pred$se
Time Series:
Start = 22
End = 26
Frequency = 1
[1] 941.1715 1362.3399 1706.0183 2012.3094 2296.2234
Ta plot dữ liệu data và dự đoán các giá trị:
> plot(data, xlim=c(0,26), ylim=c(15000,46000))
> lines(data.pred$pred, col="red")
> lines(data.pred$pred+2*data.pred$se, col= “blue”,
lty=4)
> lines(data.pred$pred-2*data.pred$se, col=6, lty=4)
Đầu tiên, các giá trị của data được plot. Trục x được giới hạn từ năm 19902015 tương ứng với 26 năm xlim=c(0,26). các gí trị dự đoán được cho bởi
đường màu đỏ (dùng tùy chọn col= “red”).
125
15000
25000
data
35000
45000
Ứng dụng phần mềm R nghiên cứu thống kê
0
5
10
15
20
25
Time
Hình 4.23. Đồ thị dự báo sản lượng lúa cả năm từ 2011-2015
bằng mô hình ARIMA(0, 2, 1).
3.7.2 Mô hình ARIMA có tính mùa
Mặc dù thoáng nhìn mô hình ARIMA có tính mùa phức tạp hơn mô hình
dựa trên hồi qui tuyến tính và mô hình ARIMA không có tính mùa (đã xét ở
trên). Nhưng nhìn chung nó dễ để điều khiển, làm thích hợp các giá trị và dự
đoán các giá trị tương lai. Hàm arima() trong R dùng cho cả mô hình ARIMA
và mô hình mùa ARIMA (SARIMA). Tuy nhiên mô hình SARIMA cần thêm
vào một tham số mùa để mô tả bậc và chu kỳ mùa. Dó đó để làm thích hợp một
mô hình ARIMA(p, d, q)×(P, D, Q)S trong R, giá trị tham số mùa sẽ có đoạn
code như sau:
seasonal = list (order = c(P, D, Q), period = S)
Mô hình ARIMA cơ bản là mô hình ARMA được làm thích hợp cho chuỗi
thời gian lấy sai phân. Do đó, mô hình SARIMA cũng được hiểu như vậy.
Một trong các khó khăn thường gặp khi khảo sát chuỗi thời gian với tính
mùa là tìm bậc p, d, q và P, D, Q khi dựa vào các hàm ACF và PACF. Rất nhiều
trường hợp, các thông tin nhận được từ các hàm này không đủ để xác định các
bậc cho mô hình. Khi đó ta thường khảo sát nhiều mô hình và chọn mô hình tốt
nhất dựa vào AIC nhỏ nhất. Để công việc này trở nên dễ dàng hơn ta có đoạn
chương trình của R để tìm mô hình ARIMA tốt nhất có tên get.best.arima
sau:
> get.best.arima = function(x.ts,
maxord = c(1, 1, 1, 1, 1, 1))
{
best.aic = 1e8
n = length(x.ts)
for (p in 0:maxord[1])
for (d in 0:maxord[2])
for (q in 0:maxord[3])
for (P in 0:maxord[4])
126
Ứng dụng phần mềm R nghiên cứu thống kê
for (D in 0:maxord[5])
for (Q in 0:maxord[6])
{
fit = arima(x.ts, order= c(p,d,q),
seas = list(order = c(P,D,Q),
frequency(x.ts)), method = "CSS")
fit.aic = -2*fit$loglik +2*length(fit$coef)
if (fit.aic < best.aic)
{
best.aic = fit.aic
best.fit = fit
best.model = c(p,d,q,P,D,Q)
}
}
list(best.aic,best.fit,best.model)
}
Ví dụ 4.23. Ta có dữ liệu về tổng số người tử vong do tai nạn mỗi tháng ở Hoa
Kỳ được thu thập từ năm 1973-1978 (dữ liệu có trong thư viện của phần mềm R
với tên USAccDeaths).
> data(USAccDeaths)
> UD=USAccDeaths
# Đồ thị của chuỗi UD.
9000
7000
8000
UD
10000
11000
> plot(UD)
1973
1974
1975
1976
Time
1977
1978
1979
Hình 4.24. Tổng số người tử vong do tai nạn mỗi tháng ở Hoa Kỳ 1973-1978.
# Vẽ đồ thị sai phân bậc 1 cho dữ liệu.
> plot(diff(UD))
127
0
-1000 -500
diff(UD)
500
1000 1500
Ứng dụng phần mềm R nghiên cứu thống kê
1973
1974
1975
1976
1977
1978
1979
Time
Hình 4.25. Đồ thị sai phân bậc 1 của chuỗi UD.
Chuỗi dữ liệu đã dừng khi lấy sai phân bậc 1 (d=1).
> acf(diff(UD))
diff(UD)
-0.2 0.0 0.2 0.4 0.6 0.8 1.0
ACF
Series
0.0
0.5
1.0
1.5
Lag
Hình 4.26. Tương quan đồ của chuỗi UD.
Qua hình 4.25 và hình 4.26 ta nhận thấy dữ liệu có tính mùa với chu kỳ là 12
tháng.
Để tìm mô hình thích hợp cho chuỗi dữ liệu có tính mùa, ta áp dụng đoạn
lệnh get.best.arima trên. ta làm như sau:
> get.best.arima(UD, maxord=c(1,1,1,1,1,1))
Kết quả từ R:
[[1]]
[1] 851.9169
[[2]]
Call:
arima(x = x.ts, order = c(p, d, q), seasonal = list(order =
c(P, D, Q), frequency(x.ts)), method = "CSS")
Coefficients:
ma1
sar1
sma1
-0.6397 -0.1007 -0.4872
s.e.
0.0921
0.1368
0.1993
128
Ứng dụng phần mềm R nghiên cứu thống kê
sigma^2 estimated as 98686:
[[3]]
[1] 0 1 1 1 1 1
part log likelihood = -422.96
Sau khi R cho kết quả, ta nhận được mô hình tốt nhất cho chuỗi dữ liệu là
ARIMA(0, 1, 1)(1, 1, 1)12 với chỉ số AIC là 851.9169.
* Kiểm định mô hình
# Gán mô hình tốt nhất vừa tìm được cho biến arima.best
> arima.best = arima(UD, order=c(0,1,1),
season=c(1,1,1), method = "CSS")
# Vẽ đồ thị và tiến hành kiểm định
> tsdiag(arima.best)
-2
0
2
Standardized Residuals
1973
1974
1975
1976
1977
1978
1979
Time
0.4
-0.2
ACF
1.0
ACF of Residuals
0.0
0.5
1.0
1.5
Lag
0.0 0.4 0.8
p value
p values for Ljung-Box statistic
2
4
6
8
10
lag
Hình 4.27. Đồ thị các giá trị kiểm định cho mô hình ARIMA của dữ liệu
USAccDeaths.
Trên biểu đồ ACF of Residuals, các giá trị phân tán rất gần 0, điều đó cho
thấy chuỗi phần dư là ồn trắng, như thế thì mô hình có ý nghĩa thống kê. Ta tiến
hành dự đoán các giá trị cho chu kỳ kế tiếp.
> UD.pred=
predict(arima.best1,n.ahead=12)
> UD.pred
Kết quả từ R:
$pred
Jan
Feb
Mar
Apr
May
Jun
Jul
1979 8336.1 7531.8 8314.6 8616.8 9488.9 9859.7 10907.4
129
Ứng dụng phần mềm R nghiên cứu thống kê
Aug
1979 10086.5
Sep
9164.9
Oct
Nov
Dec
9384.2 8884.9 9376.5
Ỏ trên lần lượt là các giá trị được dự đoán ở chu kỳ 12 tháng kế tiếp.
Tháng
Giá trị dự đoán Tháng
Giá trị dự đoán
1
8336.1
7
10907.4
2
7531.8
8
10086.5
3
8314.6
9
9164.9
4
8616.8
10
9384.2
5
9488.9
11
8884.9
6
9859.7
12
9376.5
Vẽ đồ thị dự đoán cho chuỗi UD
> plot(UD, xlim=c(1973, 1980))
9000
7000
8000
UD
10000
11000
> lines(UD.pred$pred, col="red")
1973
1974
1975
1976
1977
1978
1979
1980
Time
Hình 4.28. Đồ thị dự đoán cho chuỗi UD chu kỳ 12 tháng kế tiếp.
Ở đồ thị 4.28 đường màu đỏ là đường dự đoán của mô hình.
130
Ứng dụng phần mềm R nghiên cứu thống kê
PHẦN KẾT LUẬN
Luận văn đã trình bày khá đầy đủ các kiến thức liên quan đến thống kê. Đi
kèm với mỗi kiến thức của thống kê là các lệnh R để thực hiện các tính toán, vẽ
đồ thị, v.v… Khi sử dụng phần mềm R vào học tập và nghiên cứu thống kê đã
làm thay đổi thái độ của em trong quá trình học tập. Em thấy hiểu, thích thú và
hăng say hơn với môn học này. Em nghĩ luận văn sẽ giúp ích cho các bạn sinh
viên khi học các môn liên quan đến thống kê và muốn áp dụng vào thực tế.
Trong tương lai, em hy vọng sẽ tiếp tục nghiên cứu ứng dụng xa hơn nữa
việc sử dụng phần mềm R trong phân tích và xử lý số liệu thống kê và dùng các
kết quả này để thực hiện các thống kê trong đời sống.
Mặc dù có sự cố gắng và nỗ lực của bản thân cùng với sự giúp đở tận tình
của thầy hướng dẫn nhưng luận văn không thể tránh khỏi những thiếu sót nhất
định. Do đó, em rất mong nhận được sự đóng góp ý kiến của quý thầy cô nhằm
hoàn thiện luận văn này tốt hơn.
131
Ứng dụng phần mềm R nghiên cứu thống kê
THAM KHẢO CÁC HÀM TRONG R
abline( )
Graphics command
acf( )
Estimation of the autocorrelation function
arima( )
Fitting ARIMA–models
arima.sim( )
Simulation of ARIMA–models
Box.test( )
Box–Pierce and Ljung–Box test
c( )
Vector command
density( ) Ước lượng mật độ
diff( )
Takes differences
dnorm( )
Normal distribution
filter( )
Filtering of time series
hist( )
Draws a histogram / Vẽ biểu đồ
HoltWinters( ) Holt–Winters procedure
ks.test( )
Kolmogorov–Smirnov test
length( )
Vector command
lines( )
Lệnh đồ thị
lm( )
Mô hình tuyến tính
log( )
Calculates logs
lsfit( )
Least squares estimation
mean( )
Tính kỳ vọng
pacf( )
Ước lượng hàm tự tương quan riêng
plot( )
Vẽ đồ thị
predict( )
Hàm dự đoán
read.csv( ) Nhập dữ liệu từ file CSV
rep( ) Vector command
sd( ) Standard deviation / Độ lệch tiêu chuẩn
seq( ) Vector command
shapiro.test( ) Shapiro–Wilk test
sin( )
Hàm sin
stl( )
Seasonal decomposition of time series
summary( ) Generic function for summaries
ts( )
Tạo ra đối tượng chuỗi thời gian
tsdiag( )
Chuẩn đoán chuỗi thời gian
qqnorm( )
Quantile–quantile plot
132
Ứng dụng phần mềm R nghiên cứu thống kê
TÀI LIỆU THAM KHẢO
A. Tiếng Việt
[1] Nguyễn Dạ Ngân, Luận văn đại học, Khoa Khoa học Tự nhiên, Trường đại
học Cần Thơ, 2011
[2] Nguyễn Hồ Huỳnh, Chuỗi thời gian: Phân tích và nhận dạng, NXB Khoa
học và Kỹ thuật Hà nội, 2004.
[3] Nguyễn Hữu Khánh, Phân tích chuỗi thời gian, Giáo trình Đại học Cần Thơ,
2010.
[4] Nguyễn Văn Tuấn, Phân tích số liệu và biểu đồ bằng R, NXB Khoa học và
Kỹ thuật, 2006.
B. Tiếng Anh
[5] P.S. Cowpertwait, A.V. Metcalfe, Introductory Time Series with R, Springer
Dordrecht Heidelberg London New York, 2009.
[6] P. Dalgaard, Introductory Statistics with R, Spriger-Varlag NewYork, 2008.
[7] S. J. Sheather, A Modern Approach to Regression with R, Springer
Science+Business Media, LLC 2009.
[8] R.H. Shumway, D.S. Stoffer, Time Series Analysis and Its Applictions with R
Examples, Spriger-Varlag NewYork, 2006.
133
[...]... Ứng dụng phần mềm R nghiên cứu thống kê PHẦN NỘI DUNG Chương 1 PHẦN MỀM I GÍỚI THIỆU PHẦN MỀM R Năm 1996, trong một bài báo quan trọng về tính toán thống kê, hai nhà thống kê học Ross Ihaka và Robert Gentleman thuộc Trường đại học Auckland, New Zealand đề xuất một ngôn ngữ mới cho phân tích thống kê mà họ đặt tên là R. Sáng kiến này được r t nhiều nhà thống kê học trên ... để phục vụ tốt cho quá trình học tập, nghiên cứu thống kê nhằm đạt hiệu quả cao nhất. Đó là lý do mà tôi chọn đề tài này. II MỤC TIÊU VÀ PHƯƠNG PHÁP NGHIÊN CỨU 2.1 Mục tiêu của đề tài Nghiên cứu việc sử dụng phần mềm R cho việc học tập và nghiên cứu thống kê 2.2 Nội dung nghiên cứu Luận văn nghiên cứu việc sử dụng phần mềm R cho việc học tập và nghiên cứu thống kê. Luận văn trình bày các kiến thức cơ bản của thống kê và đi kèm là ... lập nên mô hình và từ đó tiến hành dự báo cho các giá trị tương lai. Song song với việc phát triển của thống kê, có r t nhiều phần mềm thống kê ra đời như Minitab, SPSS, R, Matlab, … Trong các phần mềm được nêu, R được nhiều người sử dụng nhất do tính thân thiện với người sử dụng, mã nguồn mở và có đặc tính r t mạnh vể xử lý thống kê. Vấn đề được nhiều người đặt ra là việc áp dụng phần mềm R như thế nào để phục vụ tốt cho quá trình học tập, nghiên cứu thống kê nhằm đạt hiệu quả cao ... dữ liệu không có dòng đầu tiên là tên dữ kiện thì header=FALSE) Muốn biết trong dữ liệu có những cột nào và tên gì ta dùng lệnh names(): > names(Salary) [1] "ID" "Salary" "Experience" Ta lưu dữ liệu Salary thành tập dữ liệu Salary.rda (rda nghĩa là file dữ liệu của R) : > save(Salary, file="Salary.rda") 5 Ứng dụng phần mềm R nghiên cứu thống kê 3.4 Nhập số liệu từ Excel Để nhập số liệu từ phần mềm Excel, chúng ta cần tiến hành 2 bước: ... phân tán nhỏ tức mức độ tập trung lớn; ngược lại khi phương sai lớn thì độ phân tán lớn tức mức độ tập trung nhỏ 12 Ứng dụng phần mềm R nghiên cứu thống kê Lệnh trong R Tính phương sai trong R ta dùng lệnh > var(x, y = NULL, na.rm = FALSE, use) trong đó: x là vectơ số, ma trận hoặc mảng dữ liệu y NULL (mặc định y = x), hoặc vectơ, ma trận, mảng dữ liệu tương thích với x. na.rm có tính lôgic. Các giá trị vắng mặt có thể lấy đi không? ... nghĩa là working directory, báo cho R biết r ng ta muốn lưu các số liệu trong directory có tên là “D:\Studying\insulin” > save(benh, file=”benh.rda”) Các số liệu trong đối tượng benh sẽ lưu trong file có tên là benh.rda Sau khi gõ xong hai lệnh trên, một file có tên benh.rda sẽ có mặt trong directory đó. Lưu ý r ng thông thường Windows dùng dấu backward slash “\”, ...Ứng dụng phần mềm R nghiên cứu thống kê PHẦN MỞ ĐẦU I LÝ DO CHỌN ĐỀ TÀI Thống kê là một bộ môn khoa học đã và đang trở thành công cụ then chốt được sử dụng trong quản lí, nghiên cứu, sản xuất, kinh doanh, v.v… Hai trong những phương pháp trong thống kê đang được phổ biến nhất là mô hình hồi qui và chuỗi thời gian. Mục đích của hai phương pháp này là tìm ra qui luật để thiết ... read.csv("Sal.csv", header=TRUE) Muốn xem số liệu Salary ta dùng lệnh > Salary Lưu số liệu vào file Salary.rda để làm việc trên R > save(Salary, file="Salary.rda") 3.5 Nhập số liệu từ SPSS Phần mềm thống kê SPSS lưu dữ liệu dưới dạng “sav”. Ví dụ chúng ta đã có một dữ liệu có tên là testo.sav trong directory “D:\Studying”, và muốn chuyển dữ liệu này sang dạng R có thể hiểu được, chúng ... “D:\Studying”, các bước sau đây là cần thiết để nhập số liệu vào R: > setwd("D:/Studying") > Salary = read.table("salary.txt", header=TRUE) Lệnh thứ nhất, yêu cầu R truy nhập vào directory “D:\Studying”. Tiếp theo, lệnh thứ hai báo cho R biết là nhập số liệu từ file “salary.txt” gán vào cho đối tượng Salary. Trong lệnh này, header=TRUE có nghĩa là yêu cầu R đọc dòng đầu tiên trong file salary.txt như là tên của từng cột dữ kiện (nếu ... Để tiện lợi và nhận được nhiều thông tin hơn, ta đặt một tham số chứa mô hình hồi qui như sau: > reg= lm(chol~age) 25 Ứng dụng phần mềm R nghiên cứu thống kê Khi đó biến reg có thể được sử dụng thay cho lm(chol~age) # Liệt kê các thông số liên quan đến hàm lm > summary(reg) Call: lm(formula = chol ~ age) Residuals: Min 1Q Median -0.40729 -0.24133 -0.04522 3Q 0.17939 Max 0.63040 Coefficients: Estimate Std Error t value Pr(>|t|) Intercept) 1.089218 0.221466 4.918
Ngày đăng: 12/10/2015, 19:27
Xem thêm: dùng phần mềm r nghiên cứu thống kê, dùng phần mềm r nghiên cứu thống kê