In R (2.15.2) habe ich einmal eine ARIMA (3,1,3) auf eine Zeitreihe und einmal eine ARMA (3,3) auf die einmal differenzierten Zeitreihen gepasst. Die angepassten Parameter unterscheiden sich, was ich der Anpassungsmethode in ARIMA zuschrieb.
Auch das Anpassen einer ARIMA (3,0,3) an dieselben Daten wie ARMA (3,3) führt nicht zu identischen Parametern, unabhängig von der verwendeten Anpassungsmethode.
Ich möchte herausfinden, woher der Unterschied kommt und mit welchen Parametern ich die ARIMA (wenn überhaupt) anpassen kann, um die gleichen Koeffizienten der Anpassung wie von der ARMA zu erhalten.
Beispielcode zur Demonstration:
library(tseries)
set.seed(2)
#getting a time series manually
x<-c(1,2,1)
e<-c(0,0.3,-0.2)
n<-45
AR<-c(0.5,-0.4,-0.1)
MA<-c(0.4,0.3,-0.2)
for(i in 4:n){
tt<-rnorm(1)
t<-x[length(x)]+tt+x[i-1]*AR[1]+x[i-2]*AR[2]+x[i-3]*AR[3]+e[i-1]*MA[1]+e[i-2]*MA[2]+e[i-3]*MA[3]
x<-c(x,t)
e<-c(e,tt)
}
par(mfrow=c(2,1))
plot(x)
plot(diff(x,1))
#fitting different versions. What I would like to get is fit1 with ARIMA()
fit1<-arma(diff(x,1,lag=1),c(3,3),include.intercept=F)
fit2<-arima(x,c(3,1,3),include.mean=F)
fit3<-arima(diff(x,1),c(3,0,3),include.mean=F)
fit4<-arima(x,c(3,1,3),method="CSS",include.mean=F)
fit5<-arima(diff(x,1),c(3,0,3),method="CSS",include.mean=F)
cbind(fit1$coe,fit2$coe,fit3$coe,fit4$coe,fit5$coe)
Edit: Die Verwendung der bedingten Quadratsumme kommt ziemlich nahe, ist aber nicht ganz da. Danke für den Hinweis für die fit1!
Edit2: Ich denke nicht, dass dies ein Duplikat ist. Die Punkte 2 und 3 behandeln andere Probleme als meine, und selbst wenn ich die in Punkt 1 erwähnte Initialisierung durch überschreibe
fit4<-arima(x,c(3,1,3),method="CSS",include.mean=F,init=fit1$coe)
Ich bekomme immer noch verschiedene Koeffizienten
fit1
hat nur 1 MA & 1 AR Parameter: meintest dufit1<-arma(diff(x,1,lag=1),c(3,3),include.intercept=F)
?arima
erwähnen einn.cond
Argument, das die Anzahl der Beobachtungen am Anfang der Reihe angibt, die bei der Berechnung ignoriert werden sollen - vielleicht ist es das. (Was ist eigentlich falsch daran, die maximale Wahrscheinlichkeit zu nutzen?)Antworten:
Im
tseries::arma
Vergleich dazu gibt es drei kleinere Problemestats::arima
, die zu einem geringfügig unterschiedlichen Ergebnis im ARMA-Modell für die differenzierten Serien usingtseries::arma
und ARIMA in führenstats::arima
.stats::arima
Anfangswerte der Koeffizienten: Setzt die anfänglichen AR- und MA-Koeffizienten auf Null, währendtseries::arma
das in Hannan und Rissanen (1982) beschriebene Verfahren verwendet wird, um Anfangswerte der Koeffizienten zu erhalten.Maßstab der Zielfunktion: Die Zielfunktion in
tseries::arma
liefert den Wert der bedingten Quadratsummen, RSS;stats::arima
kehrt zurück0.5*log(RSS/(n-ncond))
.Optimierungsalgorithmus: Standardmäßig wird Nelder-Mead verwendet
tseries::arma
, währendstats::arima
der BFGS-Algorithmus verwendet wird.Das letzte kann durch das Argument
optim.method
in geändert werden, beistats::arima
den anderen muss der Code geändert werden. Im Folgenden zeige ich eine gekürzte Version des Quellcodes (Minimalcode für dieses bestimmte Modell),stats::arima
bei der die drei oben genannten Probleme so geändert wurden, dass sie mit denen in identisch sindtseries::arma
. Nach Behebung dieser Probleme wird das gleiche Ergebnis wie intseries::arma
erzielt.Minimale Version von
stats::arima
(mit den oben genannten Änderungen):Vergleichen Sie nun beide Verfahren und überprüfen Sie, ob das gleiche Ergebnis erzielt wird (erfordert die
x
vom OP im Hauptteil der Frage generierte Reihe ).Unter Verwendung der in folgenden Schritten ausgewählten Anfangswerte
tseries::arima
:Unter Verwendung der in
stats::arima
(Nullen) gewählten Anfangswerte :quelle
Soweit ich das beurteilen kann, ist der Unterschied ausschließlich auf die MA-Bedingungen zurückzuführen. Das heißt, wenn ich Ihre Daten nur mit AR-Begriffen ausrüste, stimmen ARMA der differenzierten Serie und ARIMA überein.
quelle