Ich habe eine Zeitreihe, die ich mit Pythons Statistikmodellen ARIMA api modellieren möchte. Wenn ich Folgendes bewerbe:
from statsmodels.tsa.arima_model import ARIMA
model = ARIMA(data['Sales difference'].dropna(), order=(2, 1, 2))
results_AR = model.fit(disp=-1)
Ich erhalte folgende Fehlermeldung:
ValueError: The computed initial AR coefficients are not stationary
You should induce stationarity, choose a different model order, or you can
pass your own start_params.
Aber ich habe die Daten schon differenziert:
data['Sales'] = data['Sales'] - data['Sales'].shift()
Was kann ich noch tun, um Stationarität zu induzieren?
Und welchen Test führt die ARIMA-API aus, um festzustellen, dass die Daten nicht stationär sind?
Meine ursprüngliche Zeitreihe sieht aus wie:
time-series
forecasting
arima
statsmodels
Skander H.
quelle
quelle
Antworten:
Sie fragten: "Was kann ich noch tun, um Stationarität zu induzieren?" Wenn eine Serie eine Pegelverschiebung (Symptom) aufweist, ist dies ein Beispiel für Nichtstationarität. Das richtige Mittel ist, die Daten zu "de-bedeuten", um sie nicht zu unterscheiden. Zusätzlich kann eine Reihe eine Änderung des deterministischen Trends oder einen saisonalen Impuls aufweisen, der durch Interventionserkennungsschemata korrigiert werden kann. Wenn sich die Parameter der Serie im Laufe der Zeit ändern (Symptom), besteht die richtige Abhilfe darin, die Bruchstellen über einen Chow-Test zu finden und den neuesten Satz oder eine Form eines Schwellenwertmodells (TAR) zu verwenden . Wenn eine Serie eine Änderung der Fehlervarianz im Laufe der Zeit aufweist (Symptom), kann das richtige Mittel WLS, eine Form von GLS oder eine Form von Leistungstransformation sein oder wenn diese relativ einfachen Abhilfemaßnahmen in irgendeiner Form eines GARCH-Modells fehlschlagen.
Wenn Sie Ihre Originaldaten veröffentlichen, kann ich Ihnen möglicherweise weiterhelfen.
quelle
Lesen Sie sorgfältig: Es heißt nicht, dass die Zeitreihe nicht stationär ist. Es heißt, dass die Anfangskoeffizienten nicht stationär sind (was vermutlich bedeutet, dass sie keinen stationären Prozess beschreiben).
Sie könnten versuchen, Ihre eigenen Vermutungen für Startwerte anzustellen, wie es nahelegt. Aber ich vermute, dass es in erster Linie schlechte Startwerte wählt, weil das Modell falsch spezifiziert ist. Wenn Sie die Zeitreihen bereits differenziert haben, möchten Sie wahrscheinlich auch nicht die Integrationsreihenfolge 1 angeben. Sie meinen wahrscheinlich order = (2, 0, 2), nicht order = (2, 1, 2).
quelle
In einem Zeitreihensignal kann Stationarität unter Verwendung von Fenstern eingeführt werden. Sie können Ihr einzelnes Zeitreihensignal mithilfe einer guten Fenstertechnik mit Überlappung in kleinere Signale aufteilen. Eine Fensterung ist erforderlich, um Störspitzen im Frequenzbereich zu vermeiden, und eine Überlappung ist erforderlich, um Signalenergie zu sparen. Typischerweise hat ein Sprachsignal (8-kHz-Abtastfrequenz) 30-ms-Rahmen, was 240 Abtastwerte pro Rahmen ergibt. Dies wird unter Verwendung eines Hamming-Fensters mit 50% Überlappung gewunden.
quelle
Die differenzierte Zeitreihe ist nicht stationär, da sie keine konstante Varianz aufweist. Sie könnten eine logarithmische Differenzierung versuchen.
quelle