Erreurs dans l'optim lors de l'ajustement du modèle arima dans R

8

J'utilise la méthode arima du package de statistiques de R avec ma série temporelle de 17376 éléments. Mon objectif est d'obtenir la valeur du critère AIC, j'ai observé lors de mon premier test ceci:

 ts <- arima(serie[,1], order = c(2,1,1), seasonal = list(order=c(2,0,1),period = 24), 
         method = "CSS", optim.method = "BFGS",)
> ts$coef
           ar1        ar2        ma1       sar1       sar2       sma1 
     0.8883730 -0.0906352 -0.9697230  1.2047580 -0.2154847 -0.7744656 
    > ts$aic
[1] NA

Comme vous pouvez le voir, l'AIC n'est pas défini. A propos de l'AIC, "Aide" dans R a dit qu'il ne pouvait être utilisé qu'avec "ML". Cependant, cela arrive:

> ts <- arima(serie[,1], order = c(2,1,1), seasonal = list(order=c(2,0,1),period = 24), 
          method = "ML", optim.method = "BFGS",)

Error en optim(init[mask], armafn, method = optim.method, hessian = TRUE,  : 
  non-finite finite-difference value [1]

Plus: warning messages lost
In log(s2) : There have been NaNs

Je ne comprends pas ce qui se passe. J'aimerais également en savoir plus sur le paramètre "méthode d'ajustement".

Cyberguille
la source
1
Pouvez-vous inclure la représentation graphique de vos données?
mpiktas
3
Extraire les paramètres de la solution CSS et les passer comme valeurs de départ au solveur ML (via l' optim.controlargument) aurait de bonnes chances d'éviter ce problème. Je n'ai pas testé cela car vous ne fournissez pas d'exemple reproductible de la difficulté.
whuber
@whuber c'est la bonne direction. Dans certains livres d'économétrie, il est dit que les valeurs des paramètres de solution CSS sont d'abord utilisées comme valeurs initiales pour la fonction objectif ML complète.
Analyste

Réponses:

3

L'ajustement du modèle ARIMA avec un maximum de vraisemblance (méthode = "ML") nécessite d'optimiser (minimiser) la log-vraisemblance négative du modèle ARIMA sur les paramètres. Cela s'avère être un problème d'optimisation contraint car les paramètres doivent aboutir à un modèle stationnaire. Cette contrainte non linéaire est prise en compte avec la log-vraisemblance négative retournant Inf (infini) si la contrainte n'est pas satisfaite. Si le MLE est proche de la limite de la contrainte, l'évaluation de la log-vraisemblance négative près du MLE pourrait renvoyer l'infini. Comme la toile de jute est obtenue avec une différenciation numérique en évaluant la log-vraisemblance négative près du MLE, cela peut entraîner l'erreur de différence finie non finie que vous avez obtenue. Donc, si la toile de jute n'est pas requise, mettez hessian = FALSE. Autrement,

edwardsm88
la source
2

Modifié: si vous votez contre, pouvez-vous expliquer pourquoi? Je suis nouveau ici.

J'ai eu le même problème. J'ai regardé autour de moi en ligne et j'ai trouvé une solution suggérée ailleurs sur Cross Validated. J'ai pensé que je partagerais ici au cas où quelqu'un le voudrait.

Je viens d'ajouter une "méthode =" CSS "" à mon modèle et cela a fonctionné. Par exemple:

model = Arima(x, order=c(1,1,1), seasonal=list(order=c(1,1,1), period=12), xreg=xreg, 
              method="CSS") 

Voici la référence:
auto.arima et Arima (package de prévision)

chriseshleman
la source
Je vois maintenant votre réponse et peut-être pour vos données Cela fonctionne, mais pour mes données non, ma cible principale était de savoir pourquoi l'erreur de ma question s'est produite et pourquoi la méthode ML ne fonctionne pas dans mon cas ou dans d'autres
Cyberguille
3
Je vois que cela résout le problème, mais comment allez-vous utiliser les valeurs AIC pour comparer différents modèles, par exemple ARIMA (1,1,2), sauf si vous utilisez la méthode ML ou CSS-ML? "La théorie de l'AIC exige que la log-vraisemblance ait été maximisée: alors que l'AIC peut être calculé pour les modèles non ajustés par la vraisemblance maximale, leurs valeurs AIC ne doivent pas être comparées". stat.ethz.ch/R-manual/R-devel/library/stats/html/AIC.html L'OP requiert une valeur AIC.
Mumbo.Jumbo
0

Vous semblez avoir un problème avec la convergence des algorithmes. Cela se produit parfois avec l'optimisation numérique.

Voici un lien vers un article wikipedia sur cette méthode d'optimisation particulière:

http://en.wikipedia.org/wiki/Broyden%E2%80%93Fletcher%E2%80%93Goldfarb%E2%80%93Shanno_algorithm

Analyste
la source
3
oui, je sais que cela arrive parfois, mais pourquoi cela fonctionne avec la méthode d'ajustement avec css et avec ml no, et pourquoi css ne fait pas AIC
Cyberguille
1
@GuillermoAyranTorresLores CSS est basé sur la vraisemblance conditionnelle et ne produit pas la même valeur de vraisemblance que la fonction de vraisemblance inconditionnelle produit lorsqu'elle est optimisée pour les mêmes paramètres.
Analyste
1
@GuillermoAyranTorresLores essaie de changer votre problème d'optimisation d'une manière qui prend d'abord les valeurs des paramètres de la solution CSS comme valeurs initiales pour la fonction objectif ML complète.
Analyste