Étape 1 : Installer les Bibliothèques
pip install pandas numpy linearmodels statsmodels matplotlib
1. Importer les Bibliothèques
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from linearmodels.panel import PanelOLS
from statsmodels.formula.api import ols
from linearmodels.datasets import wage_panel
# Charger les données panel
data = wage_panel.load()
df = data.data
# Aperçu des données
print(df.head())
print(df.info())
# Définir l'index de panel : individu et année
df = df.set_index(['nr', 'year'])
# Vérifier les données après transformation
print(df.head())
# Calcul du salaire moyen par année
df.groupby('year')['lwage'].mean().plot(kind='line')
plt.title('Évolution du salaire moyen par année')
plt.ylabel('Log du Salaire')
plt.xlabel('Année')
plt.show()
# Modèle Pooled OLS
pooled_model = PanelOLS.from_formula('lwage ~ 1 + exper + union', data=df)
pooled_result = pooled_model.fit()
print(pooled_result.summary)
# Modèle Pooled OLS
pooled_model = PanelOLS.from_formula('lwage ~ 1 + exper + union', data=df)
pooled_result = pooled_model.fit()
print(pooled_result.summary)
# Modèle à Effets Fixes (individu)
fixed_effects_model = PanelOLS.from_formula('lwage ~ 1 + exper + union + EntityEffects', data=df)
fixed_effects_result = fixed_effects_model.fit()
print(fixed_effects_result.summary)
# Modèle à Effets Aléatoires
from linearmodels.panel import RandomEffects
random_effects_model = RandomEffects.from_formula('lwage ~ 1 + exper + union', data=df)
random_effects_result = random_effects_model.fit()
print(random_effects_result.summary)
from statsmodels.stats.outliers_influence import variance_inflation_factor
# Calcul du VIF pour vérifier la colinéarité entre variables explicatives
X = df[['exper', 'union']]
vif_data = pd.DataFrame()
vif_data["Variable"] = X.columns
vif_data["VIF"] = [variance_inflation_factor(X.values, i) for i in range(X.shape[1])]
print(vif_data)
Étape 3 : Résultats et Interprétation
Modèle Pooled OLS : Ce modèle suppose que tous les individus et périodes sont identiques. Le R² peut être plus faible car il ne contrôle pas les spécificités.
Modèle à Effets Fixes : Ce modèle est adapté si les différences entre individus sont corrélées avec les variables explicatives. Il permet de contrôler les effets non observés constants au fil du temps.
Modèle à Effets Aléatoires : Ce modèle est préférable si les effets spécifiques ne sont pas corrélés avec les variables explicatives.
Test de Hausman : Il vous permet de choisir entre effets fixes et aléatoires. Si le test est significatif, vous devriez privilégier le modèle à effets fixes.