Miks on see trendikas ajaseeria statsionaarne?

Augmented Dickey-Fuller (ADF) uuring test kummalise näite põhjal

Foto: Jan Huber on Unsplash

Statsionaarsus on aegridade analüüsi üks põhimõisteid. Üldiselt annab statsionaarsus suurepärased omadused aegridade modelleerimiseks erinevate statistiliste meetoditega. Laiendatud Dickey-Fuller (ADF) test on ilmselt kõige laialdasemalt kasutatav meetod statsionaarsuse kontrollimiseks.

Internetis on sellel teemal palju artikleid. Ma ei raiska teie aega põhisissejuhatuse peale, nagu statsionaarsuse määratlus, ADF-testide tegemine jne. Selles postituses jagan oma teekonda ADF-i testiga tutvumiseks pärast kummalise juhtumiga kokku puutumist rakenduses.

Õppetee, mida ma näitan, on tüüpiline andmeteaduse õppimisele. Esiteks arvame, et mõistame tööriista või kontseptsiooni, kuid me lihtsalt tunnistame ja mäletame seda terminit. Kui rakendame seda tegelikele andmetele, võime leida ootamatuid väljakutseid pakkuvaid probleeme, mis sunnivad meid rohkem uurima ja mõistma.

Jällegi jagan oma koodi GitHubis; palun leidke viidete jaotisest viimaks viide.

Ootamatu teekonna algus

Töötasin eelmisel päeval mõne aegreaga. Joonis 1 näitab ühte neist. Ei ole topelt, et an tõusutrend on olemas, ja dispersioon muutub ka ajas. Selle selge visualiseerimisega ei pidanud ma statsionaarsust testima. Millegipärast ma ei mäleta, proovisin seda ikkagi ADF-i testiga. Üllataval kombel on p-väärtus peaaegu 0, mis tähendab, et peaksin nullhüpoteesi tagasi lükkama ja nõustuma, et see on statsionaarne.

Joonis 1. Trendiga aegrida (Autori pilt)

See on veider. Testi tulemus tundus vale. Tahtsin uurida, mis toimub ADF-i testi taga. Esimene samm, mida proovisin, oli selle probleemi kordamine sünteetiliste andmetega. Genereerisin mõned testiandmed järgmise koodiga. Kood jäljendas ainult aeglase trendi käitumist, kuid mitte hooajalisust.

Joonisel 20,000 on 1 0.0005 vaatlust, mis viitab sellele, et trend tõuseb väga aeglaselt. Loon aegrea väikese kaldega 0. Aegrea keskmine väärtus tõuseb umbes 0.5-lt 1000-le pärast XNUMX vaatlust. Seejärel testime seda funktsiooniga adfuller() from statsmodels.tsa.stattools vaikeparameetritega. P-väärtus on 0.01 ja "probleem" kordub. Joonis 2 näitab tulemust. Võite pealkirja ignoreerida ja keskenduda tõusutrendile. Selgitan hiljem, miks meil on kolme erineva ADF-i testi p-väärtused.

Joonis 2. Sünteetilised aegread ADF-i testi tulemusega (Autori pilt)

Matemaatika DF-testi taga

Peame minema sügavale, et näha, mida täpselt ADF-i test teeb. Selgub, et selle matemaatika taust pole keeruline. Esiteks on ADF-i test lihtsalt selle täiustatud versioon Dickey-Fuller test. Seal on DF-testi kolm peamist versiooni (Wikipediast):

Versioon 1: Ühikujuure test: ∆yᵢ = δyᵢ₋₁ + uᵢ

Versioon 2: Testige ühikjuurt konstandiga: ∆yᵢ = a₀ + δyᵢ₋₁ + uᵢ

Version 3. Konstantse ja deterministliku trendiga ühikjuure testimine: ∆yᵢ = a₀ + a₁*t + δyᵢ₋₁ + uᵢ

Igas versioonis nullhüpotees on, et on olemas ühikjuur, δ=0.

Statsmodelsi pakett toetab parameetriga kõiki kolme versiooni "regressioon".

Versiooni 1 puhul on regressioon 'n' (pole konstanti, pole trendi).

Versiooni 2 puhul on regressioon "c" (ainult konstant); see on vaikeseade.

Versiooni 3 puhul on regressiooniks "ct" (konstant ja trend).

Käivitan testi uuesti kolme erineva seadistusega ja allpool on uued tulemused.

Versiooni 1 puhul on p-väärtus 0.09. Me ei tohiks nullhüpoteesi tagasi lükata.

Versiooni 2 puhul on p-väärtus 0.01. Oleme seda juba probleemina käsitlenud, kuna see on vaikeseade.

Versiooni 3 puhul on p-väärtus 0.00. Seda on oodata, sest aegrida on tõepoolest olemas deterministliku trendiga statsionaarne.

Seega ei ütle me nende näidisandmete puhul, et kui testime seda versiooniga 1 (regression='n'), ei ütle me, et see on paigal. Tõenäoliselt ei tohiks me vaikeseadet kasutada. Kuid võite ka küsida, miks muutis konstantne tähtaeg siin nii suurt erinevust? Kaevame veel.

DF-testist lineaarse regressioonini

Ülaltoodud definitsiooni põhjal on DF-test lihtsalt lineaarne regressioon. Joonisel 3 on näidatud kõik lineaarse regressiooni punktid. Y-telg on ∆yᵢ, X-telg on yᵢ₋₁ ja uᵢ on jääk. Versioon 1 tähendab, et peame sobitama sirge ilma lõiketa (ilma konstantita). Versioon 2 tähendab, et peame sobitama joone lõikepunktiga (konstant).

Joonis 3. ∆yᵢ ja yᵢ₋₁ (autori pilt)

Skitlearn LinearRegression toetab neid kahte valikut hästi parameetriga fit_intercept. Joonise 4 all on kaks sobitatud joont. Nagu näha, sobib lõikekohaga joon paremini kui lõikepunktita joon. Ka R-ruudu skoor kinnitas seda selgelt. Samuti pange tähele, et oranži joone kalle on väiksem kui sinise joone kalle. Teisisõnu, oranži joone kalle on lähemal 0-le.

Joonis 4. Lineaarse regressiooni tulemus (Autori pilt)

Võime mõelda ka visualiseerimise teel: punktid ei ole tsentreeritud (0,0) ümber, seega ei tohiks sobitatud regressioonisirge läbida (0,0). Lõikepunkt peaks olema suurem kui 0. Kuna 0 on alguskeskmine, peaks ∆y olema suurem kui 0, seega üldine keskmine suureneb. Kui sunnime regressioonisirge läbima (0,0), jääb see andmetele alla ja kalle muutub (0) mõju tõttu 0,0-le lähemale.

Oleme näinud, kas lõikemõjude kaasamine sobib lineaarse regressiooniga. Miks mõjutab joone sobitamine ADF-i testi tulemusi ja kust tuleb p-väärtus?

Lineaarsest regressioonist p-väärtuseni

Nüüd läheb natuke keeruliseks. DF-testi lõplik p-väärtus ei tulene lineaarse regressiooni koefitsientide p-väärtusest. Põhimõtteliselt on statistikal konkreetne jaotus, mida nimetatakse Dickey-Fuller tabeliks. Seejärel kasutame teststatistika jaoks MacKinnoni ligikaudset p-väärtust. Üksikasjad leiate jaotisest Statsmodelsi lähtekood.

Kuna nullhüpotees on δ=0, tähendab sobitatud sirge kalde testimine 0. Me ei pea p-väärtuse saamise üksikasjadesse laskuma. P-väärtuse ja kalde (δ lineaarses regressioonis, mitte trendikalles) seose loogiline ahel on järgmine:

Üldiselt, kui kalle on kaugel 0-st, peaks p-väärtus olema väiksem, lükates tõenäolisemalt tagasi nullhüpoteesi ja viitab sellele, et ühiku juurt pole ja see on statsionaarne. Kui kalle on 0 või sellele väga lähedane, peaks p-väärtus olema suurem, nõustudes tõenäolisemalt nullhüpoteesiga ja viitama ühikujuurele ja mittestatsionaarsele. Teise stsenaariumi kohta ütleb Wikipedia: "Testidel on madal statistiline võimsus, kuna nad ei suuda sageli eristada tõelisi ühikjuurprotsesse (δ = 0) ja peaaegu ühikjuurprotsesse (δ on 0 lähedal)". Sellepärast on meil probleem esiteks. Tegeleme üksuse juurelähedase protsessiga. Versioon 1 leiab üksuse juurt ja versioon 2 ei leia üksuse juurt.

Miks versioon 1 ülaltoodud näite puhul töötab?

Versioon 1 töötab joonisel 2 kujutatud andmete jaoks, kuna me muudame kalde 0-le lähemale, seega on p-väärtus suurem.

Siiski ei saa me versiooni 1 vaikeseadena kasutada. Versiooni 1 puhul on kaks juhtumit (sunnib rida läbima (0,0)):

Juhtum 1: (0,0) on kõigile andmepunktidele lähemal. Kui joon peab läbima (0,0), on joon laugem ja kalle läheneb 0-le. Joonis 4 näitab seda juhtumit. Pange tähele, et joonisel 4 olev demonstratsioon sobib ainult ühe muutujaga yᵢ₋₁, tegelik ADF mahutab rohkem viivitusmuutujaid.

Juhtum 2: (0,0) on kõigist andmepunktidest kaugel. Kui joon peab läbima (0,0), võime sobitamise ebaõnnestuda; sisuliselt on kalle 0, mis tähendab, et me ei leia ∆yᵢ ja yᵢ₋₁ lineaarset seost nii, et joon mööduks (0,0) ja kataks enamiku andmepunktidest. Seetõttu on testi tulemus kallutatud juurüksuse olemasolu poole.

Alloleval joonisel 5 on näide versiooni 1 testist, mis ei lükanud ümber nullhüpoteesi (p-väärtus 0.6) ja andmed on statsionaarsed keskmisega 10. Joonis 6 selgitab põhjust. Nagu näete, ei leia me sirget ilma lõikepunktita (R-ruut on 0), seega on sobitatud sirge kalle 0 (∆yᵢ ei sõltu yᵢ₋₁-st).

Joonis 5. Versioon 1 ei tuvastanud statsionaarset aegrida (autori pilt)
Joonis 6. Lineaarne regressioon ei leia joont ilma lõikepunktita (möödumine (0,0)) (Autori pilt)

DF-testist ADF-testini

Nüüd saame aru, et DF-test on lineaarne regressioon ja kuidas saada lineaarsest regressioonist p-väärtus, liigume edasi ADF-i juurde. ADF-i valem on järgmine:

Jällegi lineaarne regressioon. "Täiustatud" osa on see, et peame sobitama rohkem koefitsiente.

Statsmodelsi pakett võimaldab näidata AFT-testi üksikasjalikku kokkuvõtet. Joonis 7 on tulemus.

Joonis 7. ADF-i test koos üksikasjaliku kokkuvõttega (Autori pilt)

Näeme "OLS-i regressiooni" (lineaarse regressiooni vaikelahendus) ja 17 koefitsienti. Ma ei määranud maksimaalset viivitust, seega proovib test kuni aegrea pikkusel põhineva arvu, mis on 17.

Const (lõikamine) on samuti paigaldatud. Väärtus on 0.0596.

Proovime rakendada ADF-i testi, kasutades Scikit-learnis lineaarset regressiooni. Joonisel 8 on kood ja väljund.

Joonis 8. ADF-i test (ainult lineaarse regressiooni osa) Scikit-learniga (pilt autorilt)

Lõikepunkt on 0.0596 ja teised koefitsiendid on samad, mis joonisel 7. Scikit-learni lineaarne regressioon on lihtsalt OLS. Me teeme sama asja, seega pole üllatav, et tulemused on identsed.

Teekonna lõpp

Pärast seda, kui olin aru saanud, kuidas parameetrit seadistada, testisin joonisel 1 kujutatud algset aegrida versiooni 1 abil (regressioon ='n') ja sain p-väärtuseks 0.08, mis viitab sellele, et see ei ole statsionaarne. Pange tähele, et joonisel 1 olevad andmed on nullkeskmised, nii et võite ette kujutada, et (0,0) on andmepunktidele (∆yᵢ, yᵢ₋₁) lähemal. Versiooni 1 testi kasutamine aitab meid.

Kuna joonisel 1 olev trendikalle on minimaalne, saame aegridade uuesti valimida ka sammudega, mis suurendab kallet. Näiteks kui ma testin seda nelja sammuga ( väärtus[::4] ), ei läbi see vaikesätetega ADF-i testi (p-väärtus on 0.17 regressiooni=’c’ korral).

Probleem lahendatud.

Takeaways

Ärge usaldage ADF-i tulemusi pimesi. Visualiseerimine on teie sõber.

ADF-test on lihtne lineaarne regressioon ja statistikamudelite rakendamine kasutab regressiooniprobleemi lahendamiseks OLS-i. Seejärel kasutab ta tabelit Dickey–Fuller, et eraldada p-väärtus, mis kinnitab nullhüpoteesi, et kohandatud regressiooni esimese viivituse muutuja koefitsient on 0.

ADF-i testil on ühiku juurprotsesside testimisel piirangud (δ on 0-le lähedane).

Peame vastavalt valima õige ADF-i versiooni. Näiteks kui näete pidevat trendi ja soovite testida olekut „statsionaarne trend”, peate valima parameetriks „ct”. Kui kavatsete tabada aeglast trendi signaali puhul, mille keskmine peaks olema 0, nagu joonisel 1 ja joonisel 2, peate võib-olla valima parameetriks 'n', et vältida lõikekoha sobitamise mõju. Statsmodels toetab ka kvantitrendi parameetriga „ctt”. See täpsem valik võib mõnel juhul olla hea valik. Kui soovite edasi kaevata, vaadake palun Tegelemine ebakindlusega lõikude ja deterministliku aja trendi terminite kaasamisel.

Loodan, et olete ADF-testi kohta midagi õppinud.

Lõbutsege oma aegsarjadega!

Võtke minuga ühendust LinkedIn.

PS: Mul on kogemus ja kirg aegridade andmete vastu. Kui teile meeldib see artikkel, võite olla huvitatud minu teisest postitused aegridade kohta.

viited

Märkmiku fail GitHubis

Miks on see trendikas ajaseeria statsionaarne? Taasavaldatud allikast https://towardsdatascience.com/why-is-this-trending-time-series-stationary-f3fb9447336f?source=rss—-7f60cf5620c9—4 https://towardsdatascience.com/feed kaudu

<!–

->

Ajatempel:

Veel alates Blockchaini konsultandid