2017-03-09 4 views
0

Ich versuche, eine saisonale Zeitreihen mit SARIMAX vorherzusagen. Die Zeitreihe besteht aus täglichen Maximalwerten für die PV-Einspeisung, was zur Annahme einer 365-Tage-Periodizität führt.Statsmodels SARIMAX: Wie kann ich mit dem Maxlag-Fehler umgehen?

Hier ist mein Code:

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

Ich habe s in seasonal_order bis 365 wegen meiner Periodizität. Auch setze ich die Variablen p, d, q, bzw. P, D, Q nach einigen Vorüberlegungen. Mein Problem ist, dass der Code nach der Ausführung des folgende Fehler gezogen wird:

ValueError: maxlag should be < nobs 

Wenn ich den Wert für s abgesetzt von 365 150 bis dh, es funktioniert, aber das Ergebnis ist schlecht, da dieser isn‘ t meine Saisonalität überhaupt. Die Frage ist, wo sind Maxlag oder Nobs definiert und kann ich sie entsprechend ändern?

Das docstring der SARIMAX Funktion sagt nur etwa Quartals- oder Monatsdaten und nicht die Tagesdaten. Hat jemand Erfahrung mit SARIMAX in Arbeit und bereits mit einer Zeitreihe haben die Prognosen auf Basis der täglichen Werte? Ich habe das Internet durchforstet, um das Problem zu lösen, aber ich kann nichts hilfreiches finden.

ähnliche Fragen wurden bereits hier oben How to set maxlag when Forecasting Sales for smaller data in SARIMAX? und hier How to change maxlag for ARMAX.predict?

Aber ich verstehe nicht, wie dieses Problem in meinem Fall zu überwinden, da ich keine exogenen Werte zu begehen.

Ich baute auch ein Modell basierend auf ARIMA, mit denen ich im Stande bin, richtige Vorhersagen zu machen. Da ich keine nicht-saisonale Zeitreihe habe, dachte ich, es wäre eine gute Idee, SARIMAX zu verwenden, um noch bessere Ergebnisse zu erzielen. Leider kann ich diesen Fehler nicht beheben.

Vielen Dank für Ihre Hilfe im Voraus!

+0

, wie viele Jahre Daten haben Sie? – user333700

+1

Entschuldigung, dachte ich habe das erwähnt. Ich habe 2,5 Jahre Daten. – carlsberg

+0

Offensichtlich gibt es ein Problem mit der Einstellung von Q = 1 und s = 365 zur gleichen Zeit. Mit Q = 0 und s = 365 funktioniert es. Obwohl ich das nicht verstehe. Soweit ich verstanden habe, habe ich in einem saisonalen ARIMA-Modell drei weitere Knöpfe zum Spielen, nämlich P, Q, D. Die drei dürfen nicht größer als 1 sein. Einstellen Q = 1 bedeutet, dass ich mit s = 365 der Prognose meiner Zeitreihe ein Vielfaches von meiner saisonalen verzögerten Fehler et-s Zugabe. Wenn es nur mit Q Arbeits = 0 habe ich mehr keine Saisonalität ?! – carlsberg

Antwort

1

Sie benötigen mehrere Jahre (Voll saisonale Zyklen), um den saisonalen Teil eines SARIMAX abschätzen zu können, https://github.com/statsmodels/statsmodels/issues/3529 sehen.

Als Alternative Sie einen Spline oder Fourierreihe nutzen, um die saisonalen Muster wie exog zu modellieren. Siehe zum Beispiel http://robjhyndman.com/hyndsight/longseasonality/

Hier ist ein Entwurfs-Notizbuch, das Patsy-Formel verwendet, um einen saisonalen Spline für OLS und ARMA zu erstellen. SARIMAX wird auf die gleiche Weise arbeiten. https://gist.github.com/josef-pkt/1ea164439b239b228557

+0

Danke für die Antwort. Ich werde prüfen, ob das hilft. – carlsberg

Verwandte Themen