Tôi hiểu rằng chúng ta nên sử dụng ARIMA để lập mô hình chuỗi thời gian không cố định. Ngoài ra, mọi thứ tôi đọc đều nói rằng ARMA chỉ nên được sử dụng cho chuỗi thời gian đứng yên.
Điều tôi đang cố gắng hiểu là, điều gì xảy ra trong thực tế khi phân loại sai một mô hình và giả sử d = 0
trong một chuỗi thời gian không cố định? Ví dụ:
controlData <- arima.sim(list(order = c(1,1,1), ar = .5, ma = .5), n = 44)
dữ liệu điều khiển trông như thế này:
[1] 0.0000000 0.1240838 -1.4544087 -3.1943094 -5.6205257
[6] -8.5636126 -10.1573548 -9.2822666 -10.0174493 -11.0105225
[11] -11.4726127 -13.8827001 -16.6040541 -19.1966633 -22.0543414
[16] -24.8542959 -25.2883155 -23.6519271 -21.8270981 -21.4351267
[21] -22.6155812 -21.9189036 -20.2064343 -18.2516852 -15.5822178
[26] -13.2248230 -13.4220158 -13.8823855 -14.6122867 -16.4143756
[31] -16.8726071 -15.8499558 -14.0805114 -11.4016515 -9.3330560
[36] -7.5676563 -6.3691600 -6.8471371 -7.5982880 -8.9692152
[41] -10.6733419 -11.6865440 -12.2503202 -13.5314306 -13.4654890
Giả sử tôi không biết dữ liệu là gì ARIMA(1,1,1)
, tôi có thể xem qua pacf(controlData)
.
Sau đó, tôi sử dụng Dickey-Fuller để xem liệu dữ liệu không cố định:
require('tseries')
adf.test(controlData)
# Augmented Dickey-Fuller Test
#
# data: controlData
# Dickey-Fuller = -2.4133, Lag order = 3, p-value = 0.4099
# alternative hypothesis: stationary
adf.test(controlData, k = 1)
# Augmented Dickey-Fuller Test
#
#data: controlData
# Dickey-Fuller = -3.1469, Lag order = 1, p-value = 0.1188
# alternative hypothesis: stationary
Vì vậy, tôi có thể giả sử dữ liệu là ARIMA (2,0, *) Sau đó sử dụng auto.arima(controlData)
để cố gắng có được sự phù hợp nhất?
require('forecast')
naiveFit <- auto.arima(controlData)
naiveFit
# Series: controlData
# ARIMA(2,0,1) with non-zero mean
#
# Coefficients:
# ar1 ar2 ma1 intercept
# 1.4985 -0.5637 0.6427 -11.8690
# s.e. 0.1508 0.1546 0.1912 3.2647
#
# sigma^2 estimated as 0.8936: log likelihood=-64.01
# AIC=138.02 AICc=139.56 BIC=147.05
Vì vậy, mặc dù dữ liệu trong quá khứ và tương lai là ARIMA (1,1,1), tôi có thể bị cám dỗ để phân loại nó là ARIMA (2,0,1). tsdata(auto.arima(controlData))
trông cũng tốt
Đây là những gì một người lập mô hình thông tin sẽ tìm thấy:
informedFit <- arima(controlData, order = c(1,1,1))
# informedFit
# Series: controlData
# ARIMA(1,1,1)
#
# Coefficients:
# ar1 ma1
# 0.4936 0.6859
# s.e. 0.1564 0.1764
#
# sigma^2 estimated as 0.9571: log likelihood=-62.22
# AIC=130.44 AICc=131.04 BIC=135.79
1) Tại sao các tiêu chí thông tin này tốt hơn mô hình được chọn bởi auto.arima(controlData)
?
Bây giờ, tôi chỉ so sánh đồ họa với dữ liệu thực và 2 mô hình:
plot(controlData)
lines(fitted(naiveFit), col = "red")
lines(fitted(informedFit), col = "blue")
2) Chơi người ủng hộ của quỷ, tôi sẽ phải trả những hậu quả gì khi sử dụng ARIMA (2, 0, 1) làm mô hình? Những rủi ro của lỗi này là gì?
3) Tôi chủ yếu quan tâm đến bất kỳ tác động nào đối với các dự đoán chuyển tiếp nhiều giai đoạn. Tôi cho rằng họ sẽ kém chính xác? Tôi chỉ đang tìm kiếm một số bằng chứng.
4) Bạn có đề xuất một phương pháp thay thế cho lựa chọn mô hình không? Có bất kỳ vấn đề nào với lý luận của tôi như là một người lập mô hình "không hiểu biết" không?
Tôi thực sự tò mò những hậu quả khác của loại phân loại sai này là gì. Tôi đã tìm kiếm một số nguồn và không thể tìm thấy bất cứ điều gì. Tất cả các tài liệu tôi có thể tìm thấy chỉ chạm vào chủ đề này, thay vào đó chỉ nêu dữ liệu nên đứng yên trước khi thực hiện ARMA, và nếu nó không cố định, thì nó cần phải được phân biệt d lần.
Cảm ơn!