auto.arima avverte NaNs prodotto su errore std


9

I miei dati sono una serie temporale di popolazione occupata, L e periodo di tempo, anno.

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

perché succede? Perché auto.arima seleziona il modello migliore con errore std di questi coefficienti ar * ma * Not a Number? Questo modello selezionato è valido dopo tutto?

Il mio obiettivo è stimare il parametro n nel modello L = L_0 * exp (n * anno). Qualche suggerimento di un approccio migliore?

TIA.

dati:

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

Puoi pubblicare alcuni dati in modo che possiamo replicare il problema?
Rob Hyndman,

@RobHyndman ha aggiornato i dati
Ivy Lee

Digita dput(L)e incolla l'output. Questo rende la replica molto semplice.
Zach,

Risposte:


11

La somma dei coefficienti AR è vicina a 1, il che mostra che i parametri sono vicini al bordo della regione di stazionarietà. Ciò causerà difficoltà nel tentativo di calcolare gli errori standard. Tuttavia, non c'è nulla di sbagliato nelle stime, quindi se tutto ciò che serve è il valore di , ce l'hai.L0

auto.arima()prende alcune scorciatoie per cercare di accelerare il calcolo e quando dà un modello che sembra sospetto, è una buona idea disattivare quelle scorciatoie e vedere cosa ottieni. In questo caso:

> 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

Questo modello è leggermente migliore (ad esempio un AIC più piccolo).


1
cosa succede se gli errori standard non possono essere calcolati e il modello deve essere utilizzato per la previsione? Ciò causerà intervalli di confidenza non validi e irrealisticamente piccoli in una previsione? Nel mio caso (una serie temporale di lunghezza 35), usare approximation=FALSEe stepwise=FALSEprodurre ancora NaN per SE di coefficienti.
Mihael,

4

Il tuo problema nasce da una specifica eccessiva. Un semplice modello di prima differenza con un AR (1) è abbastanza sufficiente. Non è richiesta alcuna struttura MA o trasformazione di potenza. Potresti anche semplicemente modellarlo come un secondo modello di differenza poiché il coefficiente ar (1) è vicino a 1.0. Un diagramma del reale / adattamento / previsione è inserisci qui la descrizione dell'immaginee un diagramma residuo  possibile valore anomalo / anomalo nel periodo di tempo 7con equazione! inserisci qui la descrizione dell'immagineinserisci qui la descrizione dell'immagine.In sintesi, la stima è soggetta alle specifiche del modello che in questo caso si ritiene carente ["mene mene tekel upharsin"]. Scherzi a parte, ti suggerisco di familiarizzare con le strategie di identificazione dei modelli e di non tentare di affondare in cucina i tuoi modelli con una struttura ingiustificata. A volte meno è di più! La parsimonia è un obiettivo! Spero che sia di aiuto ! Per rispondere ulteriormente alle tue domande "Perché auto.arima seleziona il modello migliore con errore std di questi coefficienti ar * ma * Non un numero? La risposta probabile è che la soluzione spazio-stato non è tutto ciò che potrebbe essere a causa del modelli ipotetici che tenta, ma questa è solo la mia ipotesi. La vera causa del fallimento potrebbe essere la tua assunzione di una forma di log. Le trasformazioni sono come droghe ..... alcune sono buone per te e altre non sono buone per te. Le trasformazioni di potenza dovrebbero essere utilizzate SOLO per disaccoppiare il valore atteso dalla deviazione standard dei residui. Se esiste un collegamento, una trasformazione Box-Cox (che include i registri) potrebbe essere appropriata. Tirare una trasformazione da dietro le orecchie potrebbe non essere una buona idea.

Questo modello selezionato è valido dopo tutto? Sicuramente no!


0

Ho affrontato problemi simili. Prova a giocare con optim.control e optim.method. Questi NaN sono sqrt di valori negativi di elementi diagonali della matrice di Hesse. L'adattamento di ARIMA (2,0,2) è un problema non lineare e l'ottimizzazione sembrava convergere in un punto di sella (dove il gradiente è zero, ma la matrice di Hesse non è definita positivamente) invece del massimo della probabilità.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.