Exemples de Régression de poisson gonflée à zéro | Analyse de données Stata

Informations sur la version: Le code de cette page a été testé dans Stata 12.

La régression de poisson gonflée à zéro est utilisée pour modéliser les données de comptage qui ont un excès de zéro comptage. De plus, la théorie suggère que les zéros excédentaires sont générés par un processus distinct des valeurs de comptage et que les zéros excédentaires peuvent être modélisés indépendamment. Ainsi, le modèle zip comporte deux parties, un modèle de comptage de poisson et le modèle logit pour prédire les zéros en excès. Vous pouvez consulter ces pages d’exemples d’analyse de données, Régression de Poisson et Régression Logit.

Remarque: Le but de cette page est de montrer comment utiliser différentes commandes d’analyse de données. Il ne couvre pas tous les aspects du processus de recherche que les chercheurs sont censés effectuer. En particulier, il ne couvre pas le nettoyage et la vérification des données, la vérification des hypothèses, les diagnostics des modèles et les analyses de suivi potentielles.

Exemples de régression de Poisson gonflée à zéro

Exemple 1.

Les administrateurs scolaires étudient le comportement de fréquentation des élèves du secondaire sur un semestre dans deux écoles. La fréquentation est mesurée par le nombre de jours d’absence et est prédite par le sexe de l’élève et les scores standardisés des tests en mathématiques et en arts du langage. De nombreux étudiants n’ont pas d’absences pendant le semestre.

Exemple 2.

Les biologistes de la faune de l’État veulent modéliser le nombre de poissons capturés par les pêcheurs dans un parc d’État. On demande aux visiteurs s’ils ont ou non un camping-car, combien de personnes étaient dans le groupe, y avait-il des enfants dans le groupe et combien de poissons ont été capturés.Certains visiteurs ne pêchent pas, mais il n’y a pas de données sur le fait qu’une personne ait pêché ou non. Certains visiteurs qui ont pêché n’ont attrapé aucun poisson, il y a donc des zéros en excès dans les données à cause des personnes qui n’ont pas pêché.

Description des données

Poursuivons l’exemple 2 ci-dessus.

Nous avons des données sur 250 groupes qui se sont rendus dans un parc. Chaque groupe a été interrogé sur le nombre de poissons qu’il a capturés (compte), le nombre d’enfants dans le groupe (enfant), le nombre de personnes dans le groupe (personnes) et s’il a amené ou non un camping-car au parc (camping-car).

En plus de prédire le nombre de poissons capturés, il y a un intérêt à prédire l’existence de zéros en excès, c’est-à-dire les zéros qui n’étaient pas simplement le résultat d’une pêche de malchance. Nous utiliserons les variables enfant, personnes et campeur dans notre modèle. Regardons les données.

Méthodes d’analyse que vous pourriez envisager

Voici une liste de certaines méthodes d’analyse que vous avez peut-être rencontrées.Certaines des méthodes énumérées sont tout à fait raisonnables tandis que d’autres sont tombées en disgrâce ou ont des limites.

  • Régression de poisson gonflée à zéro – Au centre de cette page Web.
  • Régression binomiale négative gonflée à Zéro – La régression binomiale négative fait mieux avec des données dispersées, c’est-à-dire une variance beaucoup plus grande que la moyenne.
  • Modèles de comptage ordinaires – Les modèles binomiaux de Poisson ou négatifs peuvent être plus appropriés s’il n’y a pas de zéros en excès.Régression OLS
  • – Vous pouvez essayer d’analyser ces données à l’aide de la régression OLS. Cependant, les données de comptage sont très non normales et ne sont pas bien estimées par régression OLS.

Régression de poisson gonflée à zéro

Nous exécuterons la commande zip avec child et camper comme prédicteurs des comptes, les personnes comme prédicteurs des zéros en excès. Nous avons inclus l’option vuong qui fournit un test du modèle gonflé à zéro par rapport au modèle de poisson standard.

zip count child camper, inflate(persons) vuongFitting constant-only model:Iteration 0: log likelihood = -1347.807 Iteration 1: log likelihood = -1315.5343 Iteration 2: log likelihood = -1126.3689 Iteration 3: log likelihood = -1125.5358 Iteration 4: log likelihood = -1125.5357 Iteration 5: log likelihood = -1125.5357 Fitting full model:Iteration 0: log likelihood = -1125.5357 Iteration 1: log likelihood = -1044.8553 Iteration 2: log likelihood = -1031.8733 Iteration 3: log likelihood = -1031.6089 Iteration 4: log likelihood = -1031.6084 Iteration 5: log likelihood = -1031.6084 Zero-inflated Poisson regression Number of obs = 250 Nonzero obs = 108 Zero obs = 142Inflation model = logit LR chi2(2) = 187.85Log likelihood = -1031.608 Prob > chi2 = 0.0000------------------------------------------------------------------------------ count | Coef. Std. Err. z P>|z| -------------+----------------------------------------------------------------count | child | -1.042838 .0999883 -10.43 0.000 -1.238812 -.846865 1.camper | .8340222 .0936268 8.91 0.000 .650517 1.017527 _cons | 1.597889 .0855382 18.68 0.000 1.430237 1.76554-------------+----------------------------------------------------------------inflate | persons | -.5643472 .1629638 -3.46 0.001 -.8837503 -.244944 _cons | 1.297439 .3738522 3.47 0.001 .5647022 2.030176------------------------------------------------------------------------------Vuong test of zip vs. standard Poisson: z = 3.57 Pr>z = 0.0002

La sortie ressemble beaucoup à la sortie d’une régression OLS:

  • Commence par le journal d’itération donnant les valeurs des probabilités du journal à partir d’un modèle qui n’a pas de prédicteurs. La dernière valeur du journal est la valeur finale de la probabilité du journal pour le modèle complet et est répétée ci-dessous.
  • Vient ensuite les informations d’en-tête. Sur le côté droit, le nombre d’observations utilisées (250), le nombre d’observations non nulles (108) sont donnés ainsi que le rapport de vraisemblance du chi carré. Cela compare le modèle complet à un modèle sans prédicteurs de comptage, ce qui donne une différence de deux degrés de liberté. Ceci est suivi de la valeur p pour le chi carré. Le modèle, dans son ensemble, est statistiquement significatif.
  • En dessous de l’en-tête, vous trouverez les coefficients de régression de poisson pour chacun des nombres prédisant des variables en fonction des erreurs-types, des scores z, des valeurs p et des intervalles de confiance à 95% pour les coefficients efficaces.
  • Suivent les coefficients logit de la variable prédisant les zéros en excès avec ses erreurs-types, ses scores z, ses valeurs p et ses intervalles de confiance.
  • Ci-dessous les différents coefficients, vous trouverez les résultats du test Vuong. Le test de Vuong compare le modèle gonflé à zéro à un modèle de régression de poisson ordinaire.Un test z significatif indique que le modèle gonflé à zéro est meilleur.
  • Cameron et Trivedi (2009) recommandent des erreurs-types robustes pour les modèles de poisson.Nous allons relancer le modèle avec l’option vce (robuste). Nous n’avons pas inclus cette optiondans le premier modèle car les options robuste et vuong ne peuvent pas être utilisées dans le même modèle.

zip count child i.camper, inflate(persons) vce(robust)Fitting constant-only model:Iteration 0: log pseudolikelihood = -1347.807 Iteration 1: log pseudolikelihood = -1315.5343 Iteration 2: log pseudolikelihood = -1126.3689 Iteration 3: log pseudolikelihood = -1125.5358 Iteration 4: log pseudolikelihood = -1125.5357 Iteration 5: log pseudolikelihood = -1125.5357 Fitting full model:Iteration 0: log pseudolikelihood = -1125.5357 Iteration 1: log pseudolikelihood = -1044.8553 Iteration 2: log pseudolikelihood = -1031.8733 Iteration 3: log pseudolikelihood = -1031.6089 Iteration 4: log pseudolikelihood = -1031.6084 Iteration 5: log pseudolikelihood = -1031.6084 Zero-inflated Poisson regression Number of obs = 250 Nonzero obs = 108 Zero obs = 142Inflation model = logit Wald chi2(2) = 7.25Log pseudolikelihood = -1031.608 Prob > chi2 = 0.0266------------------------------------------------------------------------------ | Robust count | Coef. Std. Err. z P>|z| -------------+----------------------------------------------------------------count | child | -1.042838 .3893772 -2.68 0.007 -1.806004 -.2796731 1.camper | .8340222 .4076029 2.05 0.041 .0351352 1.632909 _cons | 1.597889 .2934631 5.44 0.000 1.022711 2.173066-------------+----------------------------------------------------------------inflate | persons | -.5643472 .2888849 -1.95 0.051 -1.130551 .0018567 _cons | 1.297439 .493986 2.63 0.009 .3292445 2.265634------------------------------------------------------------------------------

Nous pouvons maintenant passer aux détails des résultats individuels.

  • L’utilisation de l’option robuste a entraîné un changement assez important dans le chi-carré du modèle, qui est maintenant un chi-carré Wald. Cette statistique est basée sur des pseudo-probabilités de log au lieu de log-probabilités.
  • Les coefficients pour enfant et campeur peuvent être interprétés comme suit:
    • Pour chaque augmentation unitaire de l’enfant, le nombre de logs attendu de la variable de réponse diminue de 1,043.
    • Être campeur augmente le nombre de bûches attendu de.834.
  • Le coefficient de gonflage pour les personnessuggère que pour chaque unité augmente en personne, les chances logarithmiques d’un zéro gonflé diminuent de.564.

Nous pouvons utiliser les marges (introduites dans Stata 11) pour aider à comprendre notre modèle. Nous allons d’abord calculer les nombres attendus pour la variable catégorielle camper tout en maintenant la variable continue enfant à sa valeur moyenne à l’aide de l’option atmeans.

margins camper, atmeansAdjusted predictions Number of obs = 250Model VCE : RobustExpression : Predicted number of events, predict()at : child = .684 (mean) 0.camper = .412 (mean) 1.camper = .588 (mean) persons = 2.528 (mean)------------------------------------------------------------------------------ | Delta-method | Margin Std. Err. z P>|z| -------------+---------------------------------------------------------------- camper | 0 | 1.289132 .4393168 2.93 0.003 .4280866 2.150177 1 | 2.968305 .619339 4.79 0.000 1.754423 4.182187------------------------------------------------------------------------------

Le nombre attendu pour le nombre de poissons capturés par les non-campeurs est de 1,289 tandis que pour les campeurs, il est de 2,968 au moyen des enfants et des personnes.

En utilisant l’option dydx, on calcule la différence de dénombrements attendus entre camper= 0 et camper=1 tout en maintenant child à sa moyenne de.684 et personnes à sa moyenne de 2,528.

margins, dydx(camper) atmeansConditional marginal effects Number of obs = 250Model VCE : RobustExpression : Predicted number of events, predict()dy/dx w.r.t. : 1.camperat : child = .684 (mean) 0.camper = .412 (mean) 1.camper = .588 (mean) persons = 2.528 (mean)------------------------------------------------------------------------------ | Delta-method | dy/dx Std. Err. z P>|z| -------------+---------------------------------------------------------------- 1.camper | 1.679173 .7754611 2.17 0.030 .1592975 3.199049------------------------------------------------------------------------------Note: dy/dx for factor levels is the discrete change from the base level.

La différence entre le nombre de poissons capturés par les campeurs et les non-campeurs est de 1,679, ce qui est statistiquement significatif.

Une dernière commande margins donnera les comptes attendus pour les valeurs d’enfant de zéro à trois aux deux niveaux de campeur.

Le nombre attendu de poissons capturés diminue à mesure que le nombre d’enfants augmente pour les personnes avec et sans campeurs.

Un certain nombre d’indicateurs d’ajustement de modèle sont disponibles à l’aide de la commande fitstat, qui fait partie des utilitaires spostado de J. Scott Long et Jeremy Freese (recherche spostado).

fitstatMeasures of Fit for zip of countLog-Lik Intercept Only: -1127.023 Log-Lik Full Model: -1031.608D(244): 2063.217 LR(4): 190.829 Prob > LR: 0.000McFadden's R2: 0.085 McFadden's Adj R2: 0.079ML (Cox-Snell) R2: 0.534 Cragg-Uhler(Nagelkerke) R2: 0.534AIC: 8.301 AIC*n: 2075.217BIC: 715.980 BIC': -168.743BIC used by Stata: 2090.824 AIC used by Stata: 2073.217

Choses à considérer

  • Puisque zip a à la fois un modèle count et un modèle logit, chacun des deux modèles devrait avoir de bons prédicteurs. Les deux modèles n’ont pas nécessairement besoin d’utiliser les mêmes prédicteurs.
  • Des problèmes de prédiction parfaite, de séparation ou de séparation partielle peuvent survenir dans la partie logique du modèle gonflé à zéro.
  • Les données de comptage utilisent souvent des variables d’exposition pour indiquer le nombre de fois où l’événement a pu se produire. Vous pouvez intégrer l’exposition dans votre modèle en utilisant l’option exposure().
  • Il n’est pas recommandé d’appliquer des modèles de poisson gonflés à zéro aux petits échantillons. Ce qui constitue un petit échantillon ne semble pas être clairement défini dans la littérature.
  • Les valeurs pseudo-R-carrées diffèrent des valeurs OLS R-carrées, veuillez consulter la FAQ: Que sont les pseudo-R-carrées? pour une discussion sur cette question.

Voir aussi

  • Manuel Stata en ligne
    • zip
  • Commandes Stata associées
    • nbreg – régression binomiale négative gonflée à zéro.
  • Cameron, A. Colin et Trivedi, P.K. (2009) Microéconométrie à l’aide de stata. Station universitaire, TX: Presse Stata.
  • Long, J. Scott, & Freese, Jeremy (2006). Modèles de régression pour les Variables Dépendantes Catégorielles Utilisant Stata (Deuxième Édition). Station universitaire, TX: Presse Stata.
  • Long, J. Scott (1997). Modèles de régression pour les Variables Dépendantes Catégorielles et Limitées. Thousand Oaks, CA: Sage Publications.



+