Konsekwencje modelowania niestacjonarnego procesu przy użyciu ARiMR?

23

Rozumiem, że powinniśmy używać ARIMA do modelowania niestacjonarnych szeregów czasowych. Ponadto wszystko, co czytam, mówi, że ARMA powinna być używana tylko do stacjonarnych szeregów czasowych.

Próbuję zrozumieć, co dzieje się w praktyce, kiedy błędnie klasyfikujesz model i zakładasz, d = 0że szereg czasowy jest niestacjonarny? Na przykład:

controlData <- arima.sim(list(order = c(1,1,1), ar = .5, ma = .5), n = 44)

dane kontrolne wyglądają następująco:

 [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

Zakładając, że nie wiedziałem, że dane są ARIMA(1,1,1), mógłbym rzucić okiem pacf(controlData).

pacf (controlData)

Następnie używam Dickey-Fuller, aby sprawdzić, czy dane nie są stacjonarne:

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

Mogę więc założyć, że dane to ARIMA (2,0, *). Następnie użyć, auto.arima(controlData)aby spróbować jak najlepiej dopasować?

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

Tak więc, mimo że przeszłe i przyszłe dane to ARIMA (1,1,1), mogę ulec pokusie sklasyfikowania ich jako ARIMA (2,0,1). tsdata(auto.arima(controlData))też wygląda dobrze.

Oto, co znalazłby poinformowany modelarz:

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) Dlaczego te kryteria informacyjne są lepsze niż wybrany model auto.arima(controlData)?

Teraz po prostu graficznie porównuję rzeczywiste dane i dwa modele:

plot(controlData)
lines(fitted(naiveFit), col = "red")
lines(fitted(informedFit), col = "blue")

tsPlots

2) Jako adwokat diabła, jakie konsekwencje zapłaciłbym, stosując model ARIMA (2, 0, 1) jako model? Jakie jest ryzyko tego błędu?

3) Najbardziej niepokoją mnie jakiekolwiek implikacje dla prognoz na wiele okresów. Zakładam, że byłyby mniej dokładne? Szukam tylko dowodu.

4) Czy zaproponowałbyś alternatywną metodę wyboru modelu? Czy są jakieś problemy z moim rozumowaniem jako „niedoinformowanego” modelarza?

Jestem naprawdę ciekawy, jakie są inne konsekwencje tego rodzaju błędnej klasyfikacji. Szukałem niektórych źródeł i nic nie znalazłem. Cała literatura, którą mogłem znaleźć, dotyczy tylko tego tematu, zamiast tego stwierdzenie, że dane powinny być nieruchome przed wykonaniem ARiMR, a jeśli są niestacjonarne, to należy je różnicować d razy.

Dzięki!

Clark Henry
źródło
Mam wrażenie, że jest to analogiczne do założenia „błędów ortogonalnych” w regresji przekrojowej (tzn. Wpływa na błędy standardowe, ale nie na współczynniki), ale naprawdę interesuje mnie odpowiedź.
shadowtalker

Odpowiedzi:

11

Mam wrażenie, że na to pytanie nie ma unikalnej, w pełni ogólnej odpowiedzi, więc zbadam tylko najprostszy przypadek i to w nieco nieformalny sposób.

Załóżmy, że prawdziwym mechanizmem generowania danych jest z zwykle składową białego szumu o średniej zerowej iid, . Powyższe implikuje również to

(1)yt=yt-1+ut,t=1,...,T.,y0=0
utmi(ut2))=σu2)

(2)yt=ja=1tuja

Możemy określić model, nazywają go modelowaćZA

(3)yt=βyt-1+ut,t=1,...,T.,y0=0

i otrzymujemy oszacowanie dla postulowanego (omówimy metodę szacowania tylko w razie potrzeby).β^β

Tak więc będzie przewidywanie -wyprzedzeńk

(4)y^T.+k=β^kyT.

i jego MSE będzie

M.S.miZA[y^T.+k]=mi(β^kyT.-yT.+k)2)

(5)=mi[(β^k-1)yT.-ja=T.+1T.+kuja]2)=mi[(β^k-1)2)yT.2)]+kσu2)

(zanika środkowa część kwadratu, a także iloczyny przyszłych błędów).

Powiedzmy teraz, że różnicowaliśmy nasze dane i określiliśmy modelb

(6)Δyt=γΔyt-1+ut

i uzyskałem oszacowanie . Nasz zróżnicowany model można napisaćγ^

(7)yt=yt-1+γ(yt-1-yt-2))+ut

więc prognozując poziom tego procesu, będziemy mieli

y^T.+1=yT.+γ^(yT.-yT.-1)

co w rzeczywistości, biorąc pod uwagę prawdziwy MZD będzie

(8)y^T.+1=yT.+γ^uT.

Jest to łatwe do sprawdzenia, a następnie, że dla modelu ,b

y^T.+k=yT.+(γ^+γ^2)+...+γ^k)uT.

Oczekujemy teraz, że biorąc pod uwagę każdą „sprawdzoną i wypróbowaną” procedurę szacunkową, uzyskamy ponieważ jej prawdziwa wartość wynosi , z wyjątkiem sytuacji, gdy mamy za mało danych lub w bardzo „złym” kształcie . Możemy więc powiedzieć, że w większości przypadków będziemy mieli|γ^|<10

(9)y^T.+k=yT.+γ^-γ^k+11-γ^uT.

a więc

(10)M.S.mib[y^T.+k]=mi[(γ^-γ^k+11-γ^)2)uT.2)]+kσu2)

podczas gdy powtarzam dla wygody

(5)M.S.miZA[y^T.+k]=mi[(β^k-1)2)yT.2)]+kσu2)

Tak więc, aby zróżnicowany model działał lepiej pod względem przewidywania MSE, chcemy

M.S.mib[y^T.+k]M.S.miZA[y^T.+k]

mi[(γ^-γ^k+11-γ^)2)uT.2)]mi[(β^k-1)2)yT.2)]

Podobnie jak w przypadku estymatora w modelu , rozszerzamy tę samą uprzejmość na estymator w modelu : słusznie oczekujemy, że będzie „bliski jedności”. bZAβ^

Oczywiste jest, że jeśli tak się stanie, że , ilość po prawej stronie nierówności będzie miała tendencję do zwiększania się bez ograniczeń, ponieważ , liczba kroków do prognozy, wzrośnie. Z drugiej strony ilość po lewej stronie pożądanej nierówności może wzrosnąć wraz ze wzrostem , ale ma górną granicę . Więc w tym scenariuszu oczekujemy differenced modelu Fair lepsze pod względem przewidywania MSE w porównaniu do modelu . β^>1kkbZA

Załóżmy jednak, że bardziej korzystny jest przypadek modelu , gdzie . Wówczas ilość po prawej stronie również jest związana. Następnie jako musimy sprawdzić, czyZAβ^<1k

mi[(γ^1-γ^)2)uT.2)]mi[yT.2)]=T.σu2)??

( jest wygodą - w rzeczywistości obie wielkości będą już bliskie swojej supremie już dla małych wartości ). kk

Zauważ, że termin powinien być „raczej bliski” , więc model ma przewagę nad tym aspektem. (γ^1-γ^)2)0b

Nie możemy oddzielić pozostałej oczekiwanej wartości, ponieważ estymator nie jest niezależny od . Ale możemy przekształcić nierówność wγ^uT.

Cov[(γ^1-γ^)2),uT.2)]+mi[(γ^1-γ^)2)]σu2)T.σu2)??

Cov[(γ^1-γ^)2),uT.2)](T.-mi[(γ^1-γ^)2)])σu2)??

Oczekuje się, że kowariancja po lewej stronie będzie niewielka, ponieważ estymator zależy od wszystkich błędówPo drugiej stronie nierówności pochodzi ze stacjonarnego zestawu danych, więc oczekuje się, że oczekiwana wartość powyższej funkcji będzie znacznie mniejsza niż wielkość próbki (ponieważ więcej w tej funkcji będzie się wahać w ). T γ (0,1)γ^T.γ^(0,1)

Podsumowując, nie dyskutując o żadnej konkretnej metodzie szacowania, uważam, że byliśmy w stanie nieformalnie wykazać, że zróżnicowany model powinien działać lepiej pod względem przewidywania MSE.

Alecos Papadopoulos
źródło
1

To jest dobre pytanie.

Jak rozumiem, właśnie zastanawiałeś się nad pacf, ale to nie wystarczy. Zarówno ACF, jak i PACF są niezbędne, aby wybrać najlepszy model.

Z drugiej strony testy stacjonarne są słabe i wrażliwe i wymagają przetestowania dużej liczby opóźnień.

Ponadto zaleca się, aby szeregi czasowe były nieruchome przed zastosowaniem dowolnego modelu. Z grubsza mówiąc, modele ARIMA biorą pod uwagę szczególny przypadek niestacjonarności (najlepiej w modzie).

Co do twoich pytań, nie jestem pewien co do funkcji auto.arima, ale jestem pewien, że liczba punktów danych w twoim przykładzie jest niewielka. Symulacja modelu przy użyciu dużej liczby punktów danych dobrze odpowie na twoje pytania. Radzę również rozważyć ACF szeregów czasowych, a także PACF. Przy wyborze modelu ogólną zasadą jest wybór najprostszego modelu (zwróć uwagę, że najprostszy model po unieruchomieniu szeregów czasowych).

Odsyłam cię do tego odniesienia. Ta książka nie odpowiada na wszystkie twoje pytania, ale daje pewne wskazówki.

----- sekcja uzupełniająca ------- @nsw biorąc pod uwagę trend w twoich danych. Jeśli weźmiesz pod uwagę model stacjonarny, spowoduje to prognozę w górę / w dół, ale w rzeczywistości modele ARMA są zaprojektowane do przewidywania płaskich danych. Zmieniłem twój kod, aby odzwierciedlić tę różnicę:

wymagają („prognozy”)

wymagają („serów”)

controlData <- arima.sim (lista (kolejność = c (1,1,1), ar = .5, ma = .5), n = 1000 )

acf (controlData)

ts.plot (controlData)

naiveFit <- arima (controlData, order = c (2,0,1))

trueFit <- arima (controlData, order = c (1,1,1))

PrnaiveFit <-forecast.Arima (naiveFit, 10)

PrtrueFit <- prognozy.Arima (trueFit, 10)

matplot (cbind (PrnaiveFit $ mean, PrtrueFit $ mean), type = 'b', col = c ('red', 'green'), ylab = c ('przewidzieć jon'), pch = c ('n', „t”))

TPArrow
źródło
1
Pytanie dotyczy tego , dlaczego preferuje się „uszeregowanie szeregów czasowych”. To tak naprawdę nie odpowiada na to pytanie.
shadowtalker
@ssdecontrol Masz ogólnie rację. Naprawdę bardziej martwię się dorozumianymi konsekwencjami dla przewidywania po błędnym sprecyzowaniu. Ale nie chcę za bardzo walczyć z Hamedem. Nadal odpowiedział na moje ostatnie pytanie: „Czy to właściwy sposób na wybór modelu?”. Ale żeby to jeszcze raz powtórzyć, to mój najmniejszy problem.
Clark Henry