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 LỜI TỰA Chuỗi thời gian là một chủ đề khá rộng và có ứng dụng rất nhiều trong thực tế, đặc biệt là chuỗi thời gian mờ. Trong R có không ít package hỗ trợ phân tích chuỗi thời gian. Tuy nhiên còn 2 vấn đề (theo tìm hiểu của chúng tôi) mà các package ấy chưa hỗ trợ là tìm một mô hình tối ưu từ rất nhiều mô hình dự tuyển thuộc lớp mô hình “ARIMA”, “ARIMAX” và “GARCH”, thứ hai là các mô hình chuỗi thời gian mờ. Package AnalyzeTS được nhóm chúng tôi xây dựng trong quá trình thực hiện đề tài luận văn tốt nghiệp của mình.
Công dụng chính của package là giải quyết 2 vấn đề nêu trên. Package AnalyzeTS được xây dựng bởi 5 thành viên: 1. Trần Thị Ngọc Hân tranthingochan01011994@gmail. Đoàn Hải Nghi Hainghi1426262609121094@gmail.
Mai Thị Hồng Diễm maidiemks@gmail. Nguyễn Thị Diễm My myntdhg@gmail. Hồng Việt Minh hongvietminh@gmail.com và được viết hoàn tất vào ngày 29/9/2015 (phiên bản 1. Cho đến nay, sau 7 lần sửa đổi và bổ xung Package AnalyzeTS (phiên bản 1.7) có 12 hàm hỗ trợ phân tích chuỗi thời gian.
Trong quyển sách này sử dụng phiên bản 1.7 của Package AnalyzeTS. Nhằm giới thiệu các chức năng cũng như sự hỗ trợ của package AnalyzeTS trong phân tích chuỗi thời gian, chúng tôi biên soạn quyển sách nhỏ này xin giới thiệu đến bạn đọc. Đây là lần đầu tiên xuất bản, nên quyển sách không thể tránh khỏi những sai sót. Rất mong nhận được sự góp ý và phê bình của bạn đọc.
Mọi sự góp ý và phê bình xin bạn đọc gửi về địa chỉ mail: hongvietminh@gmail.com hoặc myntdhg@gmail. Cần thơ, ngày 20 tháng 12 năm 2015 Hồng Việt Minh Nguyễn Thị Diễm My 2 Phân tích chuỗi thời gian với sự hỗ trợ của package AnalyzeTS MỤC LỤC LỜI TỰA. 3 PHẦN NỘI DUNG. Cấu trúc các hàm.
Bài toán về doanh thu quán cà phê. Nguồn số liệu. Thống kê mô tả. Thống kê mô tả cho month và day.
Thống kê mô tả cho sales. Mô hình Box-Jenkins. Mô hình Box-Jenkins với số liệu gốc. Mô hình Box-Jenkins với biến giả.
Mô hình Box-Jenkins với số liệu làm trơn. Mô hình Box-Jenkins với số liệu mờ hóa. Mô hình chuỗi thời gian mờ Abbasov-Mamedova. Tổng hợp và so sánh các mô hình dự báo.
Bài toán tỷ xuất sinh lợi giá cổ phiếu. Nguồn số liệu. Mô hình ARMA–GARCH. Mô hình ARMAX–GARCH.
59 TÀI LIỆU THAM KHẢO. 62 3 Phân tích chuỗi thời gian với sự hỗ trợ của package AnalyzeTS PHẦN NỘI DUNG 1. Cấu trúc các hàm 1.res Nếu ta ký hiệu Yt là giá trị thực tế và Ft là giá trị tính được trên mô hình dự báo ở cùng thời đoạn thì ta có độ chênh lệch là et = Yt - Ft. Dựa trên các sai số này chúng ta tính được các đại lượng đo lường sau : ME, MAE, MPE, MAPE, MSE, RMSE, U.
Công thức Tên gọi 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 2 MSE e t Sai số bình phương trung bình (Mean Square Error) n e 2 t Căn bậc hai của sai số bình phương trung bình (Root of RMSE n Mean Square Error) et Y Sai số phần trăm trung bình (Mean Percent Error) t MPE .100% n et Y Sai số phần trăm tuyệt đối trung bình (Mean Absolute t MAPE .100% Percent Error) n RMSE U Chỉ số U RMSENaive Để tính toán 7 đại lượng đo lường này ta sử dụng hàm av. Ta cũng có thể dùng nó để tính cùng lúc cho nhiều mô hình dự báo và so sánh để tìm một mô hình tốt nhất.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 là 3). Kết quả trả về là 7 đại lượng đo lường (nếu chỉ có một mô hình) hoặc một ma trận (nếu có từ 2 mô hình trở lên) mà ở đó các cột là giá trị của 7 đại lượng đo lường cho từng mô hình, cột cuối cùng cho biết tên mô hình có giá trị đo lường nhỏ nhất. 4 Phân tích chuỗi thời gian với sự hỗ trợ của package AnalyzeTS Các chuỗi đầu vào phải được tổ hợp dưới dạng data frame.
Khi muốn tính toán và so sánh cùng lúc nhiều mô hình, chúng ta chỉ cần nhóm các giá trị dự báo (hoặc chuỗi sai số) lại thành một data frame. Khi ấy R sẽ tính toán và so sánh các mô hình với nhau. Chúng ta chỉ đưa vào hàm 2 tham số, hoặc Y và F hoặc Y và E. Nếu chúng ta không đưa Y (chuỗi số liệu gốc) vào, hoặc đưa cùng lúc cả F và E vào.
R sẽ không nhận dạng được và sẽ không thể thực hiện tính toán.ts Hàm tính một số chỉ tiêu cơ bản của dãy số thời gian, tuy nhiên trong thực tế rất ít được sử dụng nên không trình bày ở đây. Bạn đọc có thể xem thông tin về hàm thông qua ‘help’ của R. Hàm Descriptives Có 11 đại lượng thống kê miêu tả thường dùng cho một biến liên tục được trình bày tóm tắt trong bảng sau Ký hiệu Tên gọi Ký hiệu Tên gọi N Kích thước mẫu 3 rd QU Giá trị phân vị 75% NaN Giá trị NA Max Giá trị lớn nhất Min Giá trị nhỏ nhất VAR Phương sai 1 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 toán và so sánh (khi có nhiều biến liên tục trong một data frame) ta dùng hàm Descriptives . Ta cũng có thể vẽ đồ thị so sánh giữa các biến với nhau, hoặc chỉ cho hiển thị một 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 hoặc một data frame chứa các biến liên tục. plot: có 2 dạng + plot = TRUE để vẽ đồ thị miêu tả khi x là chuỗi thời gian một chiều. + plot = list(a1, a2, …) ( với a1, a2, … là những giá trị thống kê mô tả như Mean, Max, …) để vẽ biểu đồ cột so sánh giữa các biến trong một data frame. r: Số thập phân sau dấu phẩy (mặc định là 2).
answer: Form của kết quả trả về. Ta cho answer=1 (mặc định) hoặc answer=2. statistic: Một danh sách các giá trị thống kê miêu tả mà người dùng muốn R in ra màn hình (mặc định là ALL, tức tất cả 11 giá trị). Kết quả trả về là các giá trị thống kê mô tả.
5 Phân tích chuỗi thời gian với sự hỗ trợ của package AnalyzeTS 1. Hàm Dgroup Đôi khi phân tích số liệu thống kê, chúng ta cần thống kê giá trị quan sát theo từng nhóm đối tượng khác nhau để so sánh. Sử dụng hàm Dgroup( ) để thực hiện phân tích này. Dgroup(x, follow = NULL, r = 2, answer = 1, statistic = "ALL") x: Một biến liên tục hoặc chuỗi thời gian.
follow: Một factor hoặc một danh sách có không quá 2 factor. r: Số thập phân sau dấu phẩy (mặc định là 2). answer: From của kết quả trả về. Ta cho answer=1 (mặc định) hoặc answer=2.
statistic: Một danh sách các giá trị thống kê miêu tả mà người dùng muốn R in ra màn hình (mặc định là ALL, tức tất cả 11 giá trị). Kết quả trả về là các giá trị thống kê mô tả.on Nếu chỉ vẽ một đồ thị đường đơn điệu lên cửa sổ đồ thị thì thật tẻ nhạt và khó có thể nhận xét nó. Ta thường vẽ lưới lên những biểu đồ đường để tiện cho việc nhận xét, hàm grid.on( ) có thể giúp ta việc này.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 giữa 2 điểm trên trục x. nh: Số đường lưới giữa 2 điểm trên trục y. lty: Type của đường lưới.
Tùy thuộc vào giá trị các tham số người dùng khai báo mà đường lưới sẽ xuất hiện lên biểu đồ. Hàm forecastGARCH Theo tìm hiểu, các phần mềm thống kê hiện không hỗ trợ dự báo cho mô hình ARMA-ARCH (và các mô hình tương tự như ARMA-GARCH, …), việc dự báo thường được tính toán bằng excel. Tuy nhiên cách tính ấy rất dễ sai sót, do đó hàm forecastGARCH( ) được xây dựng nhầm mục đích tránh khỏi những sai sót đáng tiếc này. Cấu trúc hàm được cho như bên dưới forecastGARCH(fitARMA,fitGARCH,r=3,trace=FALSE,newxreg=NULL) fitARMA: Một đối tượng của lớp ‘Arima’.
fitGARCH: Một đối tượng của lớp ‘garch’. r: Số thập phân sau dấu phẩy (mặc định là 3). trace: Hiển thị kết quả tính toán đầy đủ hay chỉ hiển thị kết quả dự báo? Cho trace=TRUE để hiện thị kết quả tính toán đầy đủ. 6 Phân tích chuỗi thời gian với sự hỗ trợ của package AnalyzeTS newxreg: Một giá trị của các biến covariate ở ngày tiếp theo, dành cho các mô hình ARMAX-GARCH.
Kết quả trả về là một danh sách gồm 3 thành phần sau: ARCH: Hệ số mô hình GARCH. ARMA: Hệ số mô hình ARMA. forecast: Kết quả dự báo gồm 5 cột. + Point:Thời điểm dự báo + res: Phần dư dự báo.
+ res^2: Bình phương của res.forecast: Giá trị trung bìnhdự báo.forecast: Giá trị phương sai dự báo. Hàm Frequencies Tương tự hàm Descriptives( ) ở trên, hàm Frequencies( ) tính toán các giá trị thống kê mô tả cho một biến rời rạc hoặc các biến rời rạc trong một data frame. Frequencies(x, plot = FALSE, r = 2, answer = 1) x: Một biến rời rạc hoặc một data frame chứa các 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 là 3). answer: Form của kết quả trả về. Ta cho answer=1 (mặc định) hoặc answer=2. Kết quả trả về là các giá trị thống kê mô tả.ts1 Có 4 mô hình làm mờ chuỗi thời gian thông dụng là Chen, Singh, Heuristic và Chen-Hsu.ts1( ) có thể làm mờ một chuỗi thời gian với 4 mô hình này.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) thì hàm sẽ chia các tập mờ theo tham số ‘divide’. trace: Hiển thị kết quả tính toán đầy đủ hay chỉ hiển thị kết quả dự báo?