Chuyển đến nội dung chính

SARIMA: Hướng dẫn đầy đủ về dự báo chuỗi thời gian có tính mùa vụ

Tìm hiểu cách SARIMA mở rộng ARIMA để xử lý mùa vụ, hiểu bảy tham số của nó, và xây dựng một mô hình khả dụng trong Python từ thu thập dữ liệu đến dự báo.
· 15 phút đọc

Khám phá cùng AI

Mỗi tháng 12, các nhà bán lẻ lại dự trữ hàng cho mùa lễ hội. Mỗi mùa hè, lưới điện lại chuẩn bị cho cao điểm điều hòa. Những mô thức này lặp lại năm này qua năm khác, và nếu bạn xây dựng mô hình dự báo chuỗi thời gian mà bỏ qua chúng, bạn đang đánh mất độ chính xác có thể đạt được.

Mô hình Trung bình Trượt Tự hồi quy Tích phân có tính mùa vụ (viết tắt là SARIMA) mở rộng khung ARIMA được dùng rộng rãi để nắm bắt các mô thức mùa vụ lặp lại song song với xu hướng thông thường. Trong bài viết này, bạn sẽ học SARIMA là gì, các thành phần của nó vận hành ra sao, khi nào nên chọn nó thay cho ARIMA, và cách xây dựng mô hình từng bước trong Python.

SARIMA là gì?

SARIMA là một mô hình dự báo chuỗi thời gian xử lý cả mô thức không mùa vụ lẫn mùa vụ trong dữ liệu. Nó xây dựng trực tiếp trên ARIMA, nên nếu bạn đã từng làm việc với ARIMA, bạn sẽ nhận ra phần lớn cơ chế của nó. Khác biệt then chốt là SARIMA bổ sung một lớp tham số thứ hai được thiết kế riêng để mô hình hóa hành vi lặp lại theo khoảng thời gian cố định, như chu kỳ theo tháng, theo quý hoặc theo tuần.

Về mặt hình thức, một mô hình được viết là SARIMA(p, d, q)(P, D, Q)[S]. Bộ tham số đầu, (p, d, q), xử lý cấu trúc không mùa vụ, giống hệt ARIMA tiêu chuẩn. Bộ thứ hai, (P, D, Q)[S], tính đến các mô thức mùa vụ, trong đó S là độ dài chu kỳ mùa vụ. Với dữ liệu theo tháng có mùa vụ theo năm, S = 12. Với dữ liệu theo quý, S = 4.

Các thành phần chính của SARIMA

Bảy tham số của SARIMA lúc đầu có thể khiến bạn thấy nhiều. Hãy nghĩ chúng thành hai nhóm: bộ ba ARIMA quen thuộc (p, d, q) và các đối ứng theo mùa vụ (P, D, Q, S) phản chiếu chúng ở thước đo mùa vụ. Mỗi tham số mùa vụ làm đúng điều mà “người anh em” không mùa vụ của nó làm, chỉ khác là áp dụng trên các độ trễ theo mùa vụ thay vì các bước thời gian kề nhau.

Phần Tự hồi quy (AR)

Thành phần AR dùng các giá trị quá khứ của chuỗi để dự đoán giá trị tương lai. Tham số p chỉ định bao nhiêu giá trị trễ sẽ được đưa vào. Nếu p = 2, mô hình dùng hai bước thời gian trước đó làm biến dự báo cho giá trị hiện tại.

Ở phía mùa vụ, P làm điều tương tự nhưng tại các độ trễ theo mùa vụ. Nếu P = 1 và S = 12, mô hình nhìn vào giá trị cách đây 12 kỳ, tức cùng tháng của năm trước, như một biến dự báo. Điều này trực tiếp nắm bắt các mô thức theo năm.

Phần Tích phân (I)

Tham số d kiểm soát số lần lấy sai phân của chuỗi để loại bỏ xu hướng và biến nó thành dừng. Lấy sai phân nghĩa là trừ đi quan sát liền trước cho mỗi quan sát, giúp loại bỏ xu hướng tuyến tính. Nếu d = 1, bạn lấy sai phân bậc nhất; nếu d = 2, bạn lấy sai phân trên chuỗi đã được sai phân.

Sai phân mùa vụ hoạt động tương tự nhưng tại các độ trễ theo mùa vụ. Tham số D chỉ định số lần lấy sai phân mùa vụ. Với D = 1 và S = 12, bạn trừ đi giá trị cách 12 kỳ trước cho mỗi quan sát. Kết hợp d = 1 và D = 1 là điều thường gặp khi một chuỗi vừa có xu hướng tăng tổng quát vừa có mô thức mùa vụ lặp lại.

Phần Trung bình trượt (MA)

Khác với thành phần AR, vốn nhìn vào các giá trị quá khứ, thành phần MA mô hình hóa mối quan hệ giữa quan sát hiện tại và sai số dư từ các dự báo trước đó. Tham số q đặt số lượng các hạng sai số trễ cần đưa vào. Nếu q = 1, mô hình dùng sai số dự báo ở bước trước để điều chỉnh dự báo hiện tại.

Đối ứng mùa vụ Q áp dụng cùng logic này tại các độ trễ theo mùa vụ. Với Q = 1 và S = 12, mô hình đưa vào sai số dự báo cách 12 kỳ trước. Điều này quan trọng khi các cú sốc mùa vụ, như mùa hè nóng bất thường làm tăng nhu cầu năng lượng, có xu hướng dai dẳng sang cùng kỳ năm sau.

Thành phần mùa vụ (S)

Tham số S xác định độ dài chu kỳ mùa vụ và liên kết ba tham số mùa vụ (P, D, Q) với nhau. Chọn S đúng là rất quan trọng: nếu dữ liệu của bạn theo tháng với mô thức theo năm, S = 12. Dữ liệu theo tuần với chu kỳ theo năm cho S xấp xỉ 52.

Đây là chỗ tính mùa vụ đôi khi trở nên khó. Một năm không chính xác là 52 tuần; gần hơn là 52,18. Với hầu hết mục đích thực tế, làm tròn S = 52 là ổn. Nhưng một số tập dữ liệu có nhiều chu kỳ mùa vụ: nhu cầu điện hàng ngày thường vừa có chu kỳ theo tuần (S = 7) vừa theo năm (S = 365). SARIMA tiêu chuẩn xử lý một chu kỳ mùa vụ, nên nhiều mùa vụ cần các phương pháp nâng cao như TBATS hoặc Facebook Prophet.

Khi S không rõ ràng, phân rã chuỗi thời gian sẽ hữu ích. Phân rã chuỗi thành các thành phần xu hướng, mùa vụ và phần dư sẽ trực quan làm lộ chu kỳ lặp lại chi phối. Bạn cũng có thể xem đồ thị tự tương quan để tìm các đỉnh tại các độ trễ đều đặn.

ARIMA so với SARIMA: Khác nhau ở đâu?

Có lẽ bạn đang nghĩ: khi nào thực sự nên dùng SARIMA thay vì ARIMA đơn giản hơn?

Câu trả lời ngắn gọn: dùng ARIMA khi dữ liệu của bạn không có mô thức mùa vụ đáng kể, và dùng SARIMA khi có.

ARIMA mô hình hóa ba thứ: tự tương quan trong chính chuỗi (AR), số lần sai phân cần thiết để đạt tính dừng (I), và ảnh hưởng kéo dài của các sai số dự báo trước lên giá trị hiện tại (MA). Nó xử lý tốt xu hướng, chu kỳ và nhiễu bất quy tắc. Điều nó không thể làm là mô hình hóa các mô thức lặp lại theo một tần suất mùa vụ cố định. Những thứ đó sẽ lọt vào như phương sai không giải thích được.

SARIMA bổ sung chính xác năng lực đó. Khi đỉnh và đáy mùa vụ rõ ràng xuất hiện trong dữ liệu của bạn, việc khớp một mô hình ARIMA thuần buộc các mô thức đó chui vào phần dư, dẫn đến dự báo tệ hơn và phần dư không phải nhiễu trắng. Một mô hình SARIMA sẽ nắm bắt trực tiếp chúng.

Quy tắc thực tế: vẽ dữ liệu và tìm các mô thức lặp lại theo khoảng thời gian cố định. Nếu bạn thấy chúng, như đột biến doanh số dịp lễ, tăng vọt năng lượng mùa đông, các mô thức lợi nhuận theo quý, hãy chọn SARIMA. Nếu chuỗi bất quy tắc hoặc chủ yếu do xu hướng mà không có chu kỳ đều đặn, ARIMA đơn giản và đủ dùng.

Khóa học ARIMA Models in Python của chúng tôi bao quát cả hai khung với các bài tập thực hành để mài sắc trực giác về lúc nào dùng mô hình nào.

Cách xây dựng mô hình SARIMA trong Python

Xây dựng một mô hình SARIMA theo một chuỗi logic: thu thập dữ liệu, kiểm tra tính dừng, xác định tham số, khớp mô hình, chạy chẩn đoán và dự báo. Dưới đây là cách mỗi bước vận hành trong thực tế, sử dụng thư viện statsmodels của Python.

Thu thập dữ liệu

Để mô hình nắm bắt mùa vụ, bạn cần đủ lịch sử để quan sát mô thức ít nhất hai lần, lý tưởng là vài chu kỳ. Doanh số bán lẻ theo tháng, số liệu nhiệt độ, mức tiêu thụ năng lượng và lượng hành khách là những ví dụ kinh điển. Các nguồn công khai như Federal Reserve Economic Data (FRED), Cục Thống kê Dân số Hoa Kỳ, hoặc Kaggle là điểm khởi đầu tốt.

Bộ dữ liệu giảng dạy tiêu chuẩn cho quy trình này là lượng hành khách hàng không: dữ liệu theo tháng từ 1949 đến 1960 với xu hướng tăng rõ rệt và tính mùa vụ theo năm mạnh. Nó có sẵn qua statsmodels thông qua get_rdataset(), lấy về từ bộ Rdatasets. Hãy học quy trình trên bộ dữ liệu này trước khi áp dụng cho dữ liệu của riêng bạn.

Tiền xử lý dữ liệu

Trước khi khớp bất kỳ mô hình SARIMA nào, bạn cần một chuỗi dừng, nơi trung bình và phương sai không đổi theo thời gian. Kiểm định Augmented Dickey-Fuller (ADF) kiểm tra điều này một cách chính thức: p-value dưới 0,05 gợi ý chuỗi là dừng.

Nếu không, lấy sai phân sẽ khắc phục. Áp dụng sai phân thông thường (d = 1) cho xu hướng, sai phân mùa vụ (D = 1 tại độ trễ S) cho tính không dừng theo mùa vụ, hoặc cả hai nếu cần. Xử lý giá trị khuyết trước bước này. Điền tiến (forward fill) hoặc nội suy là các cách tiêu chuẩn cho dữ liệu chuỗi thời gian, vì loại bỏ hàng sẽ phá vỡ cấu trúc thời gian.

Nhận dạng mô hình

Khi đã có chuỗi dừng, bạn dùng đồ thị Hàm Tự tương quan (ACF) và Hàm Tự tương quan riêng phần (PACF) để xác định tham số mô hình. Hãy tìm những điểm sau:

  • ACF cho thấy tương quan giữa chuỗi và các độ trễ của nó. Ngắt đột ngột sau độ trễ q gợi ý bậc MA. Các đỉnh tại độ trễ mùa vụ (12, 24, 36 với dữ liệu theo tháng) cung cấp thông tin cho Q.
  • PACF cho thấy tương quan riêng phần với các hiệu ứng độ trễ trung gian đã được loại bỏ. Ngắt đột ngột sau độ trễ p gợi ý bậc AR. Các đỉnh mùa vụ cung cấp thông tin cho P.

Trong thực tế, các đồ thị cho bạn các giá trị ứng viên, và bạn so sánh một vài mô hình bằng tiêu chí thông tin (sẽ bàn thêm ở phần chẩn đoán). Nếu bạn muốn tự động hóa việc tìm kiếm, auto_arima() từ gói pmdarima thực hiện lưới tìm kiếm trên các tổ hợp tham số và chọn mô hình phù hợp nhất.

Ước lượng tham số

Khi đã có các tham số ứng viên, statsmodels ước lượng chúng bằng Phương pháp Cực đại Hợp lý (MLE), tìm các hệ số khiến dữ liệu quan sát được có khả năng xảy ra cao nhất dưới mô hình. Ước lượng SARIMA tốn nhiều tính toán hơn ARIMA thuần vì bộ tối ưu phải khớp đồng thời cả thành phần không mùa vụ và mùa vụ.

Quá trình khớp đôi khi có thể hội tụ về cực trị cục bộ thay vì toàn cục, vì vậy đáng để thử vài giá trị khởi tạo hoặc tổ hợp tham số khác khi kết quả có vẻ bất thường.

Khớp mô hình

Dưới đây là cách khớp mô hình SARIMA trong Python với bộ dữ liệu hành khách hàng không:

import pandas as pd
import statsmodels.api as sm

# Load the classic airline dataset
airline_data = sm.datasets.get_rdataset("AirPassengers", "datasets").data
airline_data.index = pd.date_range(start="1949-01", periods=len(airline_data), freq="MS")
passengers = airline_data["value"]

# Fit SARIMA(1,1,1)(1,1,1)[12]
sarima_model = sm.tsa.statespace.SARIMAX(
    passengers,
    order=(1, 1, 1),
    seasonal_order=(1, 1, 1, 12),
    enforce_stationarity=False,
    enforce_invertibility=False
)

sarima_result = sarima_model.fit(disp=False)
print(sarima_result.summary())	

Đối số order nhận (p, d, q) cho phần không mùa vụ; seasonal_order nhận (P, D, Q, S). Đặt enforce_stationarity=False và enforce_invertibility=False cho bộ tối ưu linh hoạt hơn, thường giúp hội tụ tốt hơn với dữ liệu thực tế.

Thống kê và chẩn đoán mô hình

Sau khi khớp, chạy các biểu đồ chẩn đoán tích hợp với sarima_result.plot_diagnostics(). Bạn cần kiểm tra bốn điều:

  • Phần dư đã chuẩn hóa: Nên giống nhiễu trắng, không có mô thức rõ ràng.
  • Biểu đồ tần suất phần dư: Nên xấp xỉ phân phối chuẩn.
  • Biểu đồ Q-Q chuẩn: Các điểm nên nằm gần đường chéo.
  • Correlogram (ACF của phần dư): Không có đỉnh đáng kể, vốn sẽ chỉ ra tự tương quan chưa giải thích được.

Hãy chú ý đặc biệt đến các độ trễ mùa vụ trong correlogram. Các đỉnh tại độ trễ 12, 24, v.v. gợi ý thành phần mùa vụ chưa được nắm bắt đầy đủ. So sánh các đặc tả thay thế bằng AIC (Akaike Information Criterion) và BIC (Bayesian Information Criterion): giá trị thấp hơn cho thấy độ phù hợp tốt hơn, với BIC phạt độ phức tạp nặng hơn.

Dự báo

Khi mô hình đã được kiểm chứng, việc tạo dự báo khá trực quan. Chia dữ liệu thành tập huấn luyện và kiểm tra để đánh giá trung thực độ chính xác dự báo:

# Train on first 11 years, test on final year
train = passengers[:"1959"]
test = passengers["1960":]

# Refit on training data and forecast
sarima_train = sm.tsa.statespace.SARIMAX(
    train,
    order=(1, 1, 1),
    seasonal_order=(1, 1, 1, 12),
    enforce_stationarity=False,   # add this
    enforce_invertibility=False   # add this
).fit(disp=False)

forecast = sarima_train.get_forecast(steps=12)
forecast_mean = forecast.predicted_mean
conf_int = forecast.conf_int()

Phương thức get_forecast() trả về dự báo điểm cùng với khoảng tin cậy mở rộng dần khi bạn dự báo xa hơn. Việc nở rộng này không phải lỗi; đó là mô hình đang trung thực về mức độ bất định. Đánh giá độ chính xác bằng RMSE (Căn phương sai sai số bình phương trung bình) hoặc MAPE (Phần trăm sai số tuyệt đối trung bình) trên tập kiểm tra giữ lại.

Ứng dụng thực tế của SARIMA

Rất nhiều tín hiệu đời thực mang tính mùa vụ nên SARIMA xứng đáng là công cụ thường trực trong bất kỳ bộ công cụ chuỗi thời gian nào. Một vài ví dụ theo ngành:

  • Bán lẻ: Dự báo doanh số theo tháng để lập kế hoạch tồn kho, đặc biệt quanh các dịp lễ khi nhu cầu tăng vọt có thể dự đoán được nhưng biên độ thay đổi theo từng năm.
  • Tiêu thụ năng lượng: Dự đoán nhu cầu điện và gas, vốn theo cả chu kỳ hàng ngày và hàng năm do nhiệt độ và mô thức hoạt động chi phối.
  • Tài chính: Mô hình hóa mô thức lợi nhuận theo quý hoặc khối lượng giao dịch lặp lại theo lịch tài khóa.
  • Dự báo thời tiết: Dự phóng nhiệt độ, lượng mưa và các biến khí hậu khác có chu kỳ hàng năm mạnh.

Trong mỗi trường hợp, cấu trúc lặp lại chính là tín hiệu, và SARIMA được xây dựng để nắm bắt nó.

Hạn chế của SARIMA

Biết công cụ hoạt động tốt ở đâu mới chỉ là nửa bức tranh. SARIMA là đường cơ sở vững chắc cho chuỗi thời gian có mùa vụ, nhưng hiểu giới hạn của nó là điều phân biệt người dùng mô hình tốt với người dùng một cách mù quáng.

Nó xử lý đúng một chu kỳ mùa vụ. Nếu dữ liệu của bạn có nhiều mùa vụ xếp chồng, như mô thức hàng ngày, hàng tuần và hàng năm chồng lên nhau, SARIMA sẽ không mô hình hóa tất cả cùng lúc. Các phương pháp như TBATS, Prophet hoặc mạng LSTM xử lý tự nhiên hơn các tần suất mùa vụ đa dạng.

SARIMA cũng giả định tính tuyến tính. Nó mô hình hóa quan hệ tuyến tính giữa các giá trị quá khứ, các sai số quá khứ và quan sát tương lai. Động lực phi tuyến, thường gặp trong chuỗi tài chính hoặc hệ hỗn loạn, cần công cụ khác. Và giống ARIMA, SARIMA chỉ dựa vào lịch sử của chính chuỗi. Nếu bạn có các tác nhân bên ngoài ảnh hưởng đến dự báo, như khuyến mãi, thời tiết, chỉ số kinh tế, hãy xem SARIMAX, bổ sung biến ngoại sinh vào khung SARIMA.

Cuối cùng, lựa chọn tham số có thể thật sự khó. Với bảy tham số cần tinh chỉnh, không gian tìm kiếm lớn, và việc khớp có thể chậm trên chuỗi dài. auto_arima() từ pmdarima giúp tự động hóa việc này. Nhưng không có lối tắt nào thay thế cho việc hiểu các tham số thực sự có nghĩa gì, đó là lý do chúng tôi trình bày các thành phần trước khi đụng đến mã.

Kết luận

Tôi luôn nghĩ SARIMA thường bị đánh giá thấp trong các khóa nhập môn dự báo. Nó được dạy như “ARIMA nhưng có phần mùa vụ”, khiến nó nghe như một phần mở rộng nhỏ. Không phải vậy. Các tham số mùa vụ không phải gắn thêm cho có; chúng thực sự làm công việc mang tính cấu trúc, nắm bắt một lớp hành vi của dữ liệu mà ARIMA hoàn toàn không chạm tới.

Điều khiến SARIMA “bắt sóng” trong thực tế là nhận ra các thành phần không mùa vụ và mùa vụ không phải là hai mô hình riêng chạy song song. Chúng tương tác. Các hạng AR và MA hoạt động cùng với “người anh em” mùa vụ của chúng, mỗi hạng xử lý một thang thời gian tự tương quan khác nhau. Khi điều đó “lọt” vào, việc đọc đồ thị ACF và PACF không còn là trò nhận dạng mô thức, mà là thực sự hiểu dữ liệu của bạn.

Nếu bạn đang làm việc với dữ liệu theo tháng, theo quý, hoặc bất kỳ dữ liệu có chu kỳ đều đặn nào, SARIMA là điểm khởi đầu đúng đắn, không phải vì nó luôn là câu trả lời cuối cùng, mà vì nó buộc bạn suy nghĩ rõ ràng về cấu trúc của chuỗi. Từ đó, SARIMAX thêm các biến dự báo bên ngoài, và các phương pháp như TBATS hoặc Prophet xử lý các trường hợp nhiều mùa vụ phức tạp hơn. Hướng dẫn Dự báo Chuỗi Thời gian và khóa ARIMA Models in Python của chúng tôi đều là các bước tiếp theo tốt.

Vinod Chugani

Tác giả

Vinod Chugani

Vinod Chugani bắt đầu sự nghiệp tại Tokyo với vai trò Trưởng bàn giao dịch bán hàng Quỹ phòng hộ trẻ nhất của JPMorgan, sau đó lập kỷ lục doanh số cá nhân tại Lehman Brothers, rồi xây dựng một doanh nghiệp phân phối điện tử tại 30 quốc gia vượt mốc doanh thu 100 triệu đô la Singapore trước khi chuyển hướng sang dữ liệu. Tốt nghiệp Kinh tế Duke và là cựu học viên NYC Data Science Academy, anh là một trong ba người nhận học bổng trong hơn 100 ứng viên cho khóa học Building AI Applications của Hugo Bowne-Anderson trên Maven. Hiện nay, anh viết cho DataCamp, KDnuggets, Machine Learning Mastery và Statology về các chủ đề từ thống kê đến AI hành động, và cố vấn cho các chuyên gia dữ liệu tại NYC Data Science Academy với hơn 1.000 buổi kèm 1-1 đã thực hiện.

 

Câu hỏi thường gặp về SARIMA

SARIMA là viết tắt của gì?

SARIMA là viết tắt của Seasonal AutoRegressive Integrated Moving Average (Trung bình Trượt Tự hồi quy Tích phân có tính mùa vụ). Nó mở rộng mô hình ARIMA tiêu chuẩn bằng cách thêm các tham số mùa vụ—(P, D, Q) và chu kỳ mùa vụ S—để nắm bắt các mô thức lặp lại trong dữ liệu chuỗi thời gian, như chu kỳ theo tháng hoặc theo quý.

Sự khác biệt giữa ARIMA và SARIMA là gì?

ARIMA mô hình hóa các mô thức không mùa vụ: xu hướng, tự tương quan và hiệu ứng trung bình trượt. SARIMA thêm một lớp tham số thứ hai (P, D, Q, S) mô hình hóa các hiệu ứng tương tự tại các độ trễ mùa vụ. Nếu dữ liệu của bạn cho thấy các mô thức lặp lại theo khoảng thời gian cố định—như doanh số cao hơn vào mỗi tháng 12—SARIMA nắm bắt trực tiếp những điều đó, trong khi ARIMA để chúng lại như phương sai phần dư không giải thích được.

Làm sao tôi chọn đúng tham số SARIMA?

Bắt đầu bằng cách kiểm tra chuỗi của bạn có dừng hay không bằng kiểm định Augmented Dickey-Fuller. Sau đó xem các đồ thị ACF và PACF: bậc AR (p) và MA (q) không mùa vụ đến từ mô thức ngắt tại các độ trễ không mùa vụ, trong khi các bậc mùa vụ P và Q đến từ các đỉnh tại độ trễ mùa vụ. Bạn cũng có thể dùng auto_arima() từ gói pmdarima để tự động tìm kiếm qua các tổ hợp tham số, sử dụng AIC hoặc BIC để chọn mô hình tốt nhất.

Làm sao tôi xác định chu kỳ mùa vụ S cho mô hình SARIMA?

Chu kỳ mùa vụ S phản ánh tần suất mô thức lặp lại. Với dữ liệu theo tháng có mùa vụ hàng năm, S = 12. Với dữ liệu theo quý, S = 4. Với dữ liệu theo tuần, S = 52 (hoặc làm tròn từ 52,18). Nếu chu kỳ không rõ ràng, hãy dùng phân rã chuỗi thời gian hoặc xem đồ thị ACF để tìm các đỉnh cách đều nhau—những đỉnh này tiết lộ tần số mùa vụ chi phối.

SARIMA có xử lý được nhiều chu kỳ mùa vụ không?

SARIMA tiêu chuẩn xử lý một chu kỳ mùa vụ tại một thời điểm. Nếu dữ liệu của bạn có nhiều mùa vụ xếp chồng—như nhu cầu điện hàng ngày vừa có chu kỳ theo tuần vừa theo năm—bạn sẽ cần các lựa chọn khác như TBATS, Facebook Prophet, hoặc mạng LSTM, những phương pháp được thiết kế để mô hình hóa đồng thời nhiều cấu trúc mùa vụ chồng lấp.

Thư viện Python nào tốt nhất để khớp mô hình SARIMA?

Thư viện statsmodels của Python là lựa chọn tiêu chuẩn, cung cấp SARIMAX() (đủ linh hoạt để khớp các mô hình SARIMA không có biến ngoại sinh). Để tự động chọn tham số, hàm auto_arima() của thư viện pmdarima thực hiện lưới tìm kiếm và rất đáng đưa vào quy trình khi bạn chưa chắc nên bắt đầu với giá trị tham số nào.

Làm sao tôi đánh giá mô hình SARIMA có phù hợp tốt không?

Sau khi khớp, chạy plot_diagnostics() trên đối tượng kết quả và kiểm tra phần dư trông như nhiễu trắng không có cấu trúc—đặc biệt không có đỉnh tại các độ trễ mùa vụ trong ACF. So sánh các đặc tả mô hình cạnh tranh bằng AIC hoặc BIC (thấp hơn là tốt hơn). Với độ chính xác dự báo trên dữ liệu giữ lại, RMSE và MAPE là các chỉ số phổ biến nhất.

SARIMAX là gì, và khi nào tôi nên dùng nó thay vì SARIMA?

SARIMAX thêm các biến ngoại sinh—các biến dự báo bên ngoài—vào khung SARIMA. Dùng nó khi bạn có các yếu tố đo lường được ảnh hưởng đến chuỗi ngoài lịch sử của chính nó: chi tiêu khuyến mãi ảnh hưởng đến doanh số bán lẻ, nhiệt độ ảnh hưởng đến nhu cầu năng lượng, hoặc chỉ số kinh tế vĩ mô ảnh hưởng đến doanh thu theo quý. Nếu dữ liệu của bạn chỉ là chính chuỗi đó, SARIMA là đủ; một khi có các tác nhân bên ngoài liên quan, SARIMAX cho phép bạn đưa chúng vào trực tiếp.

Chủ đề

Liên quan