auto.arima ostrzega NaNs wytworzone przy błędzie standardowym


9

Moje dane to szereg czasowy zatrudnionej populacji, L i przedział czasu, rok.

n.auto=auto.arima(log(L),xreg=year)
summary(n.auto)
Series: log(L) 
ARIMA(2,0,2) with non-zero mean 

Coefficients:
         ar1      ar2      ma1     ma2  intercept    year
      1.9122  -0.9567  -0.3082  0.0254    -3.5904  0.0074
s.e.     NaN      NaN      NaN     NaN     1.6058  0.0008

sigma^2 estimated as 1.503e-06:  log likelihood=107.55
AIC=-201.1   AICc=-192.49   BIC=-193.79

In-sample error measures:
           ME          RMSE           MAE           MPE          MAPE 
-7.285102e-06  1.225907e-03  9.234378e-04 -6.836173e-05  8.277295e-03 
         MASE 
 1.142899e-01 
Warning message:
In sqrt(diag(x$var.coef)) : NaNs produced

dlaczego to się dzieje? Dlaczego auto.arima wybiera najlepszy model z błędem standardowym tych współczynników ar * ma * Not a Number? Czy mimo wszystko ten wybrany model jest ważny?

Moim celem jest oszacowanie parametru n w modelu L = L_0 * exp (n * rok). Wszelkie sugestie dotyczące lepszego podejścia?

TIA

dane:

L <- structure(c(64749, 65491, 66152, 66808, 67455, 68065, 68950, 
69820, 70637, 71394, 72085, 72797, 73280, 73736, 74264, 74647, 
74978, 75321, 75564, 75828, 76105), .Tsp = c(1990, 2010, 1), class = "ts")
year <- structure(1990:2010, .Tsp = c(1990, 2010, 1), class = "ts")
L
Time Series:
Start = 1990 
End = 2010 
Frequency = 1 
 [1] 64749 65491 66152 66808 67455 68065 68950 69820 70637 71394 72085 72797
[13] 73280 73736 74264 74647 74978 75321 75564 75828 76105

Czy możesz opublikować jakieś dane, abyśmy mogli odtworzyć problem?
Rob Hyndman,

@RobHyndman zaktualizował dane
Ivy Lee

Wpisz dput(L)i wklej dane wyjściowe. Dzięki temu replikacja jest bardzo łatwa.
Zach.

Odpowiedzi:


11

Suma współczynników AR jest bliska 1, co pokazuje, że parametry znajdują się w pobliżu krawędzi regionu stacjonarności. Spowoduje to trudności w próbie obliczenia standardowych błędów. Jednak nie ma nic złego w szacunkach, więc jeśli wszystko, czego potrzebujesz, to wartośćL.0, masz to.

auto.arima()wymaga kilku skrótów, aby przyspieszyć obliczenia, a gdy daje model, który wygląda podejrzanie, dobrym pomysłem jest wyłączenie tych skrótów i zobaczenie, co otrzymujesz. W tym przypadku:

> n.auto <- auto.arima(log(L),xreg=year,stepwise=FALSE,approx=FALSE)
> 
> n.auto
Series: log(L) 
ARIMA(2,0,0) with non-zero mean 

Coefficients:
         ar1      ar2  intercept    year
      1.8544  -0.9061    11.0776  0.0081
s.e.  0.0721   0.0714     0.0102  0.0008

sigma^2 estimated as 1.594e-06:  log likelihood=107.19
AIC=-204.38   AICc=-200.38   BIC=-199.15

Ten model jest nieco lepszy (na przykład mniejszy AIC).


1
co się stanie, jeśli nie można obliczyć standardowych błędów i model musi zostać użyty do prognozowania? Czy spowoduje to nieprawidłowe, nierealistycznie małe przedziały ufności w prognozie? W moim przypadku (szereg czasowy o długości 35), używanie approximation=FALSEi stepwise=FALSEnadal produkuje NaN dla SE współczynników.
Mihael,

4

Twój problem wynika z nadmiernej specyfikacji. Prosty model pierwszej różnicy z AR (1) jest wystarczający. Nie jest wymagana struktura MA ani transformacja mocy. Możesz również po prostu modelować to jako model drugiej różnicy, ponieważ współczynnik ar (1) jest bliski 1,0. Wykres rzeczywistej / dopasowania / prognozy jest wprowadź opis zdjęcia tutaji wykres resztkowy  możliwa wartość odstająca / dodatnia w okresie 7z równaniem! wprowadź opis zdjęcia tutajwprowadź opis zdjęcia tutaj. Podsumowując Oszacowanie podlega specyfikacji modelu, która w tym przypadku okazuje się być [[mene mene tekel upharsin]]. Poważnie, sugeruję zapoznanie się ze strategiami identyfikacji modeli i nie próbowanie zlewu kuchennego modeli o nieuzasadnionej strukturze. Czasami mniej znaczy więcej ! Parsimony jest celem! Mam nadzieję że to pomoże ! Aby udzielić dalszych odpowiedzi na pytania „Dlaczego auto.arima wybiera najlepszy model z błędem standardowym tych współczynników ar * ma * Nie jest liczbą? Prawdopodobną odpowiedzią jest to, że rozwiązanie przestrzeni stanów nie jest wszystkim, co może być z powodu przypuszczalne modele, które próbuje. Ale to tylko moje przypuszczenie. Prawdziwą przyczyną niepowodzenia może być twoje założenie log xform. Transformacje są jak narkotyki ... niektóre są dobre dla ciebie, a inne nie. Transformacje mocy powinny być WYŁĄCZNIE wykorzystywane do oddzielenia wartości oczekiwanej od odchylenia standardowego reszt. Jeśli istnieje powiązanie, odpowiednia może być transformacja Box-Coxa (która obejmuje logi). Ciągnięcie transformacji za uszy może nie być dobrym pomysłem.

Czy mimo wszystko ten wybrany model jest ważny? Absolutnie nie !


0

Miałem do czynienia z podobnymi problemami. Spróbuj zagrać przy pomocy optim.control i optim.method. Te NaN są sqrt ujemnych wartości elementów diagonalnych macierzy Hessego. Dopasowanie ARIMA (2,0,2) jest problemem nieliniowym, a optym wydaje się zbieżny do punktu siodłowego (gdzie gradient wynosi zero, ale macierz Hessego nie jest zdefiniowana dodatnio) zamiast maksimum prawdopodobieństwa.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.