Bài toán chuỗi thời gian (time series) là một lĩnh vực trong phân tích dữ liệu, nghiên cứu về việc phân tích và dự đoán các dữ liệu có sự phụ thuộc thời gian. Nó đặc biệt hữu ích trong việc phân tích dữ liệu lịch sử, dự đoán xu hướng và dự báo tương lai dựa trên dữ liệu quá khứ. Một chuỗi thời gian được định nghĩa là một dãy các giá trị được ghi lại trong các khoảng thời gian liên tiếp. Ví dụ, ví dụ một chuỗi thời gian có thể là các giá trị doanh thu hàng ngày của một công ty trong vòng một tháng. Các ví dụ khác có thể là các chuỗi thời gian của chỉ số tài chính, nhiệt độ hàng ngày hoặc các dữ liệu sinh học. Cài đặt và phân tích bài toán chuỗi thời gian có thể được thực hiện bằng cách sử dụng các thư viện và công cụ phân tích dữ liệu như sau: Python và các thư viện liên quan: Python cung cấp nhiều thư viện mạnh mẽ để xử lý và phân tích chuỗi thời gian như NumPy, Pandas và Matplotlib. NumPy cung cấp các hàm và cấu trúc dữ liệu để thao tác dữ liệu số học hiệu quả. Pandas cung cấp đối tượng DataFrame để thao tác dữ liệu chuỗi thời gian và thực hiện các phân tích thống kê. Matplotlib là một thư viện trực quan hóa dữ liệu, cho phép bạn tạo biểu đồ và biểu diễn các kết quả phân tích của bạn. Thư viện phân tích chuỗi thời gian: Có nhiều thư viện phân tích chuỗi thời gian mạnh mẽ như Statsmodels, Prophet và scikitlearn. Statsmodels cung cấp các phương pháp thống kê và mô hình hóa dữ liệu chuỗi thời gian. Prophet là một thư viện phân tích dự báo chuỗi thời gian phát triển bởi Facebook. Scikitlearn là một thư viện học máy phổ biến, cung cấp các thuật toán và công cụ để xây dựng các mô hình dự đoán chuỗi thời gian. Các phương pháp phân tích chuỗi thời gian: Có nhiều phương pháp phân tích chuỗi thời gian phổ biến như hồi quy tuy
TỔNG QUAN VỀ CHUỖI THỜI GIAN
Chuỗi thời gian là gì?
Chuỗi thời gian là tập hợp các giá trị của một thực thể được quan sát theo thời gian, thường ở các khoảng cách đều nhau như hàng tháng, hàng năm, hàng tuần, hàng ngày, hàng giờ hoặc hàng phút.
Chuỗi thời gian có thể được minh họa qua nhiều ví dụ như giá xăng hàng tuần, sự biến đổi nhiệt độ theo năm, số lượng hành khách đi tàu theo giờ và các ứng dụng liên quan đến thị trường chứng khoán.
Dưới đây là ví dụ về chuỗi thời gian sử dụng Cổ phiếu của Google
Hình 1 : Biểu đồ cổ phiếu của Google
Tại sao chúng ta quan tâm đến chuỗi thời gian?
Để dự đoán điều gì đó trong tương lai hoặc hiểu xu hướng theo thời gian,ta sẽ cần sử dụng đến phân tích chuỗi thời gian
Theo dõi doanh số bán hàng và dự đoán doanh số trong tương lai là rất quan trọng Bạn có thể phân tích doanh số theo thời gian để nhận diện xu hướng hoặc chu kỳ Mọi loại dữ liệu được theo dõi theo thời gian đều có thể áp dụng cho phân tích chuỗi thời gian.
Dưới đây là một ví dụ khác về chuỗi thời gian, theo dõi số lượng xe đạp hàng giờ.
Hình 2 : Biểu đồ theo dõi số lượng xe đạp
Các thành phần của chuỗi thời gian
Các giá trị quan sát được chia thành hai thành phần chính: Thành phần hệ thống và Thành phần ngẫu nhiên Các thành phần này bao gồm những dữ liệu không thể dự đoán Chúng ta sẽ phân tích chi tiết cả thành phần hệ thống và thành phần ngẫu nhiên qua một loạt định nghĩa dưới đây.
Thành phần hệ thống (S) – Dữ liệu có thể được dự báo Các thành phần hệ thống có thể được chia nhỏ thành 3 phần.
Cấp độ (Level) là giá trị trung bình của chuỗi thời gian, được xem là thành phần cơ bản nhất Mặc dù cấp độ có thể thay đổi theo thời gian, nhưng sự thay đổi này diễn ra chậm hơn so với các thành phần khác Thông thường, cấp độ được sử dụng làm đầu vào ban đầu cho các mô hình dự báo.
Hình 3 : Biểu đồ thể hiện cấp độ
Xu hướng (Trend) là sự thay đổi dài hạn trong chuỗi thời gian, cho thấy liệu chuỗi thời gian đó đang có xu hướng tăng hay giảm trong một khoảng thời gian dài.
Hình 4 : Biểu đồ thể hiện xu hướng
Tính thời vụ (S) đề cập đến những dao động có thể dự đoán được theo mùa hoặc không theo mùa trong các giá trị quan sát Dữ liệu được coi là có tính thời vụ khi có các biến thể xảy ra theo các khoảng thời gian đều đặn, chẳng hạn như hàng tuần hoặc hàng tháng, trong suốt một năm.
Giá máy chơi game Nintendo Switch và trò chơi thường giảm trong khoảng thời gian ba tháng, sau đó lại tăng trở lại sau một tuần Đây được xem là một yếu tố theo mùa trong thị trường game.
Hình 5 : Biểu đồ thể hiện tính mùa vụ
Thành phần ngẫu nhiên (R) trong chuỗi thời gian đại diện cho hành vi bất thường và sự bất thường trong dữ liệu, cũng như các biến thể không thể giải thích Đây là yếu tố không thể dự đoán, có thể ảnh hưởng đến quá trình phân tích và dự báo của chuỗi thời gian.
Hình 6 : Biểu đồ thể hiện thành phần ngẫu nhiên
Mục tiêu chính của chuỗi thời gian
Khi nhận được một chuỗi thời gian, mục tiêu của chúng ta là phân tích các thành phần của dữ liệu và thực hiện dự báo dựa trên thông tin có sẵn.
Phân tích (Decomposition) là quá trình tách chuỗi thời gian thành các thành phần cơ bản, giúp hiểu rõ cấu trúc và loại bỏ yếu tố phi tuyến gây biến động Quá trình này hỗ trợ xác định các yếu tố mùa vụ, xu hướng và dao động ngẫu nhiên trong chuỗi thời gian.
Doanh số bán hàng của chúng ta có thể chịu ảnh hưởng bởi các yếu tố theo mùa hoặc chu kỳ, và việc phân tách chuỗi thời gian sẽ giúp cải thiện doanh số vào những thời điểm cụ thể Phân tích này cho phép chúng ta nhận diện và hiểu rõ các yếu tố cũng như xu hướng trong dữ liệu, từ đó tác động đến sự tăng trưởng hoặc suy giảm doanh thu.
Dưới đây là bảng phân tích các thành phần trong kho của Google.
Hình 7 : Biểu đồ thể hiện giá của cổ phiếu Google theo thời gian
Hình 8 : Biểu đồ thể hiện xu hướng của giá trị cổ phiếu Google
Hình 10 : Các biểu đồ các nhiễu ngẫu nhiên của giá trị cổ phiếu Google
Dự báo là một mục tiêu quan trọng của chuỗi thời gian, nhằm dự đoán giá trị tương lai dựa trên các giá trị quá khứ và hiện tại của chuỗi.
Dự đoán thời điểm phần cứng hoặc thiết bị có thể gặp sự cố dựa trên dữ liệu lịch sử giúp các công ty thực hiện biện pháp chủ động, khắc phục sự cố trước khi nó xảy ra Điều này không chỉ tiết kiệm thời gian mà còn giảm chi phí cho cả công ty và khách hàng.
Dưới đây là một ví dụ về dự đoán cổ phiếu của Google dựa trên tính thời vụ,chu kỳ và xu hướng hiện tại của nó.
Hình 11 : Biểu đồ dự đoán giá trị cổ phiếu Google
Kỹ thuật dự báo chung
Dự báo là một kỹ năng quan trọng trong chuỗi thời gian, giúp đưa ra quyết định hợp lý và hiệu quả trong kinh doanh và các lĩnh vực khác Hiện nay, hai kỹ thuật dự báo phổ biến nhất được sử dụng là hồi quy và làm mịn.
Hồi quy (Regressions) : tìm một đường thẳng phù hợp nhất với dữ liệu Điều này còn được gọi là dự báo tĩnh.
Ví dụ: Bình phương nhỏ nhất (sử dụng hồi quy tuyến tính)
Hình 12 : Biểu đồ sử dụng phương pháp hồi quy
Khi nào nên dùng phương pháp hồi quy ?
Nên dùng phương pháp hồi quy trong dự báo chuỗi thời gian:
+ Khi chuỗi thời gian có xu hướng tuyến tính hoặc mối quan hệ tuyến tính giữa các biến độc lập và biến phụ thuộc là rõ ràng.
+ Khi muốn dự báo giá trị trung bình của chuỗi thời gian hoặc yếu tố khác liên quan tuyến tính đến chuỗi thời gian.
+ Khi có đủ dữ liệu cho phương pháp hồi quy hoạt động tốt.
Làm mịn (Smoothing) là quá trình xác định giá trị cho một quan sát dựa trên sự kết hợp của các quan sát xung quanh, còn được gọi là dự báo thích ứng Phương pháp ARIMA áp dụng các kỹ thuật làm mịn, mang lại những công cụ bổ sung mà hồi quy đơn giản không có, từ đó làm cho mô hình hóa trở nên mạnh mẽ hơn Hiện nay, các kỹ thuật làm mịn ngày càng được sử dụng phổ biến, mặc dù hồi quy vẫn hữu ích để có cái nhìn tổng quát về xu hướng dữ liệu.
Ví dụ: đường trung bình động, mô hình ARIMA
Hình 13 : Biểu đồ sử dụng mô hình ARIMA
Khi nào nên dùng phương pháp làm mịn (smoothing) ?
Nên dùng phương pháp làm mịn (smoothing) trong dự báo chuỗi thời gian:
+ Khi chuỗi thời gian có nhiều nhiễu, biến động không đồng đều và khó xác định xu hướng.
Khi tạo ra một chuỗi thời gian mới, việc làm mịn giá trị giúp giảm độ phức tạp và tăng tính dễ hiểu cho chuỗi thời gian gốc.
+ Khi muốn giảm thiểu tác động của các giá trị ngoại lai (outliers) trong chuỗi thời gian.
+ Khi muốn tạo ra một chuỗi dự báo mượt mà, giúp phân tích và hiểu rõ xu hướng và biến động của chuỗi thời gian
MÔ HÌNH CHUỖI THỜI GIAN ARIMA
Giới thiệu và tổng quan về ARIMA
Mô hình ARIMA là một công cụ thống kê quan trọng trong việc phân tích chuỗi dữ liệu thời gian, cho phép dự đoán các giá trị tương lai dựa trên các dữ liệu lịch sử.
Mô hình Box-Jenkins, được giới thiệu vào năm 1970, đã trở thành công cụ quan trọng trong nhiều lĩnh vực như kinh tế, tài chính, y học, địa chất học và vật lý.
Các thành phần của mô hình ARIMA
Mô hình ARIMA bao gồm ba thông số quan trọng: p, d và q, với ba thành phần chính là tự hồi quy (AR), trung bình động (MA) và sai phân Tham số p đại diện cho số lượng lag của biến phụ thuộc trong phần AR, cho thấy mức độ phụ thuộc của giá trị hiện tại vào giá trị trong quá khứ Tham số d là số lần sai phân được thực hiện để tạo ra chuỗi dữ liệu ổn định hơn, giúp loại bỏ xu hướng và yếu tố không ổn định, biến đổi chuỗi thời gian ban đầu thành một chuỗi tuyến tính và ổn định Cuối cùng, tham số q thể hiện lượng lag của biến ngẫu nhiên trong phần MA, cho biết mức độ ảnh hưởng của các giá trị ngẫu nhiên trước đó đến giá trị hiện tại.
Ví dụ, mô hình ARIMA(1,1,1) có nghĩa là mô hình tự hồi quy với độ trễ (p=1),một lần khác (d=1) và trung bình động với độ trễ (q= 1).
AR trong ARIMA là viết tắt của "autoregressive" (tự hồi quy) Mô hình
AR sử dụng dữ liệu quá khứ để dự đoán giá trị hiện tại, yêu cầu chuỗi thời gian phải có tính tự tương quan, tức là các giá trị liền kề trong chuỗi phải có mối liên hệ với nhau.
Ví dụ, giá cổ phiếu Amazon của ngày hôm nay có thể phụ thuộc vào giá của ngày hôm qua và các ngày trước đó.
Thành phần này được ký hiệu bằng AR(p), trong đó p là số lượng giá trị trước đó được sử dụng để dự báo giá trị hiện tại.
Ví dụ : giá cổ phiếu của AMAZON
Hình 14 : Biểu đồ mô hình Tự hồi quy
Mô hình AR(p) là một dạng tổng quát của mô hình ARIMA, với p đại diện cho số lượng độ trễ của biến phụ thuộc (y) được giải thích bởi biến độc lập (x) Công thức của mô hình AR(p) được sử dụng để phân tích và dự đoán các chuỗi thời gian.
Trong mô hình này, \$y(t)\$ đại diện cho giá trị của biến phụ thuộc tại thời điểm \$t\$, trong khi \$c\$ là hệ số chặn Hệ số \$\phi_i\$ thể hiện ảnh hưởng của biến phụ thuộc tại các thời điểm trước đó, cụ thể là tại thời điểm \$t-i\$ (các độ trễ \$t-i\$) Cuối cùng, \$\epsilon(t)\$ là đại lượng sai số tại thời điểm \$t\$.
Giả sử bạn muốn dự đoán giá cổ phiếu của một công ty, bạn đã thu thập dữ liệu giá cổ phiếu hàng ngày trong 30 ngày qua và quyết định áp dụng mô hình AR(1) để dự đoán giá cổ phiếu ngày mai Để thực hiện điều này, bạn cần tính toán giá trung bình của cổ phiếu trong 1 ngày trước đó (AR(1)) bằng cách sử dụng công thức phù hợp.
AR(1) = a0 + a1 * Giá cổ phiếu hôm qua
Mô hình AR(1) sử dụng các hệ số a0 và a1 để dự đoán giá cổ phiếu Giá cổ phiếu hôm qua được xem là giá trị tham chiếu để tính toán giá cổ phiếu của công ty vào ngày mai dựa trên giá trị AR(1) đã tính toán.
Các tham số của mô hình AR được xác định thông qua hồi quy tuyến tính, nhưng trong trường hợp chuỗi thời gian phức tạp, mô hình ARIMA có thể là lựa chọn phù hợp Cần cân nhắc giữa độ phức tạp của mô hình và khả năng dự đoán; một mô hình AR quá đơn giản có thể bỏ lỡ những biến động quan trọng, trong khi mô hình quá phức tạp có thể dẫn đến hiện tượng quá khớp và giảm khả năng dự đoán Công thức mô hình AR được biểu diễn như sau: \$$y(t) = c + \sum(\phi_i * y(t-i)) + \epsilon(t)\$$
Một điểm quan trọng của mô hình AR(p) chỉ thích hợp cho các chuỗi dừng (stationary series).
Một số lưu ý về mô hình AR:
Giá trị của p trong mô hình AR(p) quyết định số lượng hệ số AR cần ước lượng Một giá trị p lớn hơn sẽ dẫn đến nhiều hệ số AR hơn, từ đó giúp mô hình phù hợp hơn với dữ liệu.
Mô hình AR là công cụ hữu ích cho việc phân tích chuỗi thời gian và dự đoán giá trị tương lai Tuy nhiên, nó chỉ phù hợp với những chuỗi thời gian có tính tự tương quan tuyến tính; nếu không, mô hình AR có thể không mang lại hiệu quả.
Mô hình AR có khả năng mở rộng để tích hợp các thành phần khác, bao gồm thành phần MA trong mô hình ARMA, thành phần tích phân (F), và thành phần mùa vụ trong mô hình SARIMA.
+ Các mô hình AR phải được đánh giá dựa trên độ chính xác của dự đoán và độ chính xác của ước lượng các tham số của mô hình
2.2 Trung bình động (moving average)
Thành phần MA trong mô hình ARIMA thể hiện sự phụ thuộc của giá trị hiện tại trong chuỗi thời gian vào các giá trị sai số trước đó Nó được sử dụng để dự đoán giá trị của chuỗi thời gian dựa trên giá trị trung bình của một số quan sát hiện tại.
Mô hình MA có thể dự đoán lượng mưa hôm nay dựa trên sai số của các dự báo trước đó Nếu có sự chênh lệch giữa dự báo và lượng mưa thực tế, sai số này sẽ được sử dụng để cải thiện dự đoán cho ngày hôm nay.
.Thành phần này được ký hiệu là MA(q), trong đó q là số lượng sai số quá khứ được sử dụng để dự báo giá trị hiện tại.
Ví dụ : giá cổ phiếu của AMAZON
Hình 15 : Biểu đồ mô hình Trung bình động Công thức của mô hình MA(q) :
Trong mô hình này, \$y(t)\$ đại diện cho giá trị của biến phụ thuộc tại thời điểm \$t\$, trong khi \$c\$ là hệ số chặn Hệ số \$\theta_j\$ thể hiện sai số tại thời điểm \$t-j\$ (lag \$t-j\$), và \$\epsilon(t)\$ là đại lượng sai số tại thời điểm \$t\$.
Giả sử bạn có dữ liệu doanh số bán hàng trong 12 tháng và muốn dự đoán doanh số tháng tiếp theo bằng mô hình MA(2) Đầu tiên, bạn cần tính toán giá trị trung bình trượt của doanh số bán hàng.
2 tháng trước đó (tức là MA(2)) bằng cách sử dụng công thức sau:
MA(2) = (Doanh số bán hàng tháng 11 + Doanh số bán hàng tháng 10) / 2 y(t) = c + Σ(θj * ɛ(t-j)) + ɛ(t)
Sau đó, bạn có thể sử dụng giá trị MA(2) này để dự đoán doanh số bán hàng trong tháng tiếp theo.
Mô hình MA có thể cũng cần phải xử lý dữ liệu nhiễu (noise) và các giá trị ngoại lai (outliers) tương tự như mô hình AR.
Việc xác định số lượng giá trị trung bình động trong mô hình MA là rất quan trọng Số lượng quá ít sẽ không đủ để mô hình hóa độ phức tạp của chuỗi thời gian, trong khi số lượng quá nhiều có thể dẫn đến hiện tượng overfitting, làm giảm khả năng dự đoán trên dữ liệu mới.
Một số lưu ý về mô hình MA:
Tính dừng và sự khác biệt
Tính dừng (stationarity) là đặc tính quan trọng của chuỗi thời gian, khi các đặc điểm của nó không thay đổi theo thời gian Cụ thể, một chuỗi thời gian có tính dừng sẽ có các thống kê mô tả như trung bình, phương sai và hệ số tương quan giữa các giá trị không thay đổi Điều này rất cần thiết trong mô hình hóa chuỗi thời gian, vì nếu chuỗi không có tính dừng, khả năng dự báo sẽ bị hạn chế.
Sự khác biệt (differencing) là phương pháp chuyển đổi chuỗi thời gian không có tính dừng thành chuỗi có tính dừng bằng cách tính hiệu số giữa giá trị tại một thời điểm và giá trị tại thời điểm trước đó với khoảng cách thời gian cố định (lag) Phương pháp này có thể được thực hiện nhiều lần để đạt được tính dừng.
Phương pháp sự khác biệt (differencing) thường được sử dụng để biến đổi chuỗi thời gian phi dừng thành chuỗi thời gian có tính dừng bằng cách lấy sự khác biệt giữa giá trị tại một thời điểm và giá trị tại một thời điểm trước đó với một khoảng cách thời gian cố định, được gọi là lag.
3.3 Các kỹ thuật kiểm tra tính dừng
3.3.1 Kwiatkowski-Phillips-Schmidt-Shin (KPSS)
Phương pháp Kwiatkowski-Phillips-Schmidt-Shin (KPSS) là một công cụ thống kê quan trọng để kiểm tra tính dừng của chuỗi thời gian KPSS được áp dụng phổ biến nhằm xác định xem chuỗi thời gian có dừng hay không, điều này đóng vai trò then chốt trong việc lựa chọn mô hình dự báo phù hợp.
Phương pháp KPSS, được đặt theo tên của Kwiatkowski, Phillips, Schmidt và Shin, là một công cụ quan trọng được giới thiệu trong bài báo năm 1992 để kiểm tra tính dừng của chuỗi thời gian Chuỗi thời gian có tính dừng có đặc điểm là giá trị trung bình và phương sai không thay đổi theo thời gian, không có xu hướng tăng hoặc giảm, không có biến động mạnh và không có chu kỳ.
Công thức kiểm tra KPSS:
T là số lượng quan sát trong chuỗi dữ liệu.
S^2 là phương sai của chuỗi dữ liệu. ρ(i) là hệ số tương quan tự động của chuỗi dữ liệu ở thời điểm i.
∑ là ký hiệu tổng của các giá trị trong dãy.
Các giả thiết được đưa ra trong phương pháp KPSS là:
- Giả thiết không tính dừng (null hypothesis) - chuỗi thời gian không có tính dừng.
- Giả thiết tính dừng (alternative hypothesis) - chuỗi thời gian có tính dừng.
Phương pháp KPSS sử dụng các thống kê kiểm định dựa trên sai số của mô hình dự báo tuyến tính và các tham số dự báo đơn giản để xác định tính dừng của chuỗi thời gian.
Nếu giá trị p trong kiểm định KPSS nhỏ hơn 0,05, chúng ta có thể bác bỏ giả thiết không tính dừng và chấp nhận giả thiết tính dừng Ngược lại, nếu giá trị p lớn hơn ngưỡng này, giả thiết không tính dừng không thể bị bác bỏ.
Phương pháp Dickey-Fuller là một công cụ kiểm định quan trọng để xác định tính dừng của chuỗi thời gian Được phát triển bởi hai nhà kinh tế David Dickey và Wayne Fuller vào năm 1979, phương pháp này đã trở thành một phần thiết yếu trong phân tích chuỗi thời gian.
Phương pháp kiểm định Dickey-Fuller tương tự như KPSS, nhưng tập trung vào việc kiểm tra tính dừng của chuỗi thời gian thông qua hệ số tự hồi quy và giá trị giới hạn phân phối Giả thiết chính của phương pháp này là chuỗi thời gian không có tính dừng.
Công thức kiểm tra ADF:
Trong đó: β là hệ số hồi quy tuyến tính của chuỗi dữ liệu thời gian.
SE là độ lệch chuẩn của hệ số hồi quy.
Phương pháp kiểm định Dickey-Fuller bao gồm hai biến thể chính: Dickey-Fuller (DF) và Dickey-Fuller mở rộng (ADF) Phương pháp DF kiểm tra tính dừng của chuỗi thời gian không có xu hướng tuyến tính, trong khi ADF có khả năng kiểm tra tính dừng của chuỗi thời gian có xu hướng tuyến tính Đối với kiểm định ADF, nếu giá trị thống kê ADF nhỏ hơn ngưỡng xác định (thường là 0,05), giả thiết không tính dừng sẽ bị bác bỏ và giả thiết tính dừng được chấp nhận Ngược lại, nếu giá trị thống kê ADF lớn hơn hoặc bằng ngưỡng, giả thiết không tính dừng không thể bị bác bỏ.
Các mô hình ARIMA cơ bản và mở rộng
4.1 Các mô hình ARIMA cơ bản
Những trường hợp cơ bản của mô hình ARIMA Độ nhiễu trắng ARIMA(0,0,0)
Chuỗi ngẫu nhiên ARIMA(0,1,0) không có hằng số
Chuỗi ngẫu nhiên có trôi dạt ARIMA(0,d,0)
Bảng 1 : Các trường hợp cơ bản của mô hình ARIMA Trong bảng trên ta có
+ ARIMA(0,0,0) thể hiện không có yếu tố nào đang tác động lên chuỗi thời
+ ARIMA(0,1,0) mô tả chuỗi thời gian ngẫu nhiên (random walk) mà không có hằng số.
+ ARIMA(0,d,0) :là chuỗi không ổn định
+ ARIMA(p,0,0) là mô hình tự hồi quy (autoregressive model), thể hiện rằng giá trị hiện tại của chuỗi phụ thuộc vào các giá trị trước đó của chuỗi.
+ ARIMA(0,0,q) là mô hình trung bình động (moving average model), thể hiện rằng giá trị hiện tại của chuỗi phụ thuộc vào các giá trị ngẫu nhiên trước đó.
4.2 Các mô hình ARIMA mở rộng
Mô hình ARIMA theo mùa (SARIMA) là một biến thể của mô hình ARIMA, được áp dụng để mô hình hóa và dự báo chuỗi thời gian có tính chất theo mùa Trong các chuỗi thời gian này, giá trị thường lặp lại theo các chu kỳ thời gian nhất định.
Trong chuỗi thời gian doanh thu bán lẻ, doanh thu thường tăng cao vào các tháng cuối năm nhờ vào mùa lễ, trong khi các tháng khác trong năm lại ghi nhận doanh thu thấp hơn.
Mô hình SARIMA được xác định bởi 7 thông số khác nhau: p, d, q, P,
D, Q và m Các thông số này tương ứng với số lượng phương pháp tự hồi quy (AR), sai phân, số lượng phương pháp trung bình động (MA), số lượng phương pháp tự hồi quy mùa vụ (seasonal AR), độ chênh lệch mùa vụ (seasonal difference), số lượng phương pháp trung bình di động mùa vụ (seasonal MA) và chu kỳ mùa vụ.
Công thức của mô hình SARIMA : y(t) = c + φ₁y(t-1) + + φ y(t-p) + θ₁e(t-1) + + θ e(t-q) + S₇S₆ S₂S₁*y(t-m) ₚ ₚ +e(t)
Trong chuỗi thời gian, y(t) đại diện cho giá trị tại thời điểm t, c là hằng số trung bình, φ₁, , φ là các hệ số autoregressiveₚ, θ₁, , θ là các hệ số moving averageₚ, và e(t) là nhiễu ngẫu nhiên tại thời điểm t Các hệ số mùa vụ được ký hiệu là S₁, , S₇, trong khi m biểu thị cho chu kỳ mùa vụ.
Mô hình ARIMA không theo mùa (Non-seasonal ARIMA) là một biến thể của mô hình ARIMA, được áp dụng để mô hình hóa và dự báo chuỗi thời gian không có tính chất theo mùa Trong chuỗi thời gian này, các giá trị không lặp lại theo chu kỳ nhất định.
The ARFIMA (autoregressive fractionally integrated moving average) model is a more complex variant of ARIMA, designed for modeling non-stationary time series with constant stability over time ARFIMA enables the modeling of long-term dependencies between values in the series.
ARFIMA là một phương pháp hiệu quả để mô hình hóa các chuỗi thời gian có sự phụ thuộc dài hạn giữa các giá trị Phương pháp này đặc biệt phù hợp với các chuỗi thời gian phi tuyến và không ổn định theo thời gian ARFIMA kết hợp các thành phần tự hồi quy (AR), trung bình động (MA) và sai phân của ARIMA, cùng với thành phần tích phân theo phân số (F), nhằm mô hình hóa sự phụ thuộc dài trong dữ liệu.
Mô hình ARFIMA được xác định bởi ba thông số chính: p, d và q, trong đó p đại diện cho số lượng phương pháp tự hồi quy (AR), d là độ chênh lệch (difference), và q là số lượng phương pháp trung bình di động (MA).
Công thức của mô hình ARFIMA :
Trong chuỗi thời gian, \(y(t)\) đại diện cho giá trị tại thời điểm \(t\), trong khi \(\mu\) là hằng số trung bình Các hệ số autoregressive được ký hiệu là \(\phi_1, \ldots, \phi_p\) và các hệ số moving average là \(\theta_1, \ldots, \theta_q\) Cuối cùng, \(e(t)\) là nhiễu ngẫu nhiên tại thời điểm \(t\).
B là phép toán backshift, với công thức \$B^d*y(t) = y(t-d)\$, trong đó d là độ chênh lệch p đại diện cho số lượng phương pháp tự hồi quy, và q là số lượng phương pháp trung bình di động Để xác định các thông số p, d, và q phù hợp cho mô hình ARFIMA, có thể áp dụng các phương pháp như AIC, BIC, hoặc cross-validation.
Mô hình hóa và dự báo chuỗi thời gian là những ứng dụng quan trọng trong việc phân tích giá cổ phiếu, doanh số bán hàng và dữ liệu thời tiết.
Mô hình ARFIMA cho phép mô hình hóa các chuỗi thời gian phi tuyến với tính ổn định không đổi theo thời gian, trong khi các phương pháp khác như mô hình hồi quy lại không đáp ứng được yêu cầu này.
Một vài lưu ý về ARFIMA:
+ Trong mô hình ARIMA không theo mùa, chỉ có phần autoregressive (AR) và moving average (MA) của ARIMA được sử dụng Phần chênh lệch (difference)
(1-B)^d*(1-φ₁B^d- -φpB^(dp))/(1-θ₁B^d- -θqB^(dq)) y(t) = μ + e(t) chỉ được sử dụng để chuyển đổi chuỗi thời gian phi tuyến thành chuỗi thời gian ổn định.
Việc lựa chọn tham số cho mô hình ARIMA không theo mùa tương tự như trong SARIMA, có thể áp dụng các phương pháp như AIC, BIC hoặc cross-validation để xác định số lượng tối ưu cho các phương pháp tự hồi quy (AR) và phương pháp trung bình di động (MA).
Mô hình ARFIMA là một phiên bản mở rộng của mô hình ARIMA, cho phép mô hình hóa các chuỗi thời gian phi tuyến với tính chất ổn định không đổi theo thời gian ARFIMA đặc biệt hữu ích trong việc phân tích các chuỗi thời gian có sự phụ thuộc dài hạn giữa các giá trị trong chuỗi.
Việc chọn tham số cho mô hình ARFIMA tương tự như trong ARIMA, bao gồm số lượng phương pháp tự hồi quy (AR), độ chênh lệch (difference) và số lượng phương pháp trung bình di động (MA) Tuy nhiên, việc xác định độ chênh lệch (d) trong ARFIMA thường khó khăn hơn, vì nó cần phải phù hợp với tính ổn định của chuỗi thời gian.
Ưu và nhược điểm của mô hình ARIMA
Sau đây là một số ưu và nhược điểm của mô hình ARIMA: Ưu điểm:
+ Được sử dụng rộng rãi và có tính linh hoạt cao để mô hình hóa các dạng dữ liệu chuỗi thời gian khác nhau.
+ Cho phép mô hình hóa các mối quan hệ phức tạp giữa các giá trị quan sát trong chuỗi thời gian.
+ Có thể sử dụng để mô hình hóa dữ liệu với xu hướng, chu kỳ và dao động ngẫu nhiên.
+ Cho phép xác định và loại bỏ các yếu tố phi tuyến tính và phi đồng nhất trong chuỗi thời gian.
+ Có thể sử dụng để dự báo trong tương lai một cách chính xác.
+ Có thể tốn nhiều thời gian và công sức để lựa chọn các tham số phù hợp cho mô hình.
+ Có thể dẫn đến hiện tượng "overfitting" (quá khớp) nếu quá tập trung vào việc tối ưu hóa mô hình.
+ Không thể mô hình hóa được các yếu tố không xác định hoặc không đo được trong chuỗi thời gian.
Để áp dụng mô hình ARIMA, dữ liệu cần phải có tính dừng Nếu dữ liệu không đạt yêu cầu này, cần sử dụng các phương pháp khác để tránh hiện tượng sai lệch trong dự báo.
Mô hình ARIMA có một yếu điểm là yêu cầu một lượng dữ liệu lớn để xác định chính xác các thông số như p, d, q, P, D, Q Việc thiếu dữ liệu có thể dẫn đến việc xác định các thông số không chính xác, từ đó làm giảm độ tin cậy của mô hình.
Mô hình ARIMA có những giả định về tính tuyến tính và phân phối của dữ liệu, vì vậy nó có thể không phù hợp với các dữ liệu không tuyến tính hoặc không tuân theo phân phối chuẩn.
XÂY DỰNG MÔ HÌNH ARIMA TRONG R
Các bước chung để xây dựng mô hình ARIMA
Để xây dựng mô hình ARIMA, chúng ta cần làm theo các bước sau:
+ Bước 1 : Chuẩn bị dữ liệu
Thu thập dữ liệu và chuẩn bị chúng để sử dụng cho mô hình ARIMA Dữ liệu phải có tính dừng và không có giá trị bị thiếu.
+ Bước 2 : Phân tích dữ liệu
Trực quan hóa dữ liệu giúp nắm bắt xu hướng và mẫu phân phối một cách rõ ràng hơn Việc sử dụng các loại biểu đồ như biểu đồ đường, biểu đồ phân tán và biểu đồ hàm tự tương quan (ACF) là cần thiết để phân tích dữ liệu hiệu quả.
Dựa trên phân tích dữ liệu, việc chọn mô hình ARIMA phù hợp là rất quan trọng Đối với mô hình ARIMA không theo mùa, kiểm định Augmented Dickey-Fuller (ADF) có thể được sử dụng để xác định tính dừng của dữ liệu Trong khi đó, đối với mô hình ARIMA theo mùa, cần xác định chu kỳ mùa và áp dụng mô hình SARIMA.
+ Bước 4 : Ước lượng tham số
Dựa vào mô hình đã chọn, việc ước lượng các tham số của mô hình là cần thiết Thông thường, chúng ta áp dụng phương pháp tối đa hóa hàm độ lỗi để thực hiện ước lượng này.
+ Bước 5 : Kiểm tra sử dụng mô hình
Sau khi ước lượng các tham số, việc kiểm tra tính phù hợp của mô hình là cần thiết Chúng ta có thể thực hiện điều này thông qua các phương pháp như kiểm tra chuỗi dự báo và kiểm tra chéo.
Cuối cùng, chúng ta có thể sử dụng mô hình ARIMA để dự báo giá trị tương lai
R là ngôn ngữ lập trình và môi trường tính toán thống kê được phát triển bởi Ross Ihaka và Robert Gentleman vào những năm 1990 tại Đại học Auckland, New Zealand Ngôn ngữ này được thiết kế nhằm hỗ trợ nghiên cứu thống kê, phân tích dữ liệu và khai thác dữ liệu R hiện đang được ứng dụng rộng rãi trong nhiều lĩnh vực như khoa học dữ liệu, kinh doanh, y tế và nghiên cứu xã hội.
R cung cấp nhiều tính năng hỗ trợ phân tích thống kê và trực quan hóa dữ liệu, bao gồm tính toán thống kê cơ bản, phân tích đa biến, phân tích chuỗi thời gian, và phân tích dữ liệu với các mô hình tuyến tính và phi tuyến tính Ngoài ra, R còn cho phép thực hiện các nhiệm vụ xử lý dữ liệu như đọc và ghi tệp từ nhiều định dạng khác nhau, thực hiện các phép tính đại số tuyến tính, và xử lý dữ liệu dạng ma trận và mảng.
R là một ngôn ngữ lập trình phổ biến cho phân tích dữ liệu và khoa học dữ liệu, nhờ vào thư viện phong phú với hàng ngàn gói mở rộng hỗ trợ các tác vụ phân tích phức tạp Cộng đồng phát triển mạnh mẽ của R đã góp phần làm tăng sự phổ biến của ngôn ngữ này trong lĩnh vực phân tích dữ liệu.
R có khả năng hoạt động trên nhiều hệ điều hành như Windows, Mac OS và các hệ điều hành dựa trên Linux Ngoài ra, R còn có thể được tích hợp vào các ứng dụng web và các ứng dụng phân tích dữ liệu khác.
R là một ngôn ngữ lập trình và môi trường tính toán miễn phí, mã nguồn mở, được phát triển bởi Ross Ihaka và Robert Gentleman tại Đại học Auckland, New Zealand vào năm 1993 Ngôn ngữ này được sử dụng phổ biến trong nghiên cứu khoa học, thống kê, phân tích dữ liệu, khai thác dữ liệu, máy học và trực quan hóa dữ liệu.
R là một ngôn ngữ lập trình tương tác, cho phép người dùng tương tác với các đối tượng dữ liệu và cấu trúc thông qua lệnh và thực thi mã nguồn từng dòng Ngoài ra, R còn được sử dụng để viết các tập lệnh hoặc chương trình nhằm tự động hóa quá trình xử lý dữ liệu.
R nổi bật với thư viện phong phú các gói và chức năng thống kê, khai thác dữ liệu Ngoài ra, R còn có khả năng tích hợp với các ngôn ngữ lập trình khác như Python, C++ và Java, giúp tăng tốc độ tính toán.
R được hỗ trợ bởi một cộng đồng lập trình viên đông đảo và phát triển liên tục, giúp người dùng dễ dàng tìm thấy giải pháp cho các vấn đề cụ thể Ngoài ra, R cũng có thể hoạt động trên nhiều nền tảng khác nhau như Windows, MacOS và Linux.
Vì sao lại lựa chọn R thay cho python hay nhiều ngôn ngữ khác ?
R là ngôn ngữ lập trình phổ biến trong phân tích dữ liệu và thống kê nhờ vào khả năng xử lý dữ liệu mạnh mẽ, thư viện phong phú và cộng đồng hỗ trợ lớn Sự linh hoạt và tính mở của R giúp người dùng dễ dàng thực hiện các phân tích phức tạp và trực quan hóa dữ liệu hiệu quả.
Cú pháp dễ học: R có cú pháp đơn giản và dễ học hơn với Python trong việc thực hiện các nhiệm vụ phân tích dữ liệu và thống kê.
R hỗ trợ đa dạng cho phân tích dữ liệu và thống kê với thư viện phong phú, bao gồm hàng ngàn gói mở rộng cho các tác vụ phân tích phức tạp Ngoài ra, R còn có các gói mở rộng được phát triển bởi một cộng đồng mạnh mẽ, đảm bảo cập nhật thường xuyên.
R cung cấp các gói mở rộng giúp trực quan hóa dữ liệu một cách dễ dàng, hỗ trợ nhiều loại biểu đồ như biểu đồ đường, biểu đồ cột, biểu đồ phân tán và biểu đồ nhiệt.
Demo mô hình ARIMA trong dự báo thực tế
Để xây dựng mô hình ARIMA trong ngôn ngữ R, chúng ta sử dụng hàm arima() Ví dụ cụ thể là dự báo mô hình ARIMA trên bộ dữ liệu Air Passenger, cung cấp thông tin về số lượng hành khách vận chuyển bằng đường hàng không từ năm 1949 đến 1960 Các bước cần thực hiện để bắt đầu xây dựng mô hình ARIMA trên bộ dữ liệu này bao gồm việc chuẩn bị dữ liệu và xác định các tham số phù hợp.
Bước 1: Chuẩn bị dữ liệu
Trước khi xây dựng mô hình, việc thu thập dữ liệu trong một khoảng thời gian cụ thể là rất quan trọng Chúng ta có thể sử dụng gói dataset để tải xuống dữ liệu AirPassenger.
# Tải bộ dữ liệu air passenger data(AirPassengers)
Bước 2 : Xử lý dữ liệu
Sau khi thu thập dữ liệu, cần nhập vào R và chuyển đổi thành chuỗi thời gian bằng hàm ts() Các bước kiểm định tính chất của chuỗi thời gian cũng rất quan trọng Bước tiền xử lý bao gồm tạo biến thời gian, xác định chu kỳ, kiểm tra tính ổn định của phương sai và tiêu chuẩn hóa dữ liệu.
# Kiểm tra chuỗi dữ liệu ở định dạng chuỗi thời gian hay không is.ts(AirPassengers)
#Tóm tắt dữ liệu summary(AirPassengers)
#Thời gian bắt đầu và kết thúc start(AirPassengers) end(AirPassengers) time(AirPassengers)
# Chu kỳ qua các năm. frequency(AirPassengers) adf.test(AirPassengers) # Kiểm tra tính ổn định của chuỗi thời gian
Thông báo "Warning: p-value smaller than printed p-value" chỉ ra rằng giá trị p-value thực tế nhỏ hơn ngưỡng đã xác định (0.01 < 0.05) Điều này cho thấy chúng ta có thể bác bỏ giả thuyết không ổn định và chấp nhận giả thuyết ổn định của chuỗi dữ liệu trong thư viện library(ggplot2) và library(ggthemes).
# Tạo dataframe chứa dữ liệu df