[PYTHON] Passend zu ARMA, ARIMA Modell

Einführung

In diesem Artikel beschreiben wir, wie bestimmte Zeitreihendaten mithilfe von Python an das AR-Modell, das AM-Modell und das ARMA-Modell angepasst werden.

Zu verwendende Funktion

Die Funktion statsmodels.tsa.arima_model.ARMA.fit wird verwendet. Klicken Sie hier für Details (https://www.statsmodels.org/devel/generated/statsmodels.tsa.arima_model.ARMA.fit.html#statsmodels.tsa.arima_model.ARMA.fit)

AR Modellbefestigung

Als Beispiel passen wir das AR (1) -Modell an.

y_t = 1 + 0.5 y_{t-1} + \epsilon_t

$ \ Epsilon_t $ ist jedoch das normale weiße Rauschen mit Dispersion 1. Setzen Sie außerdem $ y_0 = 2 $.

#Ein magischer Zauber, der die Erfassung von Modulen und Grafiken gut aussehen lässt
import matplotlib as mpl
import matplotlib.pyplot as plt
plt.style.use('seaborn')
mpl.rcParams['font.family'] = 'serif'
%matplotlib inline
import numpy as np
import statsmodels.api as sm
import statsmodels.tsa.api as smt
p = print

#Erstellen einer Datenspalte zum Plotten
#Erfassen Sie diesmal 1000-mal Daten
y = np.zeros(1000)
np.random.seed(42)
epsilon = np.random.standard_normal(1000)
y[0] = 2
for t in range(1,1000):
    y[t] = 1 + 0.5 * y[t-1] + epsilon[t]

#Schauen Sie sich die zu zeichnenden Zeitreihendaten an
plt.plot(y)
plt.xlabel('time')
plt.ylabel('value')
plt.title('time-value plot');

Das folgende Diagramm ist dargestellt. img.png

Passen Sie dieses Modell.

mdl = smt.ARMA(y, order=(1, 0)).fit()
p(mdl.summary())

Das Ergebnis ist wie folgt. キャプチャ.PNG Es ist ersichtlich, dass der konstante Term 2,0336 beträgt und der Koeffizient des AR-Modells 0,4930 beträgt, was nahe am tatsächlichen Wert von 2,0,5 liegt. Darüber hinaus war dieses Modell ein AR-Modell, das den konstanten Term 2 enthielt. Wenn jedoch bekannt ist, dass der konstante Term 0 ist,

mdl = smt.ARMA(y, order=(1, 0)).fit(trend='nc')

Und es ist ausreichend.

MA Modellbefestigung

Alles was Sie tun müssen, ist die Nummer in der Reihenfolge =, Teil zu ändern. Zum Beispiel bei der Anpassung an MA (1),

mdl = smt.ARMA(y, order=(0, 1)).fit()

Und es ist ausreichend

ARMA Modellbefestigung

Bei Montage an ARMA (1, 1)

mdl = smt.ARMA(y, order=(1, 1)).fit()

Und es ist ausreichend

Wenn Sie die Reihenfolge von ARMA überhaupt nicht berücksichtigen können

Mit der Funktion sm.tsa.arma_order_select_ic kann die optimale Reihenfolge anhand der Informationsmenge geschätzt werden. Klicken Sie hier für Details zur Funktion (https://www.statsmodels.org/stable/generated/statsmodels.tsa.stattools.arma_order_select_ic.html).

Schätzung der ARMA-Modellreihenfolge

Die Reihenfolge wird unter Verwendung der Zeitreihendaten des oben beschriebenen AR (1) -Modellmodells geschätzt. Mit anderen Worten, wenn Sie schätzen können, dass die Bestellung (1,0) ist, sind Sie erfolgreich.

from statsmodels.tsa.arima_process import arma_generate_sample

y = np.zeros(1000)
np.random.seed(42)
epsilon = np.random.standard_normal(1000)
y[0] = 2
for t in range(1,1000):
    y[t] = 1 + 0.5 * y[t-1] + epsilon[t]

sm.tsa.arma_order_select_ic(y)

Das Ergebnis ist wie folgt. キャプチャ.PNG

Die Reihenfolge (1,0) wurde optimal geschätzt. Die Matrix repräsentiert den Wert von BIC Die Zeilen repräsentieren die AR-Reihenfolge und die Spalten repräsentieren die AM-Reihenfolge.

Wenn Sie AIC verwenden möchten oder wenn Sie sowohl mit AIC als auch mit BIC auswerten möchten, beschreiben Sie Folgendes.

#Bei Verwendung von AIC
sm.tsa.arma_order_select_ic(y, ic='aic')
#Wenn Sie gleichzeitig anhand von zwei Informationsmengenstandards bewerten möchten
sm.tsa.arma_order_select_ic(y, ic=['aic', 'bic'])

Es ist auch möglich, durch Ändern des Maximalwerts der Bestellung eine Vermessung durchzuführen oder zu schätzen, nachdem angenommen wurde, dass der konstante Term = 0 ist.

Recommended Posts

Passend zu ARMA, ARIMA Modell
Zeitreihenanalyse 2 Stabilität, ARMA / ARIMA-Modell
[Einführung in das SEIR-Modell] Versuchen Sie, COVID-19-Daten anzupassen ♬
Modellbefestigung mit lmfit
[Einführung in das Modell der Infektionskrankheiten] Ich habe versucht, zu passen und zu spielen ♬
[Einführung in das SIR-Modell] Betrachten Sie das passende Ergebnis von Diamond Princess ♬
So konvertieren Sie das Tensorflow-Modell in Lite