implementera regressionsstrategin med Python, pandas och statsmodels

importera alla nödvändiga paket.

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

Läs datauppsättningen i en pandas dataram.

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

datamängden innehåller dagliga medeltemperaturer. Vi vill ha månadsgenomsnitt. Så låt oss rulla upp data till en månad nivå. Detta visar sig vara en enkel sak att göra med pandor.

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

vi håller på att lägga till lagrade variabelkolumner i datauppsättningen., Låt oss skapa en kopia av datauppsättningen så att vi inte stör den ursprungliga datauppsättningen.

df_lagged = df_resampled.copy()

Lägg till 12 kolumner, var och en innehåller en tidsfördröjd version av TAVG.

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

Skriv ut de första 15 raderna i datauppsättningen med fördröjda variabler.,

print(df_lagged.head(15))

detta skriver ut följande utdata:

datamängden som innehåller 12 fördröjda variabler (bild av författare)

de första 12 raderna innehåller Nans som introduceras av shift-funktionen. Låt oss ta bort dessa 12 rader.

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

Skriv ut de första raderna bara för att bekräfta att NaNs har tagits bort.,

print(df_lagged.head())

innan vi gör mer kikar och petar in i data, kommer vi att lägga undan 20% av de data som fastställts för att testa den optimala modellen.

låt oss nu skapa alla möjliga kombinationer av fördröjda värden. För detta skapar vi en ordbok där nycklarna innehåller olika kombinationer av lag-nummer 1 till 12.

därefter kommer vi att iterera över alla genererade kombinationer. För varje lag-kombination bygger vi modellens uttryck med patsy-syntaxen., Nästa kommer vi att bygga den linjära regressionsmodellen för den lagkombinationen av variabler, vi tränar modellen på träningsdatauppsättningen, vi ber statsmodels att ge oss AIC-poängen för modellen, och vi noterar AIC-poängen och den nuvarande ”bästa modellen” om den aktuella poängen är mindre än det lägsta värdet hittills sett. Vi gör allt detta i följande kod:

slutligen, låt oss skriva ut sammanfattningen av den bästa OLSR-modellen enligt vårt utvärderingskriterium. Detta är modellen med lägsta AIC-poäng.

print(best_olsr_model_results.summary())

detta skriver ut följande utdata., Jag har markerat några intressanta områden i produktionen:

modellsammanfattning som genereras av statsmodels OLSResults.sammanfattning () (bild av författare)

låt oss inspektera de markerade sektionerna.,

val av modellparametrar

vår AIC-poängbaserade modellutvärderingsstrategi har identifierat en modell med följande parametrar:

modellparametrar och deras regressionskoefficienter (bild av författare)

de andra lag-grupperna, 3, 4, 7, 8, 9 har fastställts inte vara tillräckligt betydande för att gemensamt förklara variansen hos den beroende variabeln TAVG., Till exempel ser vi att TAVG_LAG_7 inte är närvarande i den optimala modellen även om det från de scatter-tomter som vi såg tidigare tycktes finnas en bra mängd korrelation mellan svarsvariabeln TAVG och tavg_lag_7. Anledningen till utelämnandet kan vara att det mesta av informationen i TAVG_LAG_7 kan ha fångats av TAVG_LAG_6, och vi kan se att TAVG_LAG_6 ingår i den optimala modellen.,

statistisk signifikans av modellparametrar (t-testet)

det andra att notera är att alla parametrar för den optimala modellen, med undantag för TAVG_LAG_10, är individuellt statistiskt signifikanta vid en 95% konfidensnivå på tvåtailed t-testet. Det rapporterade p-värdet för deras ” t ” – poäng är mindre än 0,025, vilket är tröskelvärdet p-värdet vid en 95% konfidensnivå på 2-tailed-testet.,

t-värdet och p-värdet av modellparametrarna (bild av författare)

gemensam betydelse av modellparametrar (f-testet)

det tredje att notera är att alla parametrar i modellen är gemensamt signifikanta för att förklara variansen i svarsvariabeln tavg.

detta kan ses från F-statistiken 1458. Det är p-värdet är 1.15 e-272 vid en 95% konfidensnivå., Detta sannolikhetsvärde är så otroligt liten att du inte ens behöver slå upp f-distributionstabellen för att verifiera att f-statistiken är signifikant. Modellen är definitivt mycket bättre på att förklara variansen i TAVG än en avlyssningsmodell.

f-statistik och dess p-värde., Alla mdoel-parametrar är gemensamt signifikanta (bild av författare)

för att veta mer om hur man tolkar f-statistik, Se min artikel om f-testet.

AIC-poängen och den maximala Log-sannolikheten för den monterade modellen

slutligen, låt oss ta en titt på AIC-poängen 1990.0 som rapporterats av statsmodels och den maximala log-sannolikheten för -986.86.,

maximerad Log-sannolikhet och AIC-poäng (bild av författare)

Vi kan se att modellen innehåller 8 parametrar (7 tidsfördröjda variabler + intercept). Enligt formeln för AIC-poängen:

AIC-poäng = 2*Antal parametrar -2* maximerad log Sannolikhet
= 2*8 + 2*986.86 = 1989.72, avrundat till 1990. 0

vilket är exakt det värde som rapporteras av statmodeller.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *