Une introduction douce à la régression de Poisson pour les données de comptage



La régression est une méthode statistique qui peut être utilisée pour déterminer la relation entre une ou plusieurs variables prédictives et une variable de réponse .

La régression de Poisson est un type spécial de régression dans lequel la variable de réponse est constituée de « données de comptage ». Les exemples suivants illustrent des cas où la régression de Poisson pourrait être utilisée :

Exemple 1 : La régression de Poisson peut être utilisée pour examiner le nombre d’étudiants qui obtiennent leur diplôme d’un programme collégial spécifique en fonction de leur moyenne cumulative au moment de leur entrée dans le programme et de leur sexe. Dans ce cas, « nombre d’étudiants diplômés » est la variable de réponse, « GPA à l’entrée dans le programme » est une variable prédictive continue et « sexe » est une variable prédictive catégorielle.

Exemple 2 : La régression de Poisson peut être utilisée pour examiner le nombre d’accidents de la circulation à une intersection particulière en fonction des conditions météorologiques (« ensoleillé », « nuageux », « pluvieux ») et si un événement spécial a lieu ou non dans la ville ( « Oui ou non »). Dans ce cas, le « nombre d’accidents de la route » est la variable de réponse, tandis que les « conditions météorologiques » et « l’événement spécial » sont toutes deux des variables prédictives catégorielles.

Exemple 3 : La régression de Poisson peut être utilisée pour examiner le nombre de personnes devant vous faisant la queue dans un magasin en fonction de l’heure de la journée, du jour de la semaine et du fait qu’une vente ait lieu ou non (« oui » ou « non). »). Dans ce cas, « le nombre de personnes devant vous dans la file d’attente » est la variable de réponse, « l’heure de la journée » et le « jour de la semaine » sont toutes deux des variables prédictives continues, et « la vente en cours » est une variable prédictive catégorielle.

Exemple 4 : La régression de Poisson peut être utilisée pour examiner le nombre de personnes qui terminent un triathlon en fonction des conditions météorologiques (« ensoleillé », « nuageux », « pluvieux ») et de la difficulté du parcours (« facile », « modéré », « difficile »). Dans ce cas, le « nombre de personnes qui terminent » est la variable de réponse, tandis que les « conditions météorologiques » et la « difficulté du parcours » sont toutes deux des variables prédictives catégorielles.

Effectuer une régression de Poisson vous permettra de voir quelles variables prédictives (le cas échéant) ont un effet statistiquement significatif sur la variable de réponse.

Pour les variables prédictives continues, vous serez en mesure d’interpréter comment une augmentation ou une diminution d’une unité de cette variable est associée à un changement en pourcentage des nombres de la variable de réponse (par exemple, « chaque augmentation d’un point supplémentaire de la GPA est associée à une augmentation de 12,5 % de la variable de réponse). le nombre d’étudiants diplômés »).

Pour les variables prédictives catégorielles, vous pourrez interpréter la variation en pourcentage des comptes d’un groupe (par exemple, le nombre de personnes qui terminent un triathlon par temps ensoleillé) par rapport à un autre groupe (par exemple, le nombre de personnes qui terminent un triathlon par temps pluvieux).

Hypothèses de la régression de Poisson

Avant de pouvoir effectuer une régression de Poisson, nous devons nous assurer que les hypothèses suivantes sont remplies afin que nos résultats de la régression de Poisson soient valides :

Hypothèse 1 : la variable de réponse est constituée de données de comptage. Dans la régression linéaire traditionnelle, la variable de réponse est constituée de données continues. Cependant, pour utiliser la régression de Poisson, notre variable de réponse doit être constituée de données de comptage comprenant des nombres entiers de 0 ou plus (par exemple 0, 1, 2, 14, 34, 49, 200, etc.). Notre variable de réponse ne peut pas contenir de valeurs négatives.

Hypothèse 2 : les observations sont indépendantes. Chaque observation de l’ensemble de données doit être indépendante les unes des autres. Cela signifie qu’une observation ne devrait pas pouvoir fournir d’informations sur une autre observation.

Hypothèse 3 : La distribution des comptes suit une distribution de Poisson. En conséquence, les décomptes observés et attendus devraient être similaires. Un moyen simple de tester cela consiste à tracer les décomptes attendus et observés et à voir s’ils sont similaires.

Hypothèse 4 : la moyenne et la variance du modèle sont égales. Cela résulte de l’hypothèse selon laquelle la distribution des comptes suit une distribution de Poisson. Pour une distribution de Poisson, la variance a la même valeur que la moyenne. Si cette hypothèse est satisfaite, alors vous avez une équidispersion . Cependant, cette hypothèse est souvent violée car la surdispersion est un problème courant.

Exemple : régression de Poisson dans R

Nous allons maintenant passer en revue un exemple de la manière de réaliser une régression de Poisson dans R.

Arrière-plan

Supposons que nous voulions savoir combien de bourses d’études un joueur de baseball d’un lycée d’un comté donné reçoit en fonction de sa division scolaire (« A », « B » ou « C ») et de sa note à l’examen d’entrée à l’université (mesurée de 0 à 100). ).

Le code suivant crée l’ensemble de données avec lequel nous allons travailler, qui comprend des données sur 100 joueurs de baseball :

#make this example reproducible
set.seed(1)

#create dataset
data <- data.frame(offers = c(rep(0, 50), rep(1, 30), rep(2, 10), rep(3, 7), rep(4, 3)),
                   division = sample(c("A", "B", "C"), 100, replace = TRUE),
                   exam = c(runif(50, 60, 80), runif(30, 65, 95), runif(20, 75, 95)))

Comprendre les données

Avant d’adapter réellement le modèle de régression de Poisson à cet ensemble de données, nous pouvons mieux comprendre les données en visualisant les premières lignes de l’ensemble de données et en utilisant la bibliothèque dplyr pour exécuter des statistiques récapitulatives :

#view dimensions of dataset
dim(data)

#[1] 100   3

#view first six lines of dataset
head(data)

#  offers division     exam
#1      0        A 73.09448
#2      0        B 67.06395
#3      0        B 65.40520
#4      0        C 79.85368
#5      0        A 72.66987
#6      0        C 64.26416

#view summary of each variable in dataset
summary(data)

#     offers     division      exam      
# Min.   :0.00   A:27     Min.   :60.26  
# 1st Qu.:0.00   B:38     1st Qu.:69.86  
# Median :0.50   C:35     Median :75.08  
# Mean   :0.83            Mean   :76.43  
# 3rd Qu.:1.00            3rd Qu.:82.87  
# Max.   :4.00            Max.   :93.87  

#view mean exam score by number of offers
library(dplyr)
data %>%
  group_by(offers) %>%
  summarise(mean_exam = mean(exam))

#  A tibble: 5 x 2
#  offers mean_exam
#        
#1      0      70.0
#2      1      80.8
#3      2      86.8
#4      3      83.9
#5      4      87.9

À partir du résultat ci-dessus, nous pouvons observer ce qui suit :

  • Il y a 100 lignes et 3 colonnes dans l’ensemble de données
  • Le nombre minimum d’offres reçues par un joueur était de zéro, le maximum était de quatre et la moyenne était de 0,83.
  • Dans cet ensemble de données, il y a 27 joueurs de la division « A », 38 joueurs de la division « B » et 35 joueurs de la division « C ».
  • La note minimale à l’examen était de 60,26, la note maximale de 93,87 et la moyenne de 76,43.
  • En général, les joueurs qui ont reçu plus d’offres de bourses ont tendance à obtenir des notes d’examen plus élevées (par exemple, la note moyenne à l’examen pour les joueurs qui n’ont reçu aucune offre était de 70,0 et la note moyenne à l’examen pour les joueurs qui ont reçu 4 offres était de 87,9).

Nous pouvons également créer un histogramme pour visualiser le nombre d’offres reçues par les joueurs en fonction de la division :

#load ggplot2 package
library(ggplot2)

#create histogram
ggplot(data, aes(offers, fill = division)) +
  geom_histogram(binwidth=.5, position="dodge")

Nous pouvons voir que la plupart des joueurs n’ont reçu aucune ou une seule offre. Ceci est typique des ensembles de données qui suivent les distributions de Poisson : une bonne partie des valeurs de réponse sont nulles.

Ajustement du modèle de régression de Poisson

Ensuite, nous pouvons ajuster le modèle en utilisant la fonction glm() et en spécifiant que nous souhaitons utiliser family = « poisson » pour le modèle :

#fit the model
model <- glm(offers ~ division + exam, family = "poisson", data = data)

#view model output
summary(model)

#Call:
#glm(formula = offers ~ division + exam, family = "poisson", data = data)
#
#Deviance Residuals: 
#    Min       1Q   Median       3Q      Max  
#-1.2562  -0.8467  -0.5657   0.3846   2.5033  
#
#Coefficients:
#            Estimate Std. Error z value Pr(>|z|)    
#(Intercept) -7.90602    1.13597  -6.960 3.41e-12 ***
#divisionB    0.17566    0.27257   0.644    0.519    
#divisionC   -0.05251    0.27819  -0.189    0.850    
#exam         0.09548    0.01322   7.221 5.15e-13 ***
#---
#Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#
#(Dispersion parameter for poisson family taken to be 1)
#
#    Null deviance: 138.069  on 99  degrees of freedom
#Residual deviance:  79.247  on 96  degrees of freedom
#AIC: 204.12
#
#Number of Fisher Scoring iterations: 5

À partir du résultat, nous pouvons observer ce qui suit :

  • Les coefficients de régression de Poisson, l’erreur type des estimations, les scores z et les valeurs p correspondantes sont tous fournis.
  • Le coefficient de l’examen est de 0,09548 , ce qui indique que le nombre de log attendu pour le nombre d’offres pour une augmentation d’une unité de l’examen est de 0,09548 . Un moyen plus simple d’interpréter cela est de prendre la valeur exponentiée, c’est-à-dire e 0,09548 = 1,10 . Cela signifie qu’il y a une augmentation de 10 % du nombre d’offres reçues pour chaque point supplémentaire obtenu à l’examen d’entrée.
  • Le coefficient de la division B est de 0,1756 , ce qui indique que le nombre attendu d’offres pour un joueur de la division B est 0,1756 plus élevé que pour un joueur de la division A. Une façon plus simple d’interpréter cela est de prendre la valeur exponentiée, c’est-à-dire e 0,1756 = 1,19 . Cela signifie que les joueurs de la division B reçoivent 19 % d’offres en plus que les joueurs de la division A. A noter que cette différence n’est pas statistiquement significative (p = 0,519).
  • Le coefficient de la division C est -0,05251 , ce qui indique que le nombre de log attendu pour le nombre d’offres pour un joueur de la division C est inférieur de 0,05251 à celui d’un joueur de la division A. Une façon plus simple d’interpréter cela est de prendre la valeur exponentiée, c’est-à-dire est e 0,05251 = 0,94 . Cela signifie que les joueurs de la division C reçoivent 6 % d’offres en moins que les joueurs de la division A. A noter que cette différence n’est pas statistiquement significative (p = 850).

Des informations sur la déviance du modèle sont également fournies. Nous nous intéressons surtout à la déviance résiduelle , qui a une valeur de 79,247 sur 96 degrés de liberté. À l’aide de ces chiffres, nous pouvons effectuer un test d’ajustement du chi carré pour voir si le modèle correspond aux données. Le code suivant illustre comment effectuer ce test :

pchisq(79.24679, 96, lower.tail = FALSE)

#[1] 0.8922676

La valeur p pour ce test est de 0,89 , ce qui est bien supérieur au niveau de signification de 0,05. Nous pouvons conclure que les données correspondent raisonnablement bien au modèle.

Visualiser les résultats

Nous pouvons également créer un graphique qui montre le nombre prévu d’offres de bourses reçues en fonction des résultats de la division et de l’examen d’entrée en utilisant le code suivant :

#find predicted number of offers using the fitted Poisson regression model
data$phat <- predict(model, type="response")

#create plot that shows number of offers based on division and exam score
ggplot(data, aes(x = exam, y = phat, color = division)) +
  geom_point(aes(y = offers), alpha = .7, position = position_jitter(h = .2)) +
  geom_line() +
  labs(x = "Entrance Exam Score", y = "Expected number of scholarship offers")

Le graphique montre le plus grand nombre d’offres de bourses attendues pour les joueurs ayant obtenu un score élevé à l’examen d’entrée. De plus, nous pouvons voir que les joueurs de la division B (la ligne verte) devraient recevoir plus d’offres en général que les joueurs de la division A ou de la division C.

Rapporter les résultats

Enfin, nous pouvons rapporter les résultats de la régression de manière à résumer nos conclusions :

Une régression de Poisson a été exécutée pour prédire le nombre d’offres de bourses reçues par les joueurs de baseball en fonction des résultats des divisions et des examens d’entrée. Pour chaque point supplémentaire obtenu à l’examen d’entrée, le nombre d’offres reçues augmente de 10 % ( p < 0,0001) . La division ne s’est pas avérée statistiquement significative.

Ressources additionnelles

Introduction à la régression linéaire simple
Introduction à la régression linéaire multiple
Une introduction à la régression polynomiale

Ajouter un commentaire

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