auto.arima avertit que les NaN produits sur erreur std


9

Mes données sont une série chronologique de la population occupée, L, et la période de temps, l'année.

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

Pourquoi cela arrive-t-il? Pourquoi auto.arima sélectionnerait le meilleur modèle avec une erreur std de ces coefficients ar * ma * Not a Number? Ce modèle sélectionné est-il valide après tout?

Mon objectif est d'estimer le paramètre n dans le modèle L = L_0 * exp (n * an). Une suggestion d'une meilleure approche?

TIA.

Les données:

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

Pouvez-vous publier des données afin que nous puissions reproduire le problème?
Rob Hyndman

@RobHyndman données mises à jour
Ivy Lee

Veuillez saisir dput(L)et coller la sortie. Cela rend la réplication très facile.
Zach

Réponses:


11

L0

auto.arima()prend quelques raccourcis pour essayer d'accélérer le calcul, et quand il donne un modèle qui semble suspect, c'est une bonne idée de désactiver ces raccourcis et de voir ce que vous obtenez. Dans ce cas:

> 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

Ce modèle est un peu meilleur (un AIC plus petit par exemple).


1
que faire si les erreurs standard ne peuvent pas être calculées et que le modèle doit être utilisé pour la prévision? Cela entraînera-t-il des intervalles de confiance invalides et irréalistes dans une prévision? Dans mon cas (une série chronologique de longueur 35), l'utilisation approximation=FALSEet la stepwise=FALSEproduction de NaN pour les SE des coefficients.
Mihael

4

Votre problème provient d'une sur-spécification. Un simple modèle de première différence avec un AR (1) est tout à fait suffisant. Aucune structure MA ou transformation de puissance n'est requise. Vous pouvez également simplement modéliser cela comme un deuxième modèle de différence, car le coefficient ar (1) est proche de 1,0. Un tracé du réel / ajustement / prévision est entrez la description de l'image iciet un tracé résiduel  valeur aberrante / aberrante possible à la période 7avec équation! entrez la description de l'image icientrez la description de l'image ici. En résumé, l'estimation est soumise à la spécification du modèle qui, dans ce cas, se révèle insuffisant ["mene mene tekel upharsin"]. Sérieusement, je vous suggère de vous familiariser avec les stratégies d'identification des modèles et de ne pas essayer de cuire vos modèles avec une structure injustifiée. Parfois, moins c'est plus! La parcimonie est un objectif! J'espère que cela t'aides ! Pour répondre à vos questions "Pourquoi auto.arima sélectionnerait-il le meilleur modèle avec une erreur std de ces coefficients ar * ma * Pas un nombre? La réponse probable est que la solution de l'espace d'état n'est pas tout ce qu'elle pourrait être à cause de la modèles hypothétiques qu'il essaie. Mais c'est juste ma supposition. La vraie cause de l'échec pourrait être votre hypothèse d'un log xform. Les transformations sont comme des médicaments ..... certaines sont bonnes pour vous et d'autres ne sont pas bonnes pour vous. Les transformations de puissance doivent être utilisées UNIQUEMENT pour découpler la valeur attendue de l'écart type des résidus. S'il existe un lien, une transformation Box-Cox (qui inclut les journaux) peut alors être appropriée. Tirer une transformation derrière vos oreilles n'est peut-être pas une bonne idée.

Ce modèle sélectionné est-il valide après tout? Définitivement pas !


0

J'ai rencontré des problèmes similaires. Essayez de jouer avec optim.control et optim.method. Ces NaN sont des carrés de valeurs négatives d'éléments diagonaux de la matrice de Hesse. L'ajustement d'ARIMA (2,0,2) est un problème non linéaire et optim semblait converger vers un point de selle (où le gradient est nul, mais la matrice de Hesse n'est pas définie positivement) au lieu du maximum de vraisemblance.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.