W R (2.15.2) dopasowałem raz ARIMA (3,1,3) na szeregu czasowym i raz ARMA (3,3) na raz zróżnicowanym szeregu czasowym. Dopasowane parametry różnią się, co przypisałem metodzie dopasowania w ARIMA.
Ponadto dopasowanie ARIMA (3,0,3) do tych samych danych co ARMA (3,3) nie da identycznych parametrów, bez względu na zastosowaną metodę dopasowania.
Interesuje mnie określenie, skąd pochodzi różnica i przy pomocy jakich parametrów mogę (jeśli w ogóle) dopasować ARIMA, aby uzyskać takie same współczynniki dopasowania jak w ARMA.
Przykładowy kod do zademonstrowania:
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)
Edycja: Korzystanie z warunkowej sumy kwadratów jest dość bliskie, ale nie jest całkiem możliwe. Dzięki za podpowiedź dla fit1!
Edycja2: Nie sądzę, że jest to duplikat. Punkty 2 i 3 dotyczą innych problemów niż moje, a nawet jeśli zastąpię inicjalizację wymienioną w punkcie 1 przez
fit4<-arima(x,c(3,1,3),method="CSS",include.mean=F,init=fit1$coe)
Nadal otrzymuję różne współczynniki
fit1
ma tylko 1 parametr MA i 1 parametr AR: czy miałeś na myślifit1<-arma(diff(x,1,lag=1),c(3,3),include.intercept=F)
?arima
wymieniająn.cond
argument podający liczbę obserwacji na początku serii, które należy zignorować podczas obliczania - być może to jest to. (Co jest nie tak z maksymalnym prawdopodobieństwem?)Odpowiedzi:
Istnieją trzy drobne problemy w
tseries::arma
porównaniu dostats::arima
tego, które prowadzą do nieco innego wyniku w modelu ARMA dla różnych serii przy użyciutseries::arma
i ARIMA wstats::arima
.Początkowe wartości współczynników:
stats::arima
ustawia początkowe współczynniki AR i MA na zero, atseries::arma
do uzyskania wartości początkowych współczynników stosuje się procedurę opisaną w Hannan i Rissanen (1982).Skala funkcji celu: funkcja celu w
tseries::arma
zwraca wartość warunkowych sum kwadratów, RSS;stats::arima
zwraca0.5*log(RSS/(n-ncond))
.Algorytm optymalizacji: domyślnie używany jest Nelder -Mead
tseries::arma
, astats::arima
stosuje algorytm BFGS.Ten ostatni może być zmieniony poprzez argument
optim.method
wstats::arima
ale inni wymagałoby modyfikacji kodu. Poniżej pokazuję skróconą wersję kodu źródłowego (minimalny kod dla tego konkretnego modelu), wstats::arima
której trzy wyżej wymienione problemy zostały zmodyfikowane, aby były takie same jak wtseries::arma
. Po rozwiązaniu tych problemówtseries::arma
uzyskuje się taki sam wynik jak w .Minimalna wersja
stats::arima
(ze zmianami wymienionymi powyżej):Teraz porównaj obie procedury i sprawdź, czy dają ten sam wynik (wymaga serii
x
wygenerowanej przez OP w treści pytania).Przy użyciu początkowych wartości wybranych w
tseries::arima
:Używając początkowych wartości wybranych w
stats::arima
(zerach):źródło
O ile wiem, różnica wynika całkowicie z warunków MA. Oznacza to, że gdy dopasuję twoje dane tylko do warunków AR, ARMA różnych serii i ARIMA zgadzają się.
źródło