You are on page 1of 13

DỰ BÁO DỮ LIỆU CHUỖI THỜI GIAN VỚI ARIMA

Giới thiệu về chuỗi thời gian:

Dự báo chuỗi thời gian là một lớp mô hình quan trọng trong thống kê, kinh tế
lượng và machine learning. Sở dĩ chúng ta gọi lớp mô hình này là chuỗi thời
gian (time series) là vì mô hình được áp dụng trên các chuỗi đặc thù có yếu tố
thời gian. Một mô hình chuỗi thời gian thường dự báo dựa trên giả định rằng
các quy luật trong quá khứ sẽ lặp lại ở tương lai. Do đó xây dựng mô hình
chuỗi thời gian là chúng ta đang mô hình hóa mối quan hệ trong quá khứ giữa
biến độc lập (biến đầu vào) và biến phụ thuộc (biến mục tiêu). Dựa vào mối
quan hệ này để dự đoán giá trị trong tương lai của biến phụ thuộc.
Do là dữ liệu chịu ảnh hưởng bởi tính chất thời gian nên chuỗi thời gian thường
xuất hiện những quy luật đặc trưng như : yếu tố chu kỳ, mùa vụ và yếu tố xu
hướng. Đây là những đặc trưng thường thấy và xuất hiện ở hầu hết các chuỗi thời
gian.
 Yếu tố chu kỳ, mùa vụ là những đặc tính lặp lại theo chu kỳ. Ví dụ như
nhiệt độ trung bình các tháng trong năm sẽ chịu ảnh hưởng bởi các mùa
xuân, hạ, thu, đông. Hay xuất nhập khẩu của một quốc gia thường có chu kỳ
theo các quý.
Hình 1: Đồ thị về chuỗi nhiệt độ trung bình theo tháng thể hiện yếu tố mùa
vụ. 
 Yếu tố xu hướng (trend) thể hiện đà tăng hoặc giảm của chuỗi trong
tương lai. Chẳng hạn như lạm phát là xu hướng chung của các nền kinh tế,
do đó giá cả trung bình của giỏ hàng hóa cơ sở hay còn gọi là chỉ số CPI
luôn có xu hướng tăng và xu hướng tăng này đại diện cho sự mất giá của
đồng tiền.
Hình 2: Đồ thị về yếu tố xu hướng trong chuỗi thời gian của chuỗi giá.
Các dự báo chuỗi thời gian có tính ứng dụng cao và được sử dụng rất nhiều lĩnh
vực như tài chính ngân hàng, chứng khoán, bảo hiểm, thương mại điện tử,
marketing, quản lý chính sách. Bên dưới là một số ứng dụng của dự báo chuỗi
thời gian:
 Dự báo nhu cầu thị trường để lập kế hoạch sản xuất kinh doanh cho
hãng.
 Dự báo lợi suất tài sản tài chính, tỷ giá, giá cả hàng hóa phái sinh để
thực hiện trading hiệu quả trong market risk.
 Dự báo giá chứng khoán, các chuỗi lợi suất danh mục để quản trị danh
mục đầu tư.
 Dự báo giá bitcoin, giá dầu mỏ, giá gas,…
 Dự báo nhiệt độ, lượng mưa để lập kế hoạch sản xuất nông, lâm, ngư
nghiệp.
 Dự báo tác động của các nhân tố vĩ mô như lãi suất, cung tiền, đầu tư
trực tiếp nước ngoài, chi tiêu chính phủ, lạm phát,… tác động lên tăng
trưởng GDP để điều hành nền kinh tế.
Vai trò của chuỗi thời gian rất quan trọng đối với nền kinh tế và hoạt động của
doanh nghiệp nên trong machine learning và thống kê có những ngành học nghiên
cứu chuyên sâu về chuỗi thời gian như kinh tế lượng, định giá tài sản tài chính.
Khác với các mô hình dự báo thông thường trong machine learning, các mô hình
trong dự báo chuỗi thời gian trong kinh tế lượng có những đặc trưng rất riêng. Đòi
hỏi phải tuân thủ nghiêm ngặt các điều kiện về chuỗi dừng, nhiễu trắng và tự tương
quan. Có rất nhiều lớp mô hình chuỗi thời gian khác nhau và mỗi một lớp mô hình
sẽ có một tiêu chuẩn áp dụng cụ thể. Chúng ta có thể liệt kê một số mô hình phổ
biến:
 Mô hình ARIMA
 Mô hình SARIMA
 Mô hình ARIMAX
 Mô hình GARCH

Ở đây, chúng ta sẽ tập trung chủ yếu vào thành phần ARIMA, được sử dụng để
phù hợp với dữ liệu chuỗi thời gian để hiểu rõ hơn và dự báo các điểm trong tương
lai trong chuỗi thời gian. Mô hình Arima là một loại mô hình thường được sử dụng
trong kinh tế lượng. Có thể hiểu, Arima là một mô hình dùng để dự đoán và
khai thác dữ liệu trong ngành tài chính và chứng khoán. Đây là một phương
pháp nghiên cứu độc lập thông qua dự đoán theo chuỗi thời gian. Sau đó, các
nhà nghiên cứu sẽ sử dụng các thuật toán dự đoán độ trễ để đưa ra một mô hình
phù hợp.

Có ba số nguyên riêng biệt ( p, d, q ) được sử dụng để tham số hóa mô hình


ARIMA. Do đó, các mô hình ARIMA được ký hiệu với ký hiệu ARIMA(p, d, q).
Ba thông số này kết hợp với nhau tính theo mùa, xu hướng và nhiễu trong tập
dữ liệu:

+ p là phần tự động hồi quy của mô hình. Nó cho phép ta kết hợp ảnh hưởng
của các giá trị trong quá khứ vào mô hình của ta. Về mặt trực quan, điều này
tương tự như nói rằng trời có khả năng sẽ ấm vào ngày mai nếu trời ấm trong 3
ngày qua.

+ d là phần tích hợp của mô hình. Điều này bao gồm các điều khoản trong mô
hình kết hợp số lượng chênh lệch (tức là số điểm thời gian trong quá khứ cần trừ
khỏi giá trị hiện tại) để áp dụng cho chuỗi thời gian. Về mặt trực giác, điều này
tương tự như việc nói rằng có thể sẽ có cùng nhiệt độ vào ngày mai nếu sự khác
biệt về nhiệt độ trong ba ngày qua là rất nhỏ.

+ q là phần trung bình động của mô hình. Điều này cho phép ta đặt lỗi của mô
hình của ta dưới dạng kết hợp tuyến tính của các giá trị lỗi được quan sát tại
các thời điểm trước đó trong quá khứ.

Khi xử lý các hiệu ứng theo mùa, ta sử dụng ARIMA theo mùa , được ký hiệu là
ARIMA(p,d,q)(P,D,Q)s . Ở đây, (p, d, q) là các tham số không theo mùa được mô
tả ở trên, trong khi (P, D, Q) theo cùng một định nghĩa nhưng được áp dụng cho
thành phần theo mùa của chuỗi thời gian. Thuật ngữ s là chu kỳ của chuỗi thời gian
( 4 cho khoảng thời gian hàng quý, 12 cho khoảng thời gian hàng năm, v.v.).
(CHUYỂN TAB QUA COLAB)

Dữ liệu bán dầu gội đầu:

Dữ liệu mô tả số lượng bán dầu gội đầu hàng tháng trong thời gian 3 năm.

Các đơn vị là số lượng bán hàng và có 36 quan sát. Dữ liệu gốc được lấy nguồn từ
Makridakis, Wheelwright, và Hyndman (1998)

Điều đầu tiên chúng ta cần làm là vẽ biểu đồ của chuỗi thời gian và xem xét mô
hình của nó
Như đã nêu trên, chúng ta thường dùng ARIMA cho chuỗi thời gian

Dưới đây là ví dụ việc chạy “Dữ liệu bán dầu gội” với Pandas bằng hàm tùy chỉnh
để phân tích trường ngày – giờ. Dữ liệu được tạo cơ sở dựa trên một năm tùy ý,
trong trường hợp này là năm 1900
Chạy ví dụ cho in ra 5 dòng đầu tiên của dữ liệu

Dữ liệu cũng được vẽ dưới dạng 1 chuỗi thời gian với tháng được thể hiện trên trục
x và số lượng bán hàng thể hiện trên trục y

Chúng ta có thể thấy rằng Dữ liệu bán dầu gội đầu có một xu hướng rõ ràng

Điều này biểu thị chuỗi dừng thời gian và sẽ yêu cầu tham số d để làm nó không
dừng, hoặc ít nhất là sai lệch 1 bậc

Quan sát nhanh ở phần autocorrelation plot của chuỗi thời gian. Phần này cũng
được tích hợp sẵn cho Pandas. Ví dụ dưới đây vẽ biểu đồ tự tương quan cho một
lượng lớn độ trễ trong chuỗi thời gian

Chạy ví dụ, chúng ta có thể thấy mối tương quan tỉ lệ thuận với 10 đến 12 độ trễ
đầu tiên, có lẽ có ý nghĩa cho 5 độ trễ đầu tiên
Điểm bắt đầu tốt cho tham số AR của mô hình có thể là 5

ARIMA với Python


Thư viện mô hình thống kê cung cấp khả năng phù hợp với mô hình ARIMA.
Một mô hình ARIMA có thể được tạo nên bằng cách sử dụng mô hình thống kê
theo những bước sau:
1- Xác định mô hình bằng cách gọi ARIMA () và chuyển các tham số p, d và q
2- Mô hình được chuẩn bị trên dữ liệu đào tạo bằng cách gọi hàm fit ().
3- Dự đoán có thể được thực hiện bằng cách gọi hàm dự đoán () và chỉ định chỉ số
của thời gian hoặc thời điểm được dự đoán.
Ví dụ: Chúng ta sẽ điều chỉnh mô hình ARIMA vào toàn bộ tập dữ liệu “Bán dầu
gội” và xem xét các lỗi dư.
Đầu tiên, chúng ta điều chỉnh mô hình ARIMA( 5,1,0). Điều này đặt giá trị độ trễ
thành 5 cho quá trình tự động hồi phục, sử dụng thứ tự chênh lệch là 1 để làm cho
chuỗi thời gian đứng yên và sử dụng mô hình trung bình động là 0.
Chạy ví dụ sẽ in ra một bản tóm tắt về mô hình phù hợp. Điều này tóm tắt các giá
trị hệ số được sử dụng cũng như kỹ năng phù hợp với các quan sát trong mẫu.

Đầu tiên, chúng ta nhận được một biểu đồ đường của các lỗi còn lại, cho thấy rằng
có thể vẫn còn một số thông tin xu hướng không được mô hình nắm bắt.
Tiếp theo, chúng ta nhận được một biểu đồ mật độ của các giá trị lỗi còn lại, cho
thấy các lỗi là Gaussian, nhưng có thể không tập trung vào số 0.

Sự phân bố của các lỗi còn lại được hiển thị. Kết quả cho thấy rằng thực sự có sự
sai lệch trong dự đoán (giá trị trung bình khác 0 trong phần còn lại).
Lưu ý rằng mặc dù ở trên, chúng ta đã sử dụng toàn bộ tập dữ liệu để phân tích
chuỗi thời gian, nhưng lý tưởng nhất là chúng ta sẽ thực hiện phân tích này chỉ trên
tập dữ liệu đào tạo khi phát triển mô hình dự đoán.

Tiếp theo, hãy xem cách chúng ta có thể sử dụng mô hình ARIMA để đưa ra dự
báo.

Mô hình Rolling Forecast ARIMA


Mô hình ARIMA có thể được sử dụng để dự báo các bước thời gian trong tương
lai.

Chúng ta có thể sử dụng hàm dự đoán () trên đối tượng ARIMAResults để đưa ra
dự đoán. Nó chấp nhận chỉ mục của các bước thời gian để đưa ra dự đoán làm đối
số. Các chỉ mục này có liên quan đến thời điểm bắt đầu của tập dữ liệu đào tạo
được sử dụng để đưa ra các dự đoán.

Nếu chúng ta sử dụng 100 quan sát trong tập dữ liệu đào tạo để phù hợp với mô
hình, thì chỉ số của bước thời gian tiếp theo để đưa ra dự đoán sẽ được chỉ định cho
hàm dự đoán là start = 101, end = 101. Điều này sẽ trả về một mảng có một phần
tử chứa dự đoán.

Chúng ta cũng muốn các giá trị được dự báo ở trong tỷ lệ ban đầu, trong trường
hợp chúng ta thực hiện bất kỳ sự khác biệt nào (d> 0 khi định cấu hình mô hình).
Điều này có thể được chỉ định bằng cách đặt đối số typ thành giá trị 'levels': typ =
'levels'.

Ngoài ra, chúng ta có thể tránh tất cả các thông số kỹ thuật này bằng cách sử dụng
hàm dự báo (), hàm này thực hiện dự báo một bước bằng cách sử dụng mô hình.
Chúng ta có thể chia tập dữ liệu đào tạo thành các tập đào tạo và thử nghiệm, sử
dụng tập đào tạo để phù hợp với mô hình và tạo dự đoán cho từng phần tử trên tập
thử nghiệm.

Cần có một dự báo luân phiên dựa trên sự phụ thuộc vào các quan sát trong các
bước thời gian trước đó để tạo ra sự khác biệt và mô hình AR. Một cách đơn giản
để thực hiện dự báo luân phiên này là tạo lại mô hình ARIMA sau mỗi lần nhận
được quan sát mới.

Chúng ta theo dõi thủ công tất cả các quan sát trong một danh sách được gọi là lịch
sử được kết hợp với dữ liệu đào tạo và các quan sát mới được thêm vào mỗi lần lặp
lại.

Tổng hợp tất cả những điều này lại với nhau, dưới đây là ví dụ về dự báo luân
phiên với mô hình ARIMA bằng Python.

Chạy ví dụ sẽ in ra dự đoán và giá trị mong đợi mỗi lần lặp.

Chúng ta cũng có thể tính toán điểm lỗi bình phương trung bình gốc cuối cùng
(RMSE) cho các dự đoán, cung cấp điểm so sánh cho các cấu hình ARIMA khác.
Một biểu đồ đường được tạo hiển thị các giá trị dự kiến (màu xanh lam) so với các
dự đoán dự báo luân phiên (màu đỏ). Chúng ta có thể thấy các giá trị hiển thị một
số xu hướng và nằm trong thang đo chính xác.

Mô hình có thể sử dụng điều chỉnh thêm các tham số p, d và thậm chí có thể là q.

You might also like