uitvoering van de regressiestrategie met behulp van Python, panda ‘ s en statsmodellen

Importeer alle vereiste pakketten.

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

Lees de gegevensset in een panda-gegevensframe.

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

de gegevensverzameling bevat gemiddelde dagelijkse temperaturen. We willen maandelijkse gemiddelden. Dus laten we de gegevens oprollen tot een maandniveau. Dit blijkt een eenvoudig ding om te doen met behulp van Panda ‘ s.

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

We staan op het punt om kolommen met variabele vertraging toe te voegen aan de dataset., Laten we een kopie van de dataset maken zodat we de oorspronkelijke dataset niet verstoren.

df_lagged = df_resampled.copy()

voeg 12 kolommen toe, elk met een vertraagde versie van TAVG.

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

Print de eerste 15 rijen van de gegevensset met vertraagde variabelen.,

print(df_lagged.head(15))

Dit geeft de volgende output:

De data set bevat 12 vertraagde variabelen (Foto door Auteur)

De eerste 12 rijen bevatten dankzij nan ‘ s geïntroduceerd door de shift-functie. Laten we deze 12 Rijen verwijderen.

druk de eerste paar rijen af om te bevestigen dat de NaNs zijn verwijderd.,

print(df_lagged.head())

voordat we nog meer gluren en in de gegevens prikken, zullen we 20% van de dataset opzij zetten voor het testen van het optimale model.

laten we nu alle mogelijke combinaties van vertraagde waarden maken. Hiervoor zullen we een woordenboek maken waarin de toetsen verschillende combinaties van de lag-nummers 1 tot en met 12 bevatten.

vervolgens zullen we herhalen over alle gegenereerde combinaties. Voor elke lag-combinatie bouwen we de expressie van het model met behulp van de patsy-syntaxis., Vervolgens bouwen we het lineaire regressiemodel voor die lag-combinatie van variabelen, we trainen het model op de trainingsdataset, we vragen statsmodels om ons de AIC-score voor het model te geven, en we maken een notitie van de AIC-score en het huidige ‘beste model’ als de huidige score lager is dan de minimumwaarde die we tot nu toe hebben gezien. We doen dit allemaal in het volgende stukje code:

laten we tenslotte de samenvatting van het beste OLSR-model afdrukken volgens ons evaluatiecriterium. Dit is het model met de laagste AIC score.

print(best_olsr_model_results.summary())

Dit print de volgende uitvoer., Ik heb een paar interessante gebieden in de uitvoer belicht:

Model summary gegenereerd door statsmodellen olsresults.summary () (Image by Author)

laten we de gemarkeerde secties inspecteren.,

Keuze van model parameters

Onze AIC score gebaseerd model evaluatie strategie heeft vastgesteld dat een model met de volgende parameters:

Model parameters en hun regressiecoëfficiënten (Foto door Auteur)

De andere pg ‘ s, 3, 4, 7, 8, 9 vast niet groot genoeg om gezamenlijk verklaren de variantie van de afhankelijke variabele TAVG., We zien bijvoorbeeld dat TAVG_LAG_7 niet aanwezig is in het optimale model, hoewel uit de spreidingsdiagrammen die we eerder zagen, er een goede correlatie leek te zijn tussen de responsvariabele TAVG en TAVG_LAG_7. De reden voor de omissie zou kunnen zijn dat de meeste informatie in TAVG_LAG_7 kan zijn gevangen door TAVG_LAG_6, en we kunnen zien dat TAVG_LAG_6 is opgenomen in het optimale model.,

statistische significantie van modelparameters (de T-test)

ten tweede moet worden opgemerkt dat alle parameters van het optimale model, met uitzondering van TAVG_LAG_10, afzonderlijk statistisch significant zijn bij een betrouwbaarheidsniveau van 95% bij de tweestaart t-test. De gerapporteerde p-waarde voor hun ‘t’-score is kleiner dan 0,025, wat de drempelwaarde p is bij een betrouwbaarheidsniveau van 95% bij de tweestaarttest.,

De t-waarde en de p-waarde van de modelparameters (Foto door Auteur)

Gezamenlijke betekenis van de model parameters (F-test)

Het derde ding om op te merken is dat alle parameters van het model zijn gezamenlijk belangrijke in het verklaren van de variantie in de respons variabele TAVG.

dit blijkt uit de F-statistiek 1458. De p-waarde is 1,15 e-272 bij een betrouwbaarheidsniveau van 95%., Deze waarschijnlijkheidswaarde is zo ongelooflijk klein dat je niet eens de F-distributietabel hoeft op te zoeken om te controleren of de F-statistiek significant is. Het model is zeker veel beter in het verklaren van de variantie in TAVG dan een intercept-only model.

F-statistic and its p-value., Alle mdoelparameters zijn gezamenlijk significant (afbeelding per auteur)

om meer te weten te komen over het interpreteren van de F-statistiek, zie mijn artikel over de F-test.

de AIC-score en de maximale Log-waarschijnlijkheid van het aangepaste model

ten slotte, laten we eens kijken naar de AIC-score van 1990.0 gerapporteerd door statsmodels, en de maximale log-waarschijnlijkheid van -986,86.,

maximale log-waarschijnlijkheid en de AIC-score (afbeelding per auteur)

we kunnen zien dat het model 8 parameters bevat (7 variabelen met vertraging + intercept). Dus volgens de formule voor de AIC score:

AIC score = 2 * aantal parameters -2 * maximale log waarschijnlijkheid
= 2*8 + 2*986.86 = 1989.72, afgerond tot 1990. 0

dat is precies de waarde gerapporteerd door statmodels.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *