Implementando la strategia di regressione usando Python, panda e statsmodels

Importa tutti i pacchetti richiesti.

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

Leggere il set di dati in un frame di dati panda.

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

Il set di dati contiene le temperature medie giornaliere. Vogliamo medie mensili. Quindi arrotoliamo i dati a un livello di mese. Questo risulta essere una cosa semplice da fare usando i panda.

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

Stiamo per aggiungere colonne variabili ritardate nel set di dati., Creiamo una copia del set di dati in modo da non disturbare il set di dati originale.

df_lagged = df_resampled.copy()

Aggiungi 12 colonne, ognuna contenente una versione ritardata di TAVG.

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

Stampa le prime 15 righe del set di dati delle variabili ritardate.,

print(df_lagged.head(15))

Questo stampa il seguente output:

Il set di dati contenente 12 variabili ritardate (Immagine a cura dell’Autore)

Le prime 12 righe contengono NaNs introdotto dalla funzione di spostamento. Rimuoviamo queste 12 righe.

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

Stampa le prime righe solo per confermare che i NAN sono stati rimossi.,

print(df_lagged.head())

Prima di fare più sbirciare e frugare nei dati, metteremo da parte il 20% del set di dati per testare il modello ottimale.

Ora creiamo tutte le possibili combinazioni di valori ritardati. Per questo, creeremo un dizionario in cui i tasti contengono diverse combinazioni dei numeri di ritardo da 1 a 12.

Successivamente, itereremo su tutte le combinazioni generate. Per ogni combinazione di lag, costruiremo l’espressione del modello usando la sintassi patsy., Successivamente costruiremo il modello di regressione lineare per quella combinazione di variabili lag, addestreremo il modello sul set di dati di allenamento, chiederemo a statsmodels di darci il punteggio AIC per il modello e prenderemo nota del punteggio AIC e del “miglior modello” corrente se il punteggio corrente è inferiore al valore minimo visto finora. Faremo tutto questo nel seguente pezzo di codice:

Infine, stampiamo il riepilogo del miglior modello OLSR secondo il nostro criterio di valutazione. Questo è il modello con il punteggio AIC più basso.

print(best_olsr_model_results.summary())

Questo stampa il seguente output., Ho evidenziato un paio di interessanti aree in uscita:

riepilogo del Modello generato dal statsmodels OLSResults.sommario () (Immagine per autore)

Esaminiamo le sezioni evidenziate.,

Scelta dei parametri del modello

il Nostro AIC punteggio sulla base del modello di strategia di valutazione ha individuato un modello con i seguenti parametri:

parametri del Modello e dei loro coefficienti di regressione (Immagine a cura dell’Autore)

Gli altri gal, 3, 4, 7, 8, 9 sono stati determinati a non essere abbastanza significativo congiuntamente spiegare la varianza della variabile dipendente TAVG., Ad esempio, vediamo che TAVG_LAG_7 non è presente nel modello ottimale anche se dai grafici a dispersione che abbiamo visto in precedenza, sembrava esserci una buona quantità di correlazione tra la variabile di risposta TAVG e TAVG_LAG_7. Il motivo dell’omissione potrebbe essere che la maggior parte delle informazioni in TAVG_LAG_7 potrebbe essere stata catturata da TAVG_LAG_6 e possiamo vedere che TAVG_LAG_6 è incluso nel modello ottimale.,

Significato statistico dei parametri del modello (il t-test)

La seconda cosa da notare è che tutti i parametri del modello ottimale, ad eccezione di TAVG_LAG_10, sono individualmente statisticamente significativi a un livello di confidenza del 95% sul t-test a due code. Il valore p riportato per il loro punteggio ” t ” è inferiore a 0,025, che è il valore di soglia p a un livello di confidenza del 95% sul test a 2 code.,

Il valore di t e il p-valore dei parametri del modello (Immagine a cura dell’Autore)

Comune di significatività dei parametri del modello (l’F-test)

La terza cosa da notare è che tutti i parametri del modello sono congiuntamente significativo nello spiegare la varianza della variabile di risposta TAVG.

Questo può essere visto dalla F-statistica 1458. Il suo valore p è 1.15 e – 272 a un livello di confidenza del 95%., Questo valore di probabilità è così incredibilmente piccolo che non è nemmeno necessario cercare la tabella di distribuzione F per verificare che la statistica F sia significativa. Il modello è sicuramente molto più bravo a spiegare la varianza in TAVG rispetto a un modello di sola intercettazione.

F-statistica e il p-value., Tutti i parametri mdoel sono congiuntamente significativi (Immagine per autore)

Per saperne di più su come interpretare la F-statistica, si prega di fare riferimento al mio articolo sul F-test.

Il punteggio AIC e la probabilità di log massimizzata del modello montato

Infine, diamo un’occhiata al punteggio AIC di 1990.0 riportato da statsmodels e alla probabilità di log massimizzata di -986.86.,

Log-verosimiglianza Massimizzata e l’AIC punteggio (Immagine a cura dell’Autore)

Possiamo vedere che il modello contiene 8 parametri (7 tempo-variabili ritardate + intercetta). Quindi, secondo la formula per il punteggio AIC:

Punteggio AIC = 2 * numero di parametri -2 * probabilità di log massimizzata
= 2*8 + 2*986.86 = 1989.72, arrotondato al 1990. 0

Che è esattamente il valore riportato da statmodels.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *