foto av Elena koycheva på Unsplash i denna praktiska handledning kommer vi att täcka ämnet tidsseriemodellering med autoregressiva processer.
denna artikel kommer att täcka följande nyckelelement i tidsserieanalys:
- autoregressiv process
- Yule-Walker ekvation
- stationäritet
- Augmented Dicker-Fuller test
se till att ha en Jupyter notebook redo att följa med. Koden och datamängden finns här.
Låt oss komma igång!
lär dig att arbeta med mer komplexa modeller som SARIMAX, VARMAX och tillämpa djupa inlärningsmodeller (LSTM, CNN, ResNet, autoregressiv LSTM) för tidsserieanalys med tillämpad tidsserieanalys i Python!
Autoregressiv Process
en autoregressiv modell använder en linjär kombination av tidigare värden för målet för att göra prognoser. Naturligtvis görs regressionen mot själva målet. Matematiskt uttrycks en AR(p) – modell som:
där:
- p: är ordningen
- C: är en konstant
- Epsilon: noise
ar(p) – modellen är otroligt flexibel och kan modellera många olika typer av tidsseriemönster. Detta visualiseras enkelt när vi simulerar autoregressiva processer.
vanligtvis tillämpas autoregressiva modeller endast på stationära tidsserier. Detta begränsar intervallet för parametrarna phi.
till exempel kommer en AR(1) – modell att begränsa phi mellan -1 och 1. Dessa begränsningar blir mer komplexa när modellens ordning ökar, men de beaktas automatiskt när man modellerar i Python.
simulering av en AR(2) process
låt oss simulera en AR (2) process i Python.
vi börjar med att importera några bibliotek. Inte alla kommer att användas för simuleringen, men de kommer att krävas för resten av denna handledning.
from statsmodels.graphics.tsaplots import plot_pacf
from statsmodels.graphics.tsaplots import plot_acf
from statsmodels.tsa.arima_process import ArmaProcess
from statsmodels.tsa.stattools import pacf
from statsmodels.regression.linear_model import yule_walker
from statsmodels.tsa.stattools import adfuller
import matplotlib.pyplot as plt
import numpy as np%matplotlib inline
Vi använder ArmaProcess-biblioteket för att simulera tidsserierna. Det kräver att vi definierar våra parametrar.
Vi kommer att simulera följande process:
AR(2) process eftersom vi har att göra med en autoregressiv modell av ordning 2 måste vi definiera koefficienten vid lag 0, 1 och 2.
Vi kommer också att avbryta effekten av en glidande medelprocess.
slutligen kommer vi att generera 10 000 datapunkter.
i kod:
ar2 = np.array()
ma = np.array()simulated_AR2_data = ArmaProcess(ar2, ma).generate_sample(nsample=10000)
Vi kan plotta tidsserierna:
plt.figure(figsize=); # Set dimensions for figure
plt.plot(simulated_AR2_data)
plt.title("Simulated AR(2) Process")
plt.show()
And you should get something similar to this:
Now, let’s take a look at the autocorrelation plot (correlogram):
plot_acf(simulated_AR2_data);