stationaritet og detrending (ADF/KPSS) Lira

stationaritet betyder, at de statistiske egenskaber for en tidsserie, dvs.middelværdi, varians og kovarians, ikke ændres over tid. Mange statistiske modeller kræver, at serien er stationær for at give effektive og præcise forudsigelser.

to statistiske tests ville blive brugt til at kontrollere stationariteten af en tidsserie – forstærket Dickey Fuller (“ADF”) test og KPSS test. Der skal også anvendes en metode til at konvertere en ikke-stationær tidsserie til stationær serie.

denne første celle importerer standardpakker og angiver, at plots skal vises inline.

:
%matplotlib inlineimport numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport statsmodels.api as sm

solpletter datasæt bruges. Den indeholder årlige (1700-2008) data om solpletter fra National Geophysical Data Center.

:
sunspots = sm.datasets.sunspots.load_pandas().data

nogle forbehandling udføres på dataene. Kolonnen ” år ” bruges til at oprette indeks.

:
sunspots.index = pd.Index(sm.tsa.datetools.dates_from_range('1700', '2008'))del sunspots

dataene er plottet nu.

:
sunspots.plot(figsize=(12,8))
:
<AxesSubplot:>
../../../_images / eksempler_notebooks_generated_stationarity_detrending_adf_kpss_8_1.png

ADF-test krit

ADF-test bruges til at bestemme tilstedeværelsen af enhedsrod i serien og hjælper dermed med at forstå, om serien er stationær eller ej. Nul og alternativ hypotese af denne test er:

Nulhypotese: serien har en enhedsrod.

alternativ hypotese: serien har ingen enhedsrod.

hvis nulhypotesen ikke blev afvist, kan denne test give bevis for, at serien ikke er stationær.

der oprettes en funktion til at udføre ADF-testen i en tidsserie.

:
from statsmodels.tsa.stattools import adfullerdef adf_test(timeseries): print ('Results of Dickey-Fuller Test:') dftest = adfuller(timeseries, autolag='AIC') dfoutput = pd.Series(dftest, index=) for key,value in dftest.items(): dfoutput = value print (dfoutput)

KPSS test krist

KPSS er en anden test til kontrol af stationariteten i en tidsserie. Null-og alternativhypotesen for KPSS-testen er modsat ADF-testen.

Nulhypotese: processen er trend stationær.

alternativ hypotese: serien har en enhedsrod (serien er ikke stationær).

der oprettes en funktion til at udføre KPSS-testen i en tidsserie.

:
from statsmodels.tsa.stattools import kpssdef kpss_test(timeseries): print ('Results of KPSS Test:') kpsstest = kpss(timeseries, regression='c', nlags="auto") kpss_output = pd.Series(kpsstest, index=) for key,value in kpsstest.items(): kpss_output = value print (kpss_output)

ADF-testene giver følgende resultater-teststatistik, p-værdi og den kritiske værdi ved 1%, 5% og 10% konfidensintervaller.

ADF-test anvendes nu på dataene.

:
adf_test(sunspots)
Results of Dickey-Fuller Test:Test Statistic -2.837781p-value 0.053076#Lags Used 8.000000Number of Observations Used 300.000000Critical Value (1%) -3.452337Critical Value (5%) -2.871223Critical Value (10%) -2.571929dtype: float64

baseret på signifikansniveauet på 0,05 og p-værdien af ADF-test kan nulhypotesen ikke afvises. Derfor er serien ikke-stationær.

KPSS – testene giver følgende resultater-teststatistik, p-værdi og den kritiske værdi ved 1%, 5% og 10% konfidensintervaller.

KPSS-test anvendes nu på dataene.

:
kpss_test(sunspots)
Results of KPSS Test:Test Statistic 0.669866p-value 0.016285Lags Used 7.000000Critical Value (10%) 0.347000Critical Value (5%) 0.463000Critical Value (2.5%) 0.574000Critical Value (1%) 0.739000dtype: float64

baseret på signifikansniveauet på 0,05 og p-værdien af KPSS-test er der bevis for at afvise nulhypotesen til fordel for Alternativet. Derfor er serien ikke-stationær i henhold til KPSS-testen.

det er altid bedre at anvende begge testene, så det kan sikres, at serien er virkelig stationær. Mulige resultater ved anvendelse af disse stationære tests er som følger:

sag 1: Begge tests konkluderer, at serien ikke er stationær – serien er ikke stationær
sag 2: begge tests konkluderer, at serien er stationær – serien er stationær
sag 3: KPSS angiver stationaritet og ADF angiver ikke-stationaritet – serien er trend stationær. Trend skal fjernes for at gøre serien streng stationær. Den detrended serie kontrolleres for stationaritet.
sag 4: KPSS angiver ikke-stationaritet og ADF angiver stationaritet – serien er forskel stationær. Differencing skal bruges til at gøre serien stationær. Den differenced serie kontrolleres for stationaritet.

på grund af forskellen i resultaterne fra ADF-test og KPSS-test kan det udledes, at serien er trend stationær og ikke streng stationær. Serien kan detrended ved differencing eller model montering.

Detrending ved Differencing af kur

det er en af de enkleste metoder til detrending af en tidsserie. En ny serie konstrueres, hvor værdien på det aktuelle tidstrin beregnes som forskellen mellem den oprindelige observation og observationen på det foregående tidstrin.

forskelle anvendes på dataene, og resultatet er afbildet.

:
sunspots = sunspots - sunspots.shift(1)sunspots.dropna().plot(figsize=(12,8))
:
<AxesSubplot:>
../../../_images / eksempler_notebooks_generated_stationarity_detrending_adf_kpss_20_1.png

ADF-test anvendes nu på disse forringede værdier, og stationaritet kontrolleres.

:
adf_test(sunspots.dropna())
Results of Dickey-Fuller Test:Test Statistic -1.486166e+01p-value 1.715552e-27#Lags Used 7.000000e+00Number of Observations Used 3.000000e+02Critical Value (1%) -3.452337e+00Critical Value (5%) -2.871223e+00Critical Value (10%) -2.571929e+00dtype: float64

baseret på p-værdien af ADF-test er der bevis for at afvise nulhypotesen til fordel for Alternativet. Derfor er serien streng stationær nu.

KPSS-test anvendes nu på disse forringede værdier, og stationaritet kontrolleres.

:
kpss_test(sunspots.dropna())
Results of KPSS Test:Test Statistic 0.021193p-value 0.100000Lags Used 0.000000Critical Value (10%) 0.347000Critical Value (5%) 0.463000Critical Value (2.5%) 0.574000Critical Value (1%) 0.739000dtype: float64
/home/travis/build/statsmodels/statsmodels/statsmodels/tsa/stattools.py:1911: InterpolationWarning: The test statistic is outside of the range of p-values available in thelook-up table. The actual p-value is greater than the p-value returned. warn_msg.format(direction="greater"), InterpolationWarning

baseret på p-værdien af KPSS-test kan nulhypotesen ikke afvises. Derfor er serien stationær.

konklusion Krit

to test til kontrol af stationariteten i en tidsserie anvendes, nemlig ADF-test og KPSS-test. Detrending udføres ved hjælp af differencing. Trend stationære tidsserier omdannes til strenge stationære tidsserier. Nødvendige prognoser model kan nu anvendes på en stationær tidsserie data.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.