ฉันเข้าใจว่าเราควรใช้ ARIMA สำหรับการสร้างแบบจำลองชุดเวลาที่ไม่หยุดนิ่ง นอกจากนี้ทุกสิ่งที่ฉันอ่านบอกว่า ARMA ควรใช้สำหรับอนุกรมเวลาที่อยู่กับที่เท่านั้น
สิ่งที่ฉันพยายามจะทำความเข้าใจคืออะไรจะเกิดขึ้นในทางปฏิบัติเมื่อทำการแยกแยะแบบจำลองและสมมติว่าd = 0
เป็นอนุกรมเวลาที่ไม่หยุดนิ่ง ตัวอย่างเช่น:
controlData <- arima.sim(list(order = c(1,1,1), ar = .5, ma = .5), n = 44)
ข้อมูลการควบคุมมีลักษณะดังนี้:
[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
สมมติว่าผมไม่ทราบว่าข้อมูลคือผมอาจจะมีลักษณะที่ARIMA(1,1,1)
pacf(controlData)
จากนั้นฉันใช้ Dickey-Fuller เพื่อดูว่าข้อมูลไม่คงที่:
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
ดังนั้นฉันอาจสันนิษฐานว่าข้อมูลคือ ARIMA (2,0, *) จากนั้นauto.arima(controlData)
ลองใช้เพื่อให้ได้พอดีที่สุด?
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
ดังนั้นแม้ว่าข้อมูลในอดีตและอนาคตจะเป็น ARIMA (1,1,1) แต่ฉันอาจถูกจัดให้เป็น ARIMA (2,0,1) tsdata(auto.arima(controlData))
ดูดีเหมือนกัน
นี่คือสิ่งที่ผู้สร้างแบบจำลองข้อมูลจะพบ:
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) ทำไมข้อมูลเหล่านี้เกณฑ์ที่ดีขึ้นกว่ารุ่นที่เลือกโดยauto.arima(controlData)
?
ตอนนี้ฉันเพิ่งเปรียบเทียบข้อมูลจริงและแบบจำลอง 2 แบบ:
plot(controlData)
lines(fitted(naiveFit), col = "red")
lines(fitted(informedFit), col = "blue")
2) เล่นเป็นทนายของปีศาจฉันจะจ่ายผลอะไรแบบใดโดยใช้ ARIMA (2, 0, 1) เป็นตัวอย่าง? อะไรคือความเสี่ยงของข้อผิดพลาดนี้?
3) ฉันส่วนใหญ่กังวลเกี่ยวกับความหมายใด ๆ สำหรับการทำนายล่วงหน้าหลายช่วง ฉันคิดว่าพวกเขาจะมีความแม่นยำน้อยลงหรือไม่ ฉันแค่มองหาหลักฐานบางอย่าง
4) คุณจะแนะนำวิธีการอื่นในการเลือกแบบจำลองหรือไม่? มีปัญหาใด ๆ กับการใช้เหตุผลของฉันในฐานะผู้สร้างแบบจำลอง
ฉันอยากรู้จริงๆว่าอะไรคือผลที่ตามมาของการจำแนกประเภทนี้ ฉันหาแหล่งข้อมูลมาแล้วและหาอะไรไม่เจอ วรรณกรรมทั้งหมดที่ฉันสามารถพบได้เพียงแค่สัมผัสกับเรื่องนี้ แต่เพียงแค่ระบุว่าข้อมูลควรจะอยู่กับที่ก่อนที่จะทำการแสดง ARMA และถ้ามันไม่อยู่กับที่
ขอบคุณ!