implementering af regressionsstrategien ved hjælp af Python, pandaer og statsmodeller

Importer alle de krævede pakker.

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

Læs datasættet i en pandas dataramme.

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

datasættet indeholder daglige gennemsnitstemperaturer. Vi ønsker månedlige gennemsnit. Så lad os rulle dataene op til et månedsniveau. Dette viser sig at være en simpel ting at gøre ved hjælp af pandaer.

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

Vi er ved at tilføje lagged variable kolonner i datasættet., Lad os oprette en kopi af datasættet, så vi ikke forstyrrer det originale datasæt.

df_lagged = df_resampled.copy()

Tilføj 12 kolonner, der hver indeholder en tidsforsinket version af TAVG.

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

Udskriv de første 15 rækker af de lagged variable datasæt.,

print(df_lagged.head(15))

Dette er udskrevet følgende output:

Det data sæt, som indeholder 12 haltet variabler (Billede af Forfatteren)

De første 12 rækker, der indeholder NaNs indført af shift-funktionen. Lad os fjerne disse 12 rækker.

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

Udskriv de første rækker bare for at bekræfte, at NaNs er blevet fjernet.,

print(df_lagged.head())

før vi gør mere kigger og poking ind i dataene, vil vi lægge 20% af datasættet til side for at teste den optimale model.

lad os nu oprette alle mulige kombinationer af forsinkede værdier. Til dette opretter vi en ordbog, hvor tasterne indeholder forskellige kombinationer af lagnumrene 1 til 12.

dernæst gentager vi alle de genererede kombinationer. For hver lag-kombination bygger vi modellens udtryk ved hjælp af patsy-syntaksen., Dernæst bygger vi den lineære regressionsmodel for den lagkombination af variabler, vi træner modellen på træningsdatasættet, vi beder statsmodels om at give os AIC-score for modellen, og vi noterer AIC-score og den aktuelle ‘bedste model’, hvis den aktuelle score er mindre end den hidtil set minimumsværdi. Vi gør alt dette i følgende stykke kode:

endelig, lad os udskrive resum .et af den bedste OLSR-model i henhold til vores evalueringskriterium. Dette er modellen med den laveste AIC score.

print(best_olsr_model_results.summary())

dette udskriver følgende output., Jeg har fremhævet et par interessante områder i output:

Model summary genereret af statsmodels OLSResults.resum. () (billede af forfatter)

lad os inspicere de fremhævede sektioner.,

Valg af model parametre

Vores AIC score baseret model for vurdering, at strategien har identificeret en model med følgende parametre:

Model parametre og deres regressions koefficienter (Billede af Forfatteren)

De andre lag ‘ er, 3, 4, 7, 8, 9 har været fast besluttet på at ikke blive stor nok, for i fællesskab at forklare variansen i den afhængige variabel TAVG., For eksempel ser vi, at TAVG_LAG_7 ikke er til stede i den optimale model, selvom der fra de spredte plots, vi så tidligere, syntes at være en god mængde korrelation mellem responsvariablen TAVG og TAVG_LAG_7. Årsagen til udeladelsen kan være, at de fleste af oplysningerne i TAVG_LAG_7 muligvis er blevet fanget af TAVG_LAG_6, og vi kan se, at TAVG_LAG_6 er inkluderet i den optimale model.,

Statistiske signifikans af model parametre (t-test)

Den anden ting at bemærke er, at alle parametre den optimale model, bortset fra TAVG_LAG_10, er individuelt statistisk signifikant på et 95% konfidensniveau på to-halet t-test. Den rapporterede p-værdi for deres t-score er mindre end 0,025, hvilket er tærskelværdien p ved et konfidensniveau på 95% ved den 2-tailed test.,

t-værdien og p-værdien af modellens parametre (Billede af Forfatteren)

Fælles betydning af model parametre (F-test)

Den tredje ting at bemærke er, at alle parametre i modellen er i fællesskab signifikant til at forklare variansen i responsvariabel TAVG.

dette kan ses af f-statistikken 1458. Det er p værdi er 1.15 e-272 på en 95% konfidensniveau., Denne sandsynlighedsværdi er så utrolig lille, at du ikke engang behøver at slå f-distributionstabellen op for at kontrollere, at f-statistikken er betydelig. Modellen er bestemt meget bedre til at forklare variansen i TAVG end en intercept-only model.

F-statistik og dens p-værdi., Alle mdoel parametre er i fællesskab signifikant (Billede af Forfatteren)

for At vide mere om, hvordan man skal fortolke F-statistik, henvises til min artikel om F-test.

Den AIC score og Maksimeret Log-Likelihood monteret model

Endelig, lad os tage et kig på AIC score på 1990.0 rapporteret af statsmodels, og maksimeret log-sandsynligheden for, at -986.86.,

Maksimeret Log-likelihood og AIC score (Billede af Forfatteren)

Vi kan se, at den model, der indeholder 8 parametre (7 tid-sakket variabler + aflytte). Så som formlen for AIC score:

AIC score = 2*antallet af parametre, -2* maksimeret log sandsynlighed
= 2*8 + 2*986.86 = 1989.72, afrundet til 1990. 0

hvilket er nøjagtigt den værdi, der er rapporteret af statmodeller.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *