mise en œuvre de la stratégie de régression en utilisant Python, pandas et statsmodels

importez tous les paquets requis.

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

Lire l’ensemble de données dans une pandas bloc de données.

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

l’ensemble de données contient les températures moyennes quotidiennes. Nous voulons des moyennes mensuelles. Alors roulons les données au niveau d’un mois. Cela s’avère être une chose simple à faire en utilisant des pandas.

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

Nous sommes sur le point d’ajouter des colonnes de variables décalées dans l’ensemble de données., Nous allons créer une copie de l’ensemble de données afin de ne pas perturber le jeu de données d’origine.

df_lagged = df_resampled.copy()

ajoutez 12 colonnes, chacune contenant une version décalée de TAVG.

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

affiche les 15 premières lignes de l’ensemble de données des variables décalées.,

print(df_lagged.head(15))

Cette commande affiche la sortie suivante:

Le jeu de données contenant 12 retardées des variables (Image par l’Auteur)

Les 12 premières lignes contiennent des NaNs introduit par la fonction de décalage. Supprimons ces 12 lignes.

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

imprimez les premières lignes juste pour confirmer que les Nan ont été supprimés.,

print(df_lagged.head())

avant de jeter un coup d’œil et de fouiller dans les données, nous mettrons de côté 20% de l’ensemble de données pour tester le modèle optimal.

créons maintenant toutes les combinaisons possibles de valeurs décalées. Pour cela, nous allons créer un dictionnaire dans lequel les touches contiennent différentes combinaisons des numéros de décalage 1 à 12.

Ensuite, nous allons parcourir toutes les combinaisons générées. Pour chaque combinaison de décalage, nous allons construire l’expression du modèle en utilisant la syntaxe patsy., Ensuite, nous construirons le modèle de régression linéaire pour cette combinaison de variables de décalage, nous entraînerons le modèle sur l’ensemble de données d’entraînement, nous demanderons à statsmodels de nous donner le score AIC pour le modèle, et nous noterons le score AIC et le « meilleur modèle » actuel si le score actuel est inférieur à la valeur minimale vue jusqu’à présent. Nous allons faire tout cela dans le morceau de code suivant:

enfin, imprimons le résumé du meilleur modèle OLSR selon notre critère d’évaluation. C’est le modèle avec le score AIC le plus bas.

print(best_olsr_model_results.summary())

Cette commande affiche la sortie suivante., J’ai mis en évidence quelques zones intéressantes dans la sortie:

sommaire du Modèle généré par statsmodels OLSResults.summary () (Image par L’auteur)

inspectons les sections en surbrillance.,

choix des paramètres du modèle

notre stratégie d’évaluation du modèle basée sur les scores AIC a identifié un modèle avec les paramètres suivants:

paramètres du modèle et leurs coefficients de régression (image par auteur)

les autres décalages, 3, 4, 7, 8, 9 ont été déterminés comme n’étant pas suffisamment significatifs pour expliquer conjointement la variance de la variable dépendante TAVG., Par exemple, nous voyons que TAVG_LAG_7 n’est pas présent dans le modèle optimal même si d’après les diagrammes de dispersion que nous avons vus plus tôt, il semblait y avoir une bonne corrélation entre la variable de réponse TAVG et TAVG_LAG_7. La raison de l’omission pourrait être que la plupart des informations dans TAVG_LAG_7 peuvent avoir été capturées par TAVG_LAG_6, et nous pouvons voir que TAVG_LAG_6 est inclus dans le modèle optimal.,

signification statistique des paramètres du modèle (le test t)

la deuxième chose à noter est que tous les paramètres du modèle optimal, à l’exception de TAVG_LAG_10, sont statistiquement significatifs individuellement à un niveau de confiance de 95% sur le test T à deux queues. La valeur p rapportée pour leur score  » t  » est inférieure à 0,025, qui est la valeur p seuil à un niveau de confiance de 95% sur le test à 2 queues.,

La valeur t et la p-valeur des paramètres du modèle (Image par l’Auteur)

Commune de la signification des paramètres du modèle (test F)

La troisième chose à noter est que tous les paramètres du modèle sont conjointement significatives dans l’explication de la variance de la variable de réponse TAVG.

cela peut être vu à partir de la f-statistique 1458. Sa valeur p est de 1,15 e-272 à un niveau de confiance de 95%., Cette valeur de probabilité est si incroyablement minuscule que vous n’avez même pas besoin de rechercher la table de distribution F pour vérifier que la statistique F est significative. Le modèle est certainement beaucoup mieux à expliquer la variance dans TAVG qu’un modèle d’interception uniquement.

F-statistic et sa p-valeur., Tous les paramètres mdoel sont significatifs conjointement (Image par auteur)

pour en savoir plus sur l’interprétation de la statistique F, veuillez vous référer à mon article sur le test F.

le score AIC et la Log-vraisemblance maximisée du modèle ajusté

enfin, regardons le score AIC de 1990.0 rapporté par statsmodels, et la log-vraisemblance maximisée de -986.86.,

Agrandie de la Log-vraisemblance et l’AIC score (Image par l’Auteur)

On peut voir que le modèle contient 8 paramètres (7 fois retardées des variables + ordonnée à l’origine). Donc, selon la formule pour le score AIC:

score AIC = 2 * Nombre de paramètres -2 * probabilité logarithmique maximisée
= 2*8 + 2*986.86 = 1989.72, arrondi à 1990. 0

qui est exactement la valeur rapportée par statmodels.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *