Implementere regresjon strategi ved hjelp av Python, pandaer og statsmodels

Importer alle nødvendige pakker.

import pandas as pdfrom patsy import dmatricesfrom collections import OrderedDictimport itertoolsimport statsmodels.formula.api as smfimport sysimport matplotlib.pyplot as plt

Les dataene satt inn i en pandaer data ramme.

df = pd.read_csv('boston_daily_temps_1978_2019.csv', header=0, infer_datetime_format=True, parse_dates=, index_col=)

datasettet inneholder daglige gjennomsnittlige temperaturer. Vi ønsker månedlig gjennomsnitt. Så la oss brette opp data til en måned nivå. Dette viser seg å være en enkel ting å gjøre med pandaer.

df_resampled = df.resample('M').mean()

Vi er i ferd med å legge ligget variabel kolonner i datasettet., La oss lage en kopi av dataene, slik at vi ikke forstyrrer den opprinnelige datasettet.

df_lagged = df_resampled.copy()

Legg til 12 kolonner som hver inneholder en gang-lagged versjon av TAVG.

for i in range(1, 13, 1):
df_lagged = df_lagged.shift(i)

Skriv ut de første 15 rader av lagged variabler i datasettet.,

print(df_lagged.head(15))

Dette skriver ut følgende resultat:

datasettet inneholder 12 ligget variabler (Bilde av Forfatteren)

De første 12 rader inneholder NaNs introdusert av shift funksjon. La oss ta disse 12 rader.

for i in range(0, 12, 1):
df_lagged = df_lagged.drop(df_lagged.index)

Skriv ut de første par rader bare for å bekrefte at NaNs har blitt fjernet.,

print(df_lagged.head())

Før vi gjør noe mer titte og poking til data, vil vi legge til side 20% av datasettet for testing av optimal modell.

la oss Nå lage alle mulige kombinasjoner av lagged verdier. For dette, vil vi lage en ordbok som nøkler inneholder forskjellige kombinasjoner av etterslep av tallene 1 til 12.

Neste, vil vi iterere over alle de genererte kombinasjoner. For hvert lag kombinasjon, vil vi bygge modellen er uttrykk ved hjelp av patsy syntaks., Neste vi skal bygge lineær regresjonsmodell for at lag kombinasjon av variabler, vil vi trene modellen på trening datasettet, vil vi be statsmodels å gi oss AIC score for modellen, og vi vil lage et notat av AIC-score og gjeldende «best model’ hvis den aktuelle stillingen er mindre enn den minste verdien sett så langt. Vi vil gjøre alt dette i følgende kodebit:

til Slutt, la oss skrive ut et sammendrag av de beste OLSR modell som per vår vurdering av kriteriet. Dette er den modellen med den laveste AIC-score.

print(best_olsr_model_results.summary())

Dette skriver ut følgende resultat., Jeg har uthevet et par interessante områder i utgang:

Modell oppsummering generert av statsmodels OLSResults.sammendrag() (Bilde av Forfatteren)

La oss undersøke den uthevede avsnittene.,

Valg av modell parametere

Vår AIC score basert modell evaluering strategien har identifisert en modell med følgende parametere:

Modell-parametre og deres regresjon koeffisienter (Bilde av Forfatteren)

Den andre tregheter, 3, 4, 7, 8, 9 har vært fast bestemt på å ikke være store nok til å i fellesskap forklare variansen til den avhengige variabelen TAVG., For eksempel ser vi at TAVG_LAG_7 er ikke til stede i den optimale modellen, selv om fra scatter plott vi så tidligere, det syntes å være en god mengde korrelasjon mellom responsvariabel TAVG og TAVG_LAG_7. Årsaken til utelatelsen kan være at det meste av informasjonen i TAVG_LAG_7 kan ha blitt fanget av TAVG_LAG_6, og vi kan se at TAVG_LAG_6 er inkludert i den optimale modellen.,

Statistiske betydningen av modell-parametre (t-test)

Den andre tingen å merke seg er at alle parametere som er av den optimale modellen, med unntak for TAVG_LAG_10, er individuelt statistisk signifikant i et 95% konfidensnivå på to-tailed t-test. De rapporterte p-verdi for sine ‘t’ resultat er mindre enn 0.025 som er terskelen p-verdi på 95% konfidens nivå på 2-tailed test.,

t-verdi og p-verdi av modell-parametre (Bilde av Forfatteren)

Felles betydningen av modell-parametre (F-test)

Den tredje tingen å merke seg er at alle parametrene i modellen er i fellesskap betydelig i å forklare variansen i responsvariabel TAVG.

Dette kan være sett fra F-statistikk 1458. Det er p-verdien er 1.15 e-272 på et 95% konfidensnivå., Denne sannsynligheten verdi er så utrolig liten at du ikke engang trenger å se opp F-distribusjon bordet for å kontrollere at F-statistikken er betydelig. Modellen er definitivt mye bedre på å forklare variansen i TAVG enn et skjæringspunkt-modell.

F-statistikk og tilhørende p-verdien., Alle mdoel parametere er i fellesskap betydelig (Bilde av Forfatteren)

Hvis du vil vite mer om hvordan å tolke F-statistikk, vennligst referer til min artikkel på F-test.

AIC score og Maksimert Log-Likelihood for den utstyrt modell

til Slutt, la oss ta en titt på AIC resultat av 1990.0 rapportert av statsmodels, og maksimert log-likelihood av -986.86.,

Maksimert Log-likelihood-og AIC score (Bilde av Forfatteren)

Vi kan se at modellen inneholder 8 parametere (7 gang-lagged variabler + skjæringspunkt). Slik som per formelen for AIC score:

AIC score = 2*antall parametre -2* maksimert log likelihood
= 2*8 + 2*986.86 = 1989.72, avrundet til 1990. 0

Som er nøyaktig den verdien som er rapportert av statmodels.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *