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:
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:
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:
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.,
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.
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.,
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.