Statsmodels – Analyse statistique avec Python

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction à Statsmodels

Statsmodels est une bibliothèque Python puissante dédiée à l'analyse statistique des données. Elle fournit des outils pour construire des modèles de régression, estimer des paramètres, tester des hypothèses statistiques et analyser des séries temporelles. Largement utilisée en économétrie, biostatistique et sciences sociales, Statsmodels offre une interprétation statistique approfondie des résultats.

Fonctionnalités clés de la bibliothèque Statsmodels

Analyse de régression

Statsmodels propose des fonctionnalités étendues pour l'analyse de régression, notamment les moindres carrés ordinaires (OLS), les modèles linéaires généralisés (GLM), la régression robuste et les modèles de données de panel. La bibliothèque prend en charge les méthodes d'estimation paramétriques et non paramétriques.

Analyse des séries temporelles

Le module de séries temporelles inclut les modèles ARIMA, SARIMA, lissage exponentiel, autorégression vectorielle (VAR) et bien d'autres. Des fonctions sont disponibles pour tester la stationnarité, décomposer les séries et effectuer des prévisions.

Tests d'hypothèses statistiques

La bibliothèque contient un large éventail de tests statistiques : tests t, tests F, tests de normalité, tests d'égalité des variances, tests d'autocorrélation, et bien d'autres.

Analyse de la variance (ANOVA)

Les modèles ANOVA à un et plusieurs facteurs, ANCOVA, mesures répétées et effets mixtes sont pris en charge.

Méthodes non paramétriques

Inclut des méthodes d'estimation de densité par noyau, de régression non paramétrique et des tests basés sur les rangs.

Installation et importation de Statsmodels

Installation de la bibliothèque

L'installation de la bibliothèque se fait avec la commande standard :

pip install statsmodels

Pour des fonctionnalités supplémentaires, installez avec toutes les dépendances :

pip install statsmodels[complete]

Importation des composants nécessaires

import statsmodels.api as sm
import statsmodels.formula.api as smf
import statsmodels.tsa.api as tsa
import statsmodels.stats.api as sms

Structure de la bibliothèque et modules principaux

Interfaces API principales

statsmodels.api — interface classique avec spécification directe des matrices de données

statsmodels.formula.api — interface basée sur des formules, similaire à R

statsmodels.tsa — module pour l'analyse des séries temporelles

statsmodels.stats — tests statistiques et diagnostics

statsmodels.graphics — visualisation des résultats

Préparation et manipulation des données

Statsmodels fonctionne de manière optimale avec pandas.DataFrame :

import pandas as pd
import numpy as np

# Chargement des données
data = pd.read_csv("dataset.csv")

# Vérification des valeurs manquantes
print(data.isnull().sum())

# Statistiques descriptives
print(data.describe())

Régression linéaire (OLS)

Interface classique

import statsmodels.api as sm

# Préparation des données
X = data[["x1", "x2", "x3"]]
X = sm.add_constant(X)  # ajout de la constante
y = data["y"]

# Construction du modèle
model = sm.OLS(y, X).fit()
print(model.summary())

# Extraction des coefficients
print("Coefficients :", model.params)
print("P-valeurs :", model.pvalues)
print("R-carré :", model.rsquared)

Interface basée sur les formules

import statsmodels.formula.api as smf

# Utilisation des formules
model = smf.ols("y ~ x1 + x2 + x3", data=data).fit()
print(model.summary())

# Interaction entre variables
model_interaction = smf.ols("y ~ x1 * x2 + x3", data=data).fit()

# Variables catégorielles
model_cat = smf.ols("y ~ C(category) + x1", data=data).fit()

Modèles linéaires généralisés (GLM)

Les GLM étendent la régression linéaire à des distributions non normales :

import statsmodels.api as sm

# Régression logistique (binomiale)
model_logit = sm.GLM(y_binaire, X, family=sm.families.Binomial()).fit()
print(model_logit.summary())

# Régression de Poisson (comptage)
model_poisson = sm.GLM(y_comptage, X, family=sm.families.Poisson()).fit()

# Régression Gamma (données continues positives)
model_gamma = sm.GLM(y_positif, X, family=sm.families.Gamma(link=sm.families.links.Log())).fit()

Recommendations