PHÂN TÍCH CHUỖI THỜI GIAN VỚI SỰ HỖ TRỢ CỦA PACKAGE AnalyzeTS CẦN THƠ 12/2015 Phân tích chuỗi thời gian với sự hỗ trợ của package AnalyzeTS 2 LỜI TỰA Chuỗi thời gian là một chủ đề khá rộng và có ứng d[.]
PHÂN TÍCH CHUỖI THỜI GIAN VỚI SỰ HỖ TRỢ CỦA PACKAGE AnalyzeTS CẦN THƠ_12/2015 Phân tích chuỗi thời gian với hỗ trợ package AnalyzeTS LỜI TỰA Chuỗi thời gian chủ đề rộng có ứng dụng nhiều thực tế, đặc biệt chuỗi thời gian mờ Trong R có khơng package hỗ trợ phân tích chuỗi thời gian Tuy nhiên cịn vấn đề (theo tìm hiểu chúng tơi) mà package chưa hỗ trợ tìm mơ hình tối ưu từ nhiều mơ hình dự tuyển thuộc lớp mơ hình “ARIMA”, “ARIMAX” “GARCH”, thứ hai mơ hình chuỗi thời gian mờ Package AnalyzeTS nhóm chúng tơi xây dựng q trình thực đề tài luận văn tốt nghiệp Cơng dụng package giải vấn đề nêu Package AnalyzeTS xây dựng thành viên: Trần Thị Ngọc Hân tranthingochan01011994@gmail.com Đoàn Hải Nghi Hainghi1426262609121094@gmail.com Mai Thị Hồng Diễm maidiemks@gmail.com Nguyễn Thị Diễm My myntdhg@gmail.com Hồng Việt Minh hongvietminh@gmail.com viết hoàn tất vào ngày 29/9/2015 (phiên 1.0) Cho đến nay, sau lần sửa đổi bổ xung Package AnalyzeTS (phiên 1.7) có 12 hàm hỗ trợ phân tích chuỗi thời gian Trong sách sử dụng phiên 1.7 Package AnalyzeTS Nhằm giới thiệu chức hỗ trợ package AnalyzeTS phân tích chuỗi thời gian, chúng tơi biên soạn sách nhỏ xin giới thiệu đến bạn đọc Đây lần xuất bản, nên sách khơng thể tránh khỏi sai sót Rất mong nhận góp ý phê bình bạn đọc Mọi góp ý phê bình xin bạn đọc gửi địa mail: hongvietminh@gmail.com myntdhg@gmail.com Cần thơ, ngày 20 tháng 12 năm 2015 Hồng Việt Minh Nguyễn Thị Diễm My Phân tích chuỗi thời gian với hỗ trợ package AnalyzeTS MỤC LỤC LỜI TỰA MỤC LỤC PHẦN NỘI DUNG Cấu trúc hàm 1.1 Hàm av.res 1.2 Hàm base.ts 1.3 Hàm Descriptives 1.4 Hàm Dgroup 1.5 Hàm grid.on 1.6 Hàm forecastGARCH 1.7 Hàm Frequencies 1.8 Hàm fuzzy.ts1 1.9 Hàm fuzzy.ts2 1.10 Hàm PrintAIC 1.11 Hàm CMA 1.12 Hàm SES 10 Bài toán doanh thu quán cà phê 10 2.1 Nguồn số liệu 10 2.2 Thống kê mô tả 12 2.2.1 Thống kê mô tả cho month day.of.week 12 2.2.2 Thống kê mô tả cho sales 12 2.3 Mơ hình Box-Jenkins 18 2.3.1 Mơ hình Box-Jenkins với số liệu gốc 18 2.3.2 Mô hình Box-Jenkins với biến giả 24 2.3.3 Mô hình Box-Jenkins với số liệu làm trơn 29 2.3.3 Mơ hình Box-Jenkins với số liệu mờ hóa 38 2.4 Mơ hình chuỗi thời gian mờ Abbasov-Mamedova 46 2.5 Tổng hợp so sánh mơ hình dự báo 50 Bài toán tỷ xuất sinh lợi giá cổ phiếu 51 3.1 Nguồn số liệu 51 3.1 Mơ hình ARMA–GARCH 52 3.2 Mơ hình ARMAX–GARCH 59 TÀI LIỆU THAM KHẢO 62 Phân tích chuỗi thời gian với hỗ trợ package AnalyzeTS PHẦN NỘI DUNG Cấu trúc hàm 1.1 Hàm av.res Nếu ta ký hiệu Yt giá trị thực tế Ft giá trị tính mơ hình dự báo thời đoạn ta có độ chênh lệch et = Yt - Ft Dựa sai số tính đại lượng đo lường sau : ME, MAE, MPE, MAPE, MSE, RMSE, U Công thức ME e t Sai số trung bình (Mean Error) n MAE e t Sai số tuyệt đối trung bình (Mean Absolute Error) n t e MSE Sai số bình phương trung bình (Mean Square Error) n RMSE Tên gọi t e n Căn bậc hai sai số bình phương trung bình (Root of Mean Square Error) et MPE Y t 100% n et MAPE U Y t n 100% RMSE RMSENaive Sai số phần trăm trung bình (Mean Percent Error) Sai số phần trăm tuyệt đối trung bình (Mean Absolute Percent Error) Chỉ số U Để tính tốn đại lượng đo lường ta sử dụng hàm av.res( ) Ta dùng để tính lúc cho nhiều mơ hình dự báo so sánh để tìm mơ hình tốt av.res(Y = NULL, F = NULL, E = NULL, r = 3) Y:Chuỗi quan sát F: Chuỗi giá trị dự báo E: Chuỗi phần dư dự báo r: Số thập phân sau dấu phẩy (mặc định 3) Kết trả đại lượng đo lường (nếu có mơ hình) ma trận (nếu có từ mơ hình trở lên) mà cột giá trị đại lượng đo lường cho mơ hình, cột cuối cho biết tên mơ hình có giá trị đo lường nhỏ Phân tích chuỗi thời gian với hỗ trợ package AnalyzeTS Các chuỗi đầu vào phải tổ hợp dạng data frame Khi muốn tính tốn so sánh lúc nhiều mơ hình, cần nhóm giá trị dự báo (hoặc chuỗi sai số) lại thành data frame Khi R tính tốn so sánh mơ hình với Chúng ta đưa vào hàm tham số, Y F Y E Nếu không đưa Y (chuỗi số liệu gốc) vào, đưa lúc F E vào R không nhận dạng khơng thể thực tính tốn 1.2 Hàm base.ts Hàm tính số tiêu dãy số thời gian, nhiên thực tế sử dụng nên khơng trình bày Bạn đọc xem thơng tin hàm thơng qua ‘help’ R 1.3 Hàm Descriptives Có 11 đại lượng thống kê miêu tả thường dùng cho biến liên tục trình bày tóm tắt bảng sau Ký hiệu Tên gọi Ký hiệu Tên gọi N Kích thước mẫu rd QU Giá trị phân vị 75% NaN Giá trị NA Max Giá trị lớn Min Giá trị nhỏ VAR Phương sai sq QU Giá trị phân vị 25% SD Độ lệch chuẩn Median Median SE Sai số chuẩn Mean Giá trị trung bình Để tính tốn so sánh (khi có nhiều biến liên tục data frame) ta dùng hàm Descriptives Ta vẽ đồ thị so sánh biến với nhau, cho hiển thị vài giá trị mà ta cần Descriptives(x, plot = FALSE, r = 2, answer = 1, statistic = "ALL") x: Một biến liên tục data frame chứa biến liên tục plot: có dạng + plot = TRUE để vẽ đồ thị miêu tả x chuỗi thời gian chiều + plot = list(a1, a2, …) ( với a1, a2, … giá trị thống kê mô tả Mean, Max, …) để vẽ biểu đồ cột so sánh biến data frame r: Số thập phân sau dấu phẩy (mặc định 2) answer: Form kết trả Ta cho answer=1 (mặc định) answer=2 statistic: Một danh sách giá trị thống kê miêu tả mà người dùng muốn R in hình (mặc định ALL, tức tất 11 giá trị) Kết trả giá trị thống kê mô tả Phân tích chuỗi thời gian với hỗ trợ package AnalyzeTS 1.4 Hàm Dgroup Đơi phân tích số liệu thống kê, cần thống kê giá trị quan sát theo nhóm đối tượng khác để so sánh Sử dụng hàm Dgroup( ) để thực phân tích Dgroup(x, follow = NULL, r = 2, answer = 1, statistic = "ALL") x: Một biến liên tục chuỗi thời gian follow: Một factor danh sách có khơng q factor r: Số thập phân sau dấu phẩy (mặc định 2) answer: From kết trả Ta cho answer=1 (mặc định) answer=2 statistic: Một danh sách giá trị thống kê miêu tả mà người dùng muốn R in hình (mặc định ALL, tức tất 11 giá trị) Kết trả giá trị thống kê mô tả 1.5 Hàm grid.on Nếu vẽ đồ thị đường đơn điệu lên cửa sổ đồ thị thật tẻ nhạt khó nhận xét Ta thường vẽ lưới lên biểu đồ đường để tiện cho việc nhận xét, hàm grid.on( ) giúp ta việc grid.on(h = TRUE, v = TRUE, col = "gray", nv = 1, nh = 1, lty = 3) h: Cho h=FALSE để không vẽ lưới theo chiều ngang v: Cho v=FALSE để không vẽ lưới theo chiều đứng col: Màu sắc cho đường lưới nv: Số đường lưới điểm trục x nh: Số đường lưới điểm trục y lty: Type đường lưới Tùy thuộc vào giá trị tham số người dùng khai báo mà đường lưới xuất lên biểu đồ 1.6 Hàm forecastGARCH Theo tìm hiểu, phần mềm thống kê khơng hỗ trợ dự báo cho mơ hình ARMA-ARCH (và mơ hình tương tự ARMA-GARCH, …), việc dự báo thường tính tốn excel Tuy nhiên cách tính dễ sai sót, hàm forecastGARCH( ) xây dựng nhầm mục đích tránh khỏi sai sót đáng tiếc Cấu trúc hàm cho bên forecastGARCH(fitARMA,fitGARCH,r=3,trace=FALSE,newxreg=NULL) fitARMA: Một đối tượng lớp ‘Arima’ fitGARCH: Một đối tượng lớp ‘garch’ r: Số thập phân sau dấu phẩy (mặc định 3) trace: Hiển thị kết tính tốn đầy đủ hay hiển thị kết dự báo? Cho trace=TRUE để thị kết tính tốn đầy đủ Phân tích chuỗi thời gian với hỗ trợ package AnalyzeTS newxreg: Một giá trị biến covariate ngày tiếp theo, dành cho mơ hình ARMAX-GARCH Kết trả danh sách gồm thành phần sau: ARCH: Hệ số mơ hình GARCH ARMA: Hệ số mơ hình ARMA forecast: Kết dự báo gồm cột + Point:Thời điểm dự báo + res: Phần dư dự báo + res^2: Bình phương res + SSL.forecast: Giá trị trung bìnhdự báo + VAR.forecast: Giá trị phương sai dự báo 1.7 Hàm Frequencies Tương tự hàm Descriptives( ) trên, hàm Frequencies( ) tính tốn giá trị thống kê mô tả cho biến rời rạc biến rời rạc data frame Frequencies(x, plot = FALSE, r = 2, answer = 1) x: Một biến rời rạc data frame chứa biến rời rạc plot: Cho plot=TRUE để vẽ biểu đồ tròn r: Số thập phân sau dấu phẩy (mặc định 3) answer: Form kết trả Ta cho answer=1 (mặc định) answer=2 Kết trả giá trị thống kê mô tả 1.8 Hàm fuzzy.ts1 Có mơ hình làm mờ chuỗi thời gian thơng dụng Chen, Singh, Heuristic Chen-Hsu Hàm fuzzy.ts1( ) làm mờ chuỗi thời gian với mơ hình fuzzy.ts1(ts, n = 5, D1 = 0, D2 = 0, type = c("Chen", "Singh","Heuristic", "Chen-Hsu"), bin = NULL, trace = FALSE, divide = NULL, plot = FALSE) ts: Chuỗi quan sát n: Số tập mờ D1: Một giá trị thích hợp D2: Một giá trị thích hợp type: Mơ hình mờ hóa bin: Điểm chia tập mờ cho mơ hình Chen-Hsu Nếu bin=NULL (mặc định) hàm chia tập mờ theo tham số ‘divide’ trace: Hiển thị kết tính tốn đầy đủ hay hiển thị kết dự báo? Cho trace=TRUE để thị kết tính tốn đầy đủ divide: Phương thức chia tập mờ lần + Cho divide="distance" để chia tập mờ cũ thành tập mờ nhỏ khoảng cách Phân tích chuỗi thời gian với hỗ trợ package AnalyzeTS + Cho divide="density" để chia tập mờ cũ thành tập mờ nhỏ mật độ plot: Cho plot=TRUE để vẽ biểu đồ chuỗi quan sát chuỗi mờ hóa Kết trả gồm có: type: Tên mơ hình mờ table1: Thơng tin tập mờ table2: Kết mờ hóa mơ hình Chen, Sinh, Heuristic Chen-Hsu bin != NULL Nếu type = “Chen-Hsu” bin = NULL table2 cung cấp thông tin tập mờ sau chia lại lần table3: Kết mờ hóa mơ hình Chen-Hsu bin = NULL accuracy: Thơng tin thước đo độ xác mơ hình dự báo 1.9 Hàm fuzzy.ts2 Chuỗi thời gian mờ Abbasov-Mamedova nhiều nhà thống kê đánh giá cao độ xác dự báo Sử dụng hàm fuzzy.ts2( ) để mờ hóa dự báo chuỗi thời gian mơ hình fuzzy.ts2(ts, n = 5, w = NULL, D1 = 0, D2 = 0, C = NULL, r = 4, trace = FALSE, forecast = NULL, plot = FALSE) ts: Chuỗi quan sát n: Số tập mờ w: Tham số ‘w’ D1: Một giá trị thích hợp D2: Một giá trị thích hợp C: Một số tùy ý r: Số thập phân sau dấu phẩy (mặc định 4) trace: Hiển thị kết tính toán đầy đủ hay hiển thị kết dự báo? Cho trace=TRUE để thị kết tính tốn đầy đủ forecast: Số thời điểm dự báo cho tương lai plot: Cho plot=TRUE để vẽ biểu đồ chuỗi quan sát chuỗi mờ hóa Kết trả hàm: type: Tên mơ hình mờ table1: Thơng tin tập mờ biến đổi table2: Chuỗi quan sát chuỗi biến đổi table3: Mờ hóa biến đổi chuỗi quan sát table4: Giá trị nội suy table5: Giá trị dự báo table6: Mờ hóa biến đổi chuỗi dự báo accuracy: Thông tin thước đo độ xác mơ hình dự báo Phân tích chuỗi thời gian với hỗ trợ package AnalyzeTS 1.10 Hàm PrintAIC Chỉ số AIC tiêu chuẩn thông tin thông dụng việc chọn mơ hình tối ưu Hàm PrintAIC( ) hỗ trợ tính tốn in hình số AIC mơ hình dự tuyển, từ chọn mơ hình tối ưu Hiện hàm thực tính tốn với mơ hình thuộc lớp ‘Arima’, ‘Arimax’ ‘garch’ PrintAIC(DataTimeSeries, order = c(p, d = NULL, q = NULL), seas = list(order = c(P = NULL, D = NULL, Q = NULL), frequency = NULL), type = NULL,xreg=NULL) DataTimeSeries: Chuỗi quan sát order: Tùy thuộc vào giá trị tham số ‘type’ mà order có ý nghĩa sau: + Nếu type="ARMA" (ARMAX) ‘order’ vector chứa số nguyên dương, bậc mô hình ARMA (ARMAX) + Nếu type="ARIMA" (ARIMAX) ‘order’ vector chứa số nguyên dương, bậc mơ hình ARIMA (ARIMAX) + Nếu type="SARIMA" (SARIMAX) ‘order’ vector chứa số nguyên dương, bậc mơ hình ARIMA (ARIMAX) cho thành phần khơng mùa chuỗi + Nếu type="ARCH" ‘order’ số ngun dương, bậc mơ hình ARCH + Nếu type="GARCH" ‘order’ vector chứa số nguyên dương, bậc mơ hình GARCH seas: Một danh sách chứa thành phần, ‘order’ ‘frequency’ Thành phần ‘order’ vector chứa số nguyên dương, bậc mơ hình ARIMA (ARIMAX) cho thành phần mùa chuỗi Thành phần ‘frequency’ frequency chuỗi quan sát type: Mơ hình cần tính AIC xreg: Một vector ma trận biến covariate có chiều dài với chuỗi quan sát Kết trả hàm danh sách gồm hai thành phần: Thành phần mohinh: Cho biết tất mơ hình dự tuyển, số AIC xếp loại tương ứng mơ hình Thành phần best: Cho biết mơ hình tối ưu mơ hình dự tuyển số AIC 1.11 Hàm CMA Hàm CMA( ) làm trơn chuỗi thời gian theo phương pháp trượt trung tâm CMA(x, n = 5) x: Chuỗi quan sát n: Giá trị khoảng trượt Kết trả hàm chuỗi làm trơn theo phương pháp trượt trung tâm Phân tích chuỗi thời gian với hỗ trợ package AnalyzeTS 1.12 Hàm SES Hàm SES( ) làm trơn chuỗi thời gian theo phương pháp trượt mũ đơn SES(ts, alpha = 0.5, s0 = NULL) ts: Chuỗi quan sát alpha: Tham số làm trơn, < alpha < (mặc định alpha=0.5) s0: Ước tính ban đầu giá trị s0 Kết trả hàm chuỗi làm trơn theo phương pháp trượt mũ Bài toán doanh thu quán cà phê 2.1 Nguồn số liệu Bộ số liệu lấy từ Café Data Concetta A DePaolo David F Robinson Indiana State University Journal of Statistics Education Volume 19, Number (2011), www.amstat.org/publications/jse/v19n1/depaolo.pdf Bộ số liệu gốc có nhiều cột, chúng tơi sử dụng cột chúng, số liệu cụ thể cho bảng sau date 19/01/2010 20/01/2010 21/01/2010 22/01/2010 25/01/2010 26/01/2010 27/01/2010 28/01/2010 29/01/2010 01/02/2010 02/02/2010 03/02/2010 04/02/2010 05/02/2010 08/02/2010 09/02/2010 10/02/2010 11/02/2010 12/02/2010 month Jan Jan Jan Jan Jan Jan Jan Jan Jan Feb Feb Feb Feb Feb Feb Feb Feb Feb Feb day.of.week Tue Wed Thu Fri Mon Tue Wed Thu Fri Mon Tue Wed Thu Fri Mon Tue Wed Thu Fri 10 sales temperature 199.95 36 195.74 34 102.68 39 162.88 40 101.76 36 186.94 26 120.18 34 228.78 33 88.02 20 119.57 37 172.31 38 137.65 33 197.56 39 70 35 97 31 181.43 29 125.57 26 180.63 28 75.87 30