मैं समझता हूं कि हमें गैर-स्थिर समय श्रृंखला मॉडलिंग के लिए ARIMA का उपयोग करना चाहिए। इसके अलावा, मैं जो कुछ भी पढ़ता हूं वह कहता है कि एआरएमए को केवल स्थिर समय श्रृंखला के लिए उपयोग किया जाना चाहिए।
मैं जो समझने की कोशिश कर रहा हूं, वह यह है कि किसी मॉडल को मिसकॉलिफ़ाइज़ करते समय, और 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)
।
तब मैं डिक्की-फुलर का उपयोग यह देखने के लिए करता हूं कि क्या डेटा गैर-स्थिर है:
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
इसलिए, मैं मान सकता हूं कि डेटा एआरआईएमए (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 प्रदर्शन करने से पहले केवल डेटा को स्थिर होना चाहिए, और यदि यह गैर-स्थिर है, तो इसे अलग-अलग समय पर अलग करने की आवश्यकता है।
धन्यवाद!