> Modules non standards > statsmodels > Modèle linéaire généralisé
Modèle linéaire généralisé
Modèle de Poisson
Permet de modéliser des comptes (la variable prédite est à valeurs entières).
3 formes :
- forme avec la classe directement : mdl = statsmodels.discrete.discrete_model.Poisson(y, X), mais si on a des variables nominales à k niveaux, il faut les recoder en k variables qui prennent des valeurs 0 ou 1.
- en utilisant une fonction plus simple : mdl = statsmodels.discrete.discrete_model.Poisson.from_formula('y ~ x1 + x2', data = df) : si variables nominales, elles sont automatiquement recodées !
- ou même avec une fonction encore plus simple mdl = statsmodels.formula.api.poisson('y ~ x1 + x2', data = df)
Fitting :
- mdl est de type statsmodels.discrete.discrete_model.Poisson
- on fitte ensuite le modèle : result = mdl.fit()
Résultats :
- result.summary() : donne les résultats de prédiction.
- result.summary2() : alternative, notamment avec le AIC et BIC
- mdl.endog : la valeur de la variable prédite (y)
- mdl.exog : les valeurs des variables indépendantes (X)
- result.params : les paramètres du modèle (coefficients)
- result.pvalues : les p-values du modèle
- result.resid_response : les résidus.
- mdl.loglike(result.params) : le log likelihood du modèle (doit être le plus élevé possible)
- mdl.loglikeobs(result.params) : le log likelihood de chaque observation
- mdl.predict(result.params, statsmodels.api.add_constant(X1)) : pour faire la prédiction sur des nouvelles variables (il ne faut pas oublier d'ajouter la colonne de 1 pour l'ordonnée à l'origine)
Modèle de Negative Binomial
Il faut l'utiliser pour estimer des comptes quand la variance est plus grande que la moyenne (et donc modèle de Poisson n'est pas valide).
3 formes, comme Poisson :
- forme avec la classe directement : statsmodels.discrete.discrete_model.NegativeBinomial(y, X, alpha = 1), mais si on a des variables nominales à k niveaux, il faut les transformer (voir Poisson)
- en utilisation une fonction plus simple : statsmodels.discrete.discrete_model.NegativeBinomial.from_formula('y ~ x1 + x2', data = df)
- ou même avec une fonction encore plus simple mdl = statsmodels.formula.api.negativebinomial('y ~ x1 + x2', data = df)
- par défaut, le paramètre alpha gouverne la variance : variance = moyenne + alpha * moyenne ^ 2
Fitting :
- mdl est de type statsmodels.discrete.discrete_model.NegativeBinomial
- on fitte ensuite le modèle : result = mdl.fit()
Résultats :
- voir le fitting avec Poisson.
- le summary indique la valeur de alpha
Copyright python-simple.com
programmer en python, tutoriel python, graphes en python, Aymeric Duclert