Zakaj je ta priljubljena časovna serija stacionarna?

Študija razširjenega Dickey-Fullerja (ADF) test iz čudnega primera

Foto: Jan Huber on Unsplash

Stacionarnost je eden najbolj temeljnih konceptov za analizo časovnih vrst. Na splošno bo stacionarnost zagotovila odlične lastnosti za modeliranje časovnih vrst z različnimi statističnimi metodami. Razširjeni Dickey-Fuller (ADF) test je verjetno najpogosteje uporabljen pristop za preverjanje stacionarnosti.

Na spletu je ogromno člankov na to temo. Ne bom izgubljal vašega časa z osnovnim uvodom, kot je definicija stacionarnosti, kako narediti teste ADF itd. V tej objavi bom delil svoje potovanje raziskovanja testa ADF, potem ko sem naletel na čuden primer v aplikaciji.

Učna pot, ki jo bom prikazal, je značilna za učenje podatkovne znanosti. Prvič, mislimo, da razumemo orodje ali koncept, vendar le potrdimo in si zapomnimo izraz. Ko ga uporabimo za dejanske podatke, lahko odkrijemo nepričakovane, zahtevne težave, ki nas prisilijo k nadaljnjemu raziskovanju in nadaljnjemu razumevanju.

Ponovno bom delil svojo kodo na GitHubu; končno poiščite povezavo v referenčnem delu.

Začetek nepričakovanega potovanja

Prejšnji dan sem delal z nekaj časovnimi serijami. Slika 1 prikazuje enega od njih. Ne obstaja dvojnik obstaja trend naraščanja, in tudi varianca se s časom spreminja. S to jasno vizualizacijo mi ni bilo treba testirati stacionarnosti. Iz nekega razloga, ki se ga ne spomnim, sem vseeno poskusil s testom ADF. Presenetljivo je, da je p-vrednost skoraj 0, kar pomeni, da bi moral zavrniti ničelno hipotezo in sprejeti, da je stacionarna.

Slika 1. Časovna vrsta s trendom (Slika avtorja)

To je nenavadno. Rezultat testa se je zdel napačen. Želel sem raziskati, kaj se dogaja za testom ADF. Prvi korak, ki sem ga poskusil, je bil ponoviti to težavo s sintetičnimi podatki. Z naslednjo kodo sem ustvaril nekaj testnih podatkov. Koda je samo posnemala vedenje počasnega trenda, ne pa tudi sezonskosti.

Na sliki 20,000 je 1 opazovanj, kar pomeni, da gre trend izjemno počasi navzgor. Ustvarim časovno vrsto z majhnim naklonom 0.0005. Srednja vrednost časovne serije se po 0 opazovanjih dvigne od približno 0.5 do 1000. Nato ga preizkusimo s funkcijo adfuller() iz statsmodels.tsa.stattools s privzetimi parametri. P-vrednost je 0.01 in "problem" se ponovi. Slika 2 prikazuje rezultat. Lahko zanemarite naslov in se osredotočite na naraščajoči trend. Pozneje bom razložil, zakaj imamo p-vrednosti iz treh različnih testov ADF.

Slika 2. Sintetična časovna serija z rezultatom testa ADF (slika avtorja)

Matematika za testom DF

Moramo se poglobiti, da vidimo, kaj točno počne test ADF. Izkazalo se je, da njegovo matematično ozadje ni zapleteno. Prvič, test ADF je le napredna različica Dickey-Fullerjev test. Obstajajo tri glavne različice testa DF (iz Wikipedije):

Različica 1: Preizkus enotskega korena: ∆yᵢ = δyᵢ₋₁ + uᵢ

Različica 2: Preizkus enotskega korena s konstanto: ∆yᵢ = a₀ + δyᵢ₋₁ + uᵢ

Različica 3. Preizkus za enotski koren s konstantnim in determinističnim trendom: ∆yᵢ = a₀ + a₁*t + δyᵢ₋₁ + uᵢ

V vsaki različici, ničelna hipoteza je, da obstaja enotski koren, δ=0.

Paket Statsmodels podpira vse tri različice s parametrom "regresija".

Za različico 1 je regresija 'n' (brez konstante, brez trenda).

Za različico 2 je regresija 'c' (samo konstanta); to je privzeta nastavitev.

Za različico 3 je regresija 'ct' (konstanta in trend).

Ponovno izvedem test s tremi različnimi nastavitvami in spodaj so novi rezultati.

Za različico 1 je p-vrednost 0.09. Ne smemo zavrniti ničelne hipoteze.

Za različico 2 je p-vrednost 0.01. To smo že obravnavali kot težavo, ker je to privzeta nastavitev.

Za različico 3 je p-vrednost 0.00. To je pričakovano, ker časovna vrsta res je stacionarni z determinističnim trendom.

Torej za ta primer podatkov, če ga preizkusimo z različico 1 (regresija='n'), ne bomo rekli, da stacionarni. Verjetno ne bi smeli uporabiti privzete nastavitve. Morda pa se tudi sprašujete, zakaj je konstantni izraz tukaj naredil tako veliko razliko? Kopajmo več.

Od testa DF do linearne regresije

Na podlagi zgornje definicije je test DF samo linearna regresija. Slika 3 prikazuje vse točke za linearno regresijo. Os Y je ∆yᵢ, os X je yᵢ₋₁ in uᵢ je ostanek. Različica 1 pomeni, da moramo prilagoditi črto brez prestrezanja (brez konstante). Različica 2 pomeni, da moramo linijo prilagoditi s presekom (konstanto).

Slika 3. ∆yᵢ in yᵢ₋₁ (slika avtorja)

Skitlearn Linearna regresija dobro podpira ti dve možnosti s parametrom fit_intercept. Pod sliko 4 sta dve nameščeni črti. Kot lahko vidite, se črta z odsekom bolje prilega kot črta brez odseka. To je jasno potrdil tudi rezultat R-kvadrat. Upoštevajte tudi, da je naklon oranžne črte manjši od modre črte. Z drugimi besedami, naklon oranžne črte je bližje 0.

Slika 4. Rezultat linearne regresije (slika avtorja)

Razmišljamo lahko tudi z vizualizacijo: točke niso centrirane okoli (0,0), zato prilagojena regresijska premica ne bi smela prehajati (0,0). Presek mora biti večji od 0. Ker je 0 začetna sredina, mora biti ∆y večji od 0, tako da se bo skupna sredina povečala. Če regresijsko premico prisilimo, da gre skozi (0,0), bo premalo ustrezala podatkom, naklon pa se bo zaradi vpliva (0) približal 0,0.

Videli smo, ali vključitev prestreženih vplivov ustreza linearni regresiji. Zakaj način namestitve črte vpliva na rezultate testa ADF in od kod prihaja p-vrednost?

Od linearne regresije do p-vrednosti

Zdaj se malo zapleta. Končna p-vrednost testa DF ni iz p-vrednosti koeficientov iz linearne regresije. V bistvu ima statistika posebno porazdelitev, znano kot tabela Dickey-Fuller. Nato uporabimo MacKinnonovo približno p-vrednost za testno statistiko. Podrobnosti boste morda našli v Izvorna koda Statsmodels.

Ker je ničelna hipoteza δ=0, kar pomeni, da je testiranje naklona prilagojene črte 0. Ni nam treba iti v podrobnosti o tem, kako dobiti p-vrednost. Logična veriga povezave med p-vrednostjo in naklonom (δ v linearni regresiji, ne naklonom trenda) je takšna:

Na splošno, če je naklon daleč od 0, bi morala biti p-vrednost manjša, kar bi verjetneje zavrnilo ničelno hipotezo in predlagalo, da ni enotskega korena in stacionarno. Če je naklon 0 ali zelo blizu 0, bi morala biti p-vrednost višja, kar bi bolj verjetno sprejelo ničelno hipotezo in predlagalo enotski koren in nestacionarnost. Za drugi scenarij Wikipedia pravi: »Preizkusi imajo nizko statistično moč, saj pogosto ne morejo razlikovati med pravimi procesi enotskega korena (δ = 0) in procesi blizu enotskega korena (δ je blizu 0)«. Zato imamo sploh problem. Opravka imamo s procesom skoraj enotskega korena. Različica 1 najde enotski koren, različica 2 pa ne more najti enotskega korena.

Zakaj različica 1 deluje za zgornji primer?

Različica 1 deluje za podatke na sliki 2, ker naredimo naklon bližje 0, zato je p-vrednost višja.

Vendar ne moremo uporabiti različice 1 kot privzete nastavitve. Obstajata dva primera za različico 1 (sili, da gre vrstica skozi (0,0)):

Primer 1: (0,0) je bližje vsem podatkovnim točkam. Če mora premica potekati skozi (0,0), bo premica bolj položna, naklon pa se bo približal 0. Slika 4 prikazuje ta primer. Upoštevajte, da predstavitev na sliki 4 ustreza samo eni spremenljivki yᵢ₋₁, dejanski samodejni podajalnik dokumentov pa ustreza več spremenljivkam zamika.

Primer 2: (0,0) je daleč od vseh podatkovnih točk. Če mora premica iti skozi (0,0), morda ne uspemo prilegati; v bistvu je naklon 0, kar pomeni, da ne moremo najti linearne povezave med ∆yᵢ in yᵢ₋₁, tako da bo premica prešla (0,0) in pokrila večino podatkovnih točk. Zato bo rezultat testa pristranski glede na korensko enoto.

Slika 5 spodaj prikazuje primer preizkusa različice 1, ki ni uspel zavrniti ničelne hipoteze (p-vrednost 0.6), podatki pa so stacionarni s povprečjem 10. Slika 6 pojasnjuje razlog. Kot lahko vidite, ne moremo najti premice brez odseka (R-kvadrat je 0), zato je naklon prirejene premice enak 0 (∆yᵢ ni odvisen od yᵢ₋₁).

Slika 5. Različica 1 ni prepoznala stacionarne časovne vrste (slika avtorja)
Slika 6. Linearna regresija ne najde premice brez preseka (mimo (0,0)) (Slika avtorja)

Od testa DF do testa ADF

Zdaj ko razumemo, da je test DF linearna regresija in kako pridobiti p-vrednost iz linearne regresije, pojdimo na ADF. Formula ADF je:

Spet linearna regresija. »Razširjeni« del je, da moramo prilagoditi več koeficientov.

Paket statsmodels omogoča prikaz podrobnega povzetka testa AFT. Slika 7 je rezultat.

Slika 7. Test ADF s podrobnim povzetkom (slika avtorja)

Vidimo 'OLS regresijo' (privzeta rešitev za linearno regresijo) in 17 koeficientov. Nisem navedel največjega zamika, zato bo test poskušal doseči številko na podlagi dolžine časovne serije, ki je 17.

Vgrajen je tudi const (intercept). Vrednost je 0.0596.

Poskusimo implementirati test ADF z uporabo linearne regresije v Scikit-learn. Slika 8 je koda in izhod.

Slika 8. Test ADF (samo del linearne regresije) s Scikit-learn (slika avtorja)

Odsek je 0.0596, drugi koeficienti pa so enaki kot na sliki 7. Linearna regresija v Scikit-learn je navaden OLS. Delamo isto, zato ne preseneča, da so rezultati enaki.

Konec potovanja

Ko sem ugotovil, kako nastaviti parameter, sem preizkusil prvotno časovno vrsto na sliki 1 z uporabo različice 1 (regresija ='n') in dobil p-vrednost 0.08, kar kaže, da ni stacionarna. Upoštevajte, da so podatki na sliki 1 ničelna sredina, tako da si lahko predstavljate, da je (0,0) bližje podatkovnim točkam (∆yᵢ, yᵢ₋₁). V pomoč nam bo uporaba preizkusa različice 1.

Ker je naklon trenda na sliki 1 minimalen, lahko časovno vrsto ponovno vzorčimo s koraki, kar poveča naklon. Če ga na primer preizkusim s štirimi koraki ( value[::4]), ne bo prestal testa ADF s privzeto nastavitvijo (p-vrednost je 0.17 za regression='c').

Problem rešen.

Takeaways

Ne zaupajte slepo rezultatom ADF. Vizualizacija je vaš prijatelj.

Test ADF je preprosta linearna regresija, izvedba statsmodels pa uporablja OLS za rešitev problema regresije. Nato uporabi tabelo Dickey–Fuller, da izvleče p-vrednost, ki potrdi ničelno hipotezo, da je koeficient prve spremenljivke zamika iz prilagojene regresije 0.

Test ADF ima omejitve pri testiranju procesov blizu enotskega korena (δ je blizu 0).

V skladu s tem moramo izbrati ustrezno različico ADF. Na primer, ko vidite stalen trend in želite preizkusiti "trend stacionarno", morate kot parameter izbrati "ct". Če boste ujeli počasen trend za signal, katerega povprečje naj bi bilo 0, kot na sliki 1 in sliki 2, boste morda morali izbrati 'n' kot parameter, da se izognete vplivu prilagajanja prestrezanja. Statsmodeli podpirajo tudi kvantni trend s parametrom 'ctt.' Ta napredna možnost je lahko dobra izbira v nekaterih primerih. Če želite kopati naprej, glejte Ukvarjanje z negotovostjo glede vključitve preseka in izrazov determinističnega časovnega trenda.

Upam, da ste se kaj naučili o testu ADF.

Zabavajte se s svojo časovno serijo!

Pišite mi LinkedIn.

PS: Imam izkušnje in strast do podatkov časovnih vrst. Če vam je všeč ta članek, vas bo morda zanimal moj drugi objave o časovnih vrstah.

Reference

Datoteka beležnice na GitHubu

Zakaj je ta priljubljena časovna serija stacionarna? Ponovno objavljeno iz vira https://towardsdatascience.com/why-is-this-trending-time-series-stationary-f3fb9447336f?source=rss—-7f60cf5620c9—4 prek https://towardsdatascience.com/feed

<!–

->

Časovni žig:

Več od Svetovalci v verigi blokov