2017-03-09 1 views
0

J'essaie de prédire une série temporelle saisonnière en utilisant SARIMAX. La série chronologique consiste en des valeurs maximales quotidiennes pour l'injection PV, ce qui conduit à supposer une périodicité de 365 jours.Statsmodels SARIMAX: Comment gérer l'erreur maxlag?

Voici mon code:

mod= SARIMAX(realy.Max, order=(0,1,1), seasonal_order=(0,1,1,365)) 
results_SARIMAX = mod.fit(disp= -1) 

Je mets s en seasonal_order à 365 à cause de ma périodicité. J'ai aussi mis les variables p, d, q, respectivement P, D, Q en fonction de quelques pré-considérations. Mon problème est que, après l'exécution du code l'erreur suivante est tirée:

ValueError: maxlag should be < nobs 

Quand je mets la valeur s vers le bas de 365 à-dire 150, il fonctionne, mais le résultat est mauvais, puisque ce n » t ma saisonnalité du tout. La question est, où sont définis maxlag ou nobs et suis-je capable de les changer en conséquence?

La docstring de la fonction SARIMAX ne parle que de données trimestrielles ou trimestrielles et non de données quotidiennes. Est-ce que quelqu'un a déjà travaillé avec SARIMAX et a déjà fait des prédictions avec une série temporelle basée sur les valeurs quotidiennes? J'ai parcouru Internet pour résoudre le problème, mais je ne trouve rien d'utile.

Des questions similaires sont déjà venus ici How to set maxlag when Forecasting Sales for smaller data in SARIMAX? et ici How to change maxlag for ARMAX.predict?

Mais je ne comprends pas comment résoudre ce problème dans mon cas, puisque je n'ai pas de valeurs exogènes à commettre.

J'ai également construit un modèle basé sur ARIMA avec lequel je suis capable de faire des prédictions correctes. Comme je n'ai pas de séries chronologiques non saisonnières, j'ai pensé que ce serait une bonne idée d'utiliser SARIMAX pour obtenir de meilleurs résultats. Malheureusement, je ne suis pas capable de gérer cette erreur.

Merci pour votre aide à l'avance!

+0

Combien d'années de données avez-vous? – user333700

+1

Désolé, j'ai pensé que je l'ai mentionné. J'ai 2,5 ans de données. – carlsberg

+0

Apparemment, il y a un problème avec Q = 1 et s = 365 en même temps. En définissant Q = 0 et s = 365, cela fonctionne. Cependant, je ne comprends pas ça. Pour autant que je comprenne, dans un modèle ARIMA saisonnier, j'ai trois autres boutons à jouer, qui sont P, Q, D. Les trois ne doivent pas être plus grands que 1 chacun. En définissant Q = 1, j'ajoute un multiple de mes erreurs saisonnières et-s avec s = 365 à la prévision de ma série temporelle. Quand ça ne marche qu'avec Q = 0, je n'ai plus de saisonnalité ?! – carlsberg

Répondre

1

Vous avez besoin de plusieurs années (cycles saisonniers complets) pour pouvoir estimer la partie saisonnière d'un SARIMAX, voir https://github.com/statsmodels/statsmodels/issues/3529. Comme alternative, vous pouvez utiliser une série de splines ou de Fourier pour modéliser le modèle saisonnier en tant que exog. Voir par exemple http://robjhyndman.com/hyndsight/longseasonality/

Voici un brouillon de brouillon utilisant une formule Patsy pour créer une spline saisonnière pour OLS et ARMA. SARIMAX fonctionnera de la même manière. https://gist.github.com/josef-pkt/1ea164439b239b228557

+0

Merci pour la réponse. Je vais vérifier si cela aide. – carlsberg