Seuraava artikkeli auttaa sinua: Kuinka saada aikasarja paikallaan?
Ajan mukaan muuttuvassa tiedossa on trendejä ja kausivaihtelua, mikä tekee tiedoista epästationaarisen. Tietojen stationaarisuuden tarkistamiseksi on olemassa tiettyjä tilastollisia menetelmiä hypoteettisen kysymyksen vastauksen laskemiseksi. Tässä artikkelissa keskustelemme yleisesti käytetyistä tilastollisista menetelmistä aikasarjatietojen stationaarisuuden laskemiseen ja ei-stationaaristen sarjojen muuntamiseen stationaarisiin sarjoihin. Seuraavassa on käsiteltävät aiheet.
Sisällysluettelo
- Aikasarjojen välttämättömyys olla paikallaan
- Staattiset menetelmät stationaarisuuden tarkistamiseksi
- Aikasarjan tekeminen paikallaan pythonilla
- Muuttaminen ei-kiinteäksi kiinteäksi
Aloitetaan stationääristen aikasarjojen välttämättömyydestä.
Aikasarjojen välttämättömyys olla paikallaan
Useimmat aikasarjamallit olettavat, että jokainen piste on riippumaton muista tulevaisuuden ennustamisessa tai ennustamisessa, mikä tarkoittaa, että keskiarvo, varianssi ja kovarianssi eivät muutu ajan kuluessa. Kun aikaisempien tapausten tietojoukko on vakaa, tämä on paras indikaattori.
Järjestelmän tilastolliset ominaisuudet eivät saa vaihdella ajan kuluessa, jotta tiedot pysyisivät paikallaan. Tämä ei tarkoita, että jokaisen datapisteen arvojen on oltava samat, vaan että tietojen yleisen käyttäytymisen on oltava johdonmukainen. Aikakaavioita, jotka eivät osoita kuvioita tai kausiluonteisuutta, voidaan kutsua pysähtyneiksi puhtaasti visuaalisesti.
Vakiokeskiarvo ja vakiovarianssi ovat kaksi muuta numeerista elementtiä, jotka tukevat stationaarisuutta. Aikasarjatietoihin liittyy kaksi tärkeää termiä.
- Kun tiedoissa on pitkän aikavälin kasvua tai laskua, tätä kutsutaan a trendi.
- Toistuvaa kuviota, jolla on määritelty ja ennustettava säännöllisyys, joka riippuu vuoden, viikon tai päivän ajasta, kutsutaan nimellä kausiluonteisuus.
Alla oleva esitys näyttää selkeän esimerkin ei-stationaarisista tiedoista. Luvussa on merkittävä nouseva trendi ja kausivaihtelu. Vaikka tämä tarjoaa runsaasti tietoa datan laadusta, se ei ole kiinteää eikä sitä siksi voida ennakoida tyypillisillä aikasarjamalleilla. Tietojen leviäminen viittaa siihen, että tiedoissa on merkittävää vaihtelua. Kasvavan varianssin tasoittamiseksi meidän on muutettava tiedot.
Etsitkö täydellistä arkistoa tietotieteessä käytettävistä Python-kirjastoista, katso tästä.
Staattiset menetelmät stationaarisuuden tarkistamiseksi
Aikasarjatietojen stationaarisuuden tarkistamiseen käytetään kahta yleistä tilastollista menetelmää.
Lisätty Dickey-Fuller-testi:
Augmented Dickey-Fuller -testi (ADF) on stationaarisuusyksikön juuritesti. ADF-testi on Dickey Fuller -kokeen muunneltu versio. Aikasarjaanalyysissä yksikköjuuret voivat tuottaa odottamattomia löydöksiä.
Sarjakorrelaatiolla voidaan käyttää Augmented Dickey-Fuller -testiä. ADF-testi on tehokkaampi ja pystyy käsittelemään monimutkaisempia malleja kuin Dickey-Fuller-testi. Kuitenkin, kuten muitakin yksikköjuuritestejä, sitä tulee käyttää varoen, koska sen tyypin I virheprosentti on jonkin verran korkea.
Seuraavat ovat testihypoteesit:
- Nollahypoteesi (H0): Aikasarjan tiedot ovat ei-stationaarisia.
- Vaihtoehtoinen hypoteesi (H1): Aikasarja on stationäärinen (tai trendi-stationaarinen).
ADF-testi laajentaa Dickey-Fuller-testiyhtälön sisällyttämään malliin korkean asteen regressiivisen prosessin. Se lisää ylimääräisiä erotustermejä, mutta loput yhtälöstä pysyy ennallaan. Tämä lisää testin perusteellisuutta.
Nollahypoteesi sen sijaan pysyy samana kuin Dickey-Fuller-testissä.
Nollahypoteesin hylkäämiseksi tuotetun p-arvon tulee olla pienempi kuin merkitsevyystaso (esimerkiksi 0,05). Tämän seurauksena voimme päätellä, että sarja on paikallaan.
Kwiatkowski Phillips Schmidt Shin (KPSS) testi:
Kwiatkowski Phillips Schmidt Shin (KPSS) -testi määrittää, onko aikasarja paikallaan keskiarvon tai lineaarisen trendin ympärillä vai ei-stationaarinen yksikköjuuren seurauksena. Kiinteällä aikasarjalla on tilastollisia piirteitä, kuten keskiarvo ja varianssi, jotka pysyvät vakioina ajan kuluessa.
Seuraavat ovat testihypoteesit:
- Nollahypoteesi (H0): Tiedot ovat paikallaan.
- Vaihtoehtoinen hypoteesi (H1): Tiedot eivät ole paikallaan.
Lineaarinen regressio tukee KPSS-testiä. Regressioyhtälön avulla se jakaa sarjan kolmeen osaan: deterministiseen trendiin, satunnaiseen kävelyyn ja stationaariseen virheeseen. Jos data on paikallaan, leikkauspisteessä on kiinteä elementti tai sarja on paikallaan kiinteän tason ympärillä.
Testi laskee yhtälön OLS:n avulla, joka vaihtelee merkittävästi sen mukaan, haluatko testata tason vai trendin stationaarisuutta. Tason stationaarisuuden arvioimiseksi käytetään supistettua versiota, josta puuttuu temporaalinen trendikomponentti.
Aikasarjan tekeminen paikallaan pythonilla
Yllä mainittujen tekniikoiden toteuttaminen pythonissa käyttämällä statsmodel-kirjastoa.
Tuo tarvittavat kirjastot ja tiedot käsittelyä varten:
tuonti pandat pd:nä tuo numpy np:nä tuonti matplotlib.pyplot as plt tuonti seaborn as sns tuonti varoitukset warnings.filterwarnings(“ohita”) osoitteesta statsmodels.tsa.stattools import adfuller osoitteesta statsmodels.tsa.stattools import kpss df_new_=pd(read. “GlobalLandTemperatures_GlobalLandTemperaturesByMajorCity.csv”) df_utils_new=df_new[[‘dt’,’AverageTemperature’]]df_utils_new[:8]

fig=plt.figure(figsize=(15,6)) sns.lineplot(data=df_utils,x=’dt’,y=’Keskilämpötila’) plt.tick_params( axis=”x”, what=”molemmat”, bottom=Epätosi, top=Epätosi, labelbottom=Epätosi) plt.show()

Lisätty Dickey-Fuller-testi:
tulos=adfuller (df_use[‘AverageTemperature’]) print(‘Testitilastot: %f’ %tulos[0]) print(‘p-arvo: %f’ %tulos[1]) print(‘Kriittiset arvot:’) avaimelle, arvo tuloksessa[4].items (): print(‘\t%s: %.3f’ %(avain, arvo))

Koska testitilasto on suurempi (vähemmän negatiivinen), kriittinen arvo tulee syyksi olla hylkäämättä nollahypoteesia. Tämä osoittaa, että tiedot eivät ole kiinteitä.
Kwiatkowski Phillips Schmidt Shin (KPSS) testi:
result_kpss_ct=kpss(df_use[‘AverageTemperature’],regression=”ct”) print(‘Testitilastot: %f’ %result_kpss_ct[0]) print(‘p-arvo: %f’ %result_kpss_ct[1]) print(‘Kriittiset arvot:’) avaimelle, arvo tulos_kpss_ct[3].items(): print(‘\t%s: %.3f’ %(avain, arvo))
Tässä tarkistetaan KPSS-tilastot datan trendistä, joten regressio on “ct”.

Koska testitilastoarvo on suurempi kuin kriittinen arvo, nollahypoteesi hylätään. Tämä osoittaa, että tiedot eivät ole kiinteitä.
Katsotaan, onko data ei-stationaarista ja tapoja muuttaa data stationääriseksi.
Muuttaminen ei-kiinteäksi kiinteäksi
Aikasarjadatan vähentämiseksi käytetään tiettyjä muunnostekniikoita, jotka on lueteltu seuraavasti.
- Tiedon lokimuunnos
- Otetaan tietojen neliöjuuri
- Kuutiojuuren ottaminen
- Suhteellinen muutos
Muuntamisen vaiheet ovat yksinkertaisia, sillä tässä artikkelissa käytetään neliöjuuren muuntamista.
- Käytä NumPyn neliöjuurifunktiota halutun sarakkeen muuntamiseen
- Siirrä sitten muunnosa yhdellä käyttämällä “shift”-toimintoa.
- Ota ero sekä alkuperäisen muunnoksen että siirron välillä.
- Vaiheet 2 ja 3 voidaan tehdä käyttämällä vain pandan “diff”-toimintoa.
Käytä alla olevaa koodia saadaksesi yllä mainitut vaiheet.
Datan muuntaminen
df_log=np.sqrt(df_use[‘AverageTemperature’]) df_diff=df_log.diff().dropna()
Kiinteyden tarkistaminen
result=adfuller (df_diff) print(‘Testitilasto: %f’ %tulos[0]) print(‘p-arvo: %f’ %tulos[1]) print(‘Kriittiset arvot:’) avaimelle, arvo tuloksessa[4].items (): print(‘\t%s: %.3f’ %(avain, arvo))

Koska ADF-testin statiikka on pienempi (negatiivisempi), kriittinen arvo tulee syyksi hylätä nollahypoteesi. Tämä osoittaa, että tiedot ovat paikallaan.
result_kpss_ct_log=kpss(df_diff,regression=”ct”) print(‘Testitilastot: %f’ % np.round(result_kpss_ct_log[0],2)) print(‘p-arvo: %f’ %result_kpss_ct_log[1]) print(‘Kriittiset arvot:’) avaimelle, arvo tulos_kpss_ct_logissa[3].items(): print(‘\t%s: %.3f’ %(avain, arvo))

Koska KPSS-testin tilastoarvo on pienempi kuin kriittinen arvo, nollahypoteesia ei hylätä. Tämä osoittaa, että tiedot ovat paikallaan.
Aikasarjojen jälki- ja ennen-versioiden vertailu
plt.figure(figsize=(15,8)) plt.plot(df_diff,label=”jälkeen”) plt.plot(df_compare,label=”ennen”) plt.tick_params( axis=”x”, what=”molemmat “, bottom=Epätosi, top=Epätosi, labelbottom=Epätosi) plt.legend() plt.show()

Johtopäätös
Aikasarjaa, jonka tilastolliset ominaisuudet, kuten keskiarvo, varianssi, autokorrelaatio jne. ovat kaikki ajan mittaan vakioita, kutsutaan stationaariseksi. Koska kiinteä sarja on yleensä helppo ennakoida, se voi olla “muuntamaton”. Kaikki aiemmat matemaattiset muutokset, joita on käytetty ennusteiden tuottamiseen alkuperäiselle sarjalle, voidaan peruuttaa. Tämän artikkelin avulla olemme ymmärtäneet erilaisia tekniikoita aikasarjatietojen stationaarisuuden havaitsemiseksi ja ei-stationaarisen datan muuntamiseksi stationäärisiksi aikasarjoiksi.