Een vriendelijke introductie tot poisson-regressie voor telgegevens


Regressie is een statistische methode die kan worden gebruikt om de relatie tussen een of meer voorspellende variabelen en eenresponsvariabele te bepalen.

Poisson-regressie is een speciaal type regressie waarbij de responsvariabele ‚telgegevens‘ is. De volgende voorbeelden illustreren gevallen waarin Poisson-regressie zou kunnen worden gebruikt:

Voorbeeld 1: Poisson-regressie kan worden gebruikt om het aantal studenten te onderzoeken dat afstudeert aan een specifiek universiteitsprogramma op basis van hun GPA toen ze aan het programma begonnen en hun geslacht. In dit geval is ‘aantal studenten dat afstudeert’ de antwoordvariabele, is ‘GPA bij aanvang van het programma’ een continue voorspellende variabele en is ‘geslacht’ een categorische voorspellende variabele.

Voorbeeld 2: Poisson-regressie kan worden gebruikt om het aantal verkeersongevallen op een bepaald kruispunt te onderzoeken op basis van de weersomstandigheden (“zonnig”, “bewolkt”, “regenachtig”) en of er zich al dan niet een bijzondere gebeurtenis in de stad voordoet (“Ja of niet“). In dit geval is ‘aantal verkeersongevallen’ de responsvariabele, terwijl ‘weersomstandigheden’ en ‘bijzondere gebeurtenis’ beide categorische voorspellende variabelen zijn.

Voorbeeld 3: Poisson-regressie kan worden gebruikt om het aantal mensen voor u in de rij in een winkel te onderzoeken op basis van het tijdstip en de dag van de week en of er wel of niet een uitverkoop plaatsvindt („Ja of nee“) . „). In dit geval is ‘het aantal mensen voor u in de rij’ de responsvariabele, zijn ‘tijd van de dag’ en ‘dag van de week’ beide continue voorspellende variabelen en is ‘uitverkoop in uitvoering’ een categorische voorspellende variabele.

Voorbeeld 4: Poisson-regressie kan worden gebruikt om het aantal mensen te onderzoeken dat een triatlon voltooit op basis van de weersomstandigheden (“zonnig”, “bewolkt”, “regenachtig”) en de moeilijkheidsgraad van het parcours (“gemakkelijk”, “regenachtig”). matig”, “moeilijk”). In dit geval is ‘aantal mensen dat de finish haalt’ de responsvariabele, terwijl ‘weersomstandigheden’ en ‘moeilijkheidsgraad van de route’ beide categorische voorspellende variabelen zijn.

Door een Poisson-regressie uit te voeren, kunt u zien welke voorspellende variabelen (indien aanwezig) een statistisch significant effect hebben op de responsvariabele.

Voor continue voorspellende variabelen kunt u interpreteren hoe een stijging of daling van één eenheid in die variabele verband houdt met een procentuele verandering in de cijfers van de responsvariabele (bijvoorbeeld: „elk extra punt van één eenheid stijging in GPA wordt geassocieerd met een stijging van 12,5% in de responsvariabele).

Voor categorische voorspellende variabelen kunt u de procentuele verandering in de tellingen van de ene groep interpreteren (bijvoorbeeld het aantal mensen dat een triatlon voltooit op een zonnige dag) in vergelijking met een andere groep (bijvoorbeeld het aantal mensen dat een triatlon voltooit). triatlon bij regenachtig weer).

Aannames van Poisson-regressie

Voordat we een Poisson-regressie kunnen uitvoeren, moeten we ervoor zorgen dat aan de volgende aannames wordt voldaan, zodat onze Poisson-regressieresultaten geldig zijn:

Aanname 1: De responsvariabele bestaat uit telgegevens. Bij traditionele lineaire regressie bestaat de responsvariabele uit continue gegevens. Om Poisson-regressie te gebruiken, moet onze responsvariabele echter bestaan uit telgegevens inclusief gehele getallen van 0 of groter (bijvoorbeeld 0, 1, 2, 14, 34, 49, 200, enz.). Onze responsvariabele kan geen negatieve waarden bevatten.

Hypothese 2: de waarnemingen zijn onafhankelijk. Elke waarneming in de dataset moet onafhankelijk van elkaar zijn. Dit betekent dat de ene waarneming geen informatie mag kunnen verschaffen over een andere waarneming.

Hypothese 3: De verdeling van rekeningen volgt een Poissonverdeling. Als gevolg hiervan moeten de waargenomen en verwachte tellingen vergelijkbaar zijn. Een eenvoudige manier om dit te testen is door de verwachte en waargenomen aantallen in kaart te brengen en te kijken of ze vergelijkbaar zijn.

Aanname 4: Het gemiddelde en de variantie van het model zijn gelijk. Dit vloeit voort uit de aanname dat de verdeling van tellingen een Poisson-verdeling volgt. Voor een Poisson-verdeling heeft de variantie dezelfde waarde als het gemiddelde. Als aan deze veronderstelling wordt voldaan, heb je evenwichtsverspreiding . Deze veronderstelling wordt echter vaak geschonden omdat overspreiding een veel voorkomend probleem is.

Voorbeeld: Poisson-regressie in R

We zullen nu een voorbeeld bekijken van hoe Poisson-regressie in R kan worden uitgevoerd.

Achtergrond

Stel dat we willen weten hoeveel beurzen een honkbalspeler op een middelbare school in een bepaalde provincie ontvangt op basis van zijn schoolafdeling („A“, „B“ of „C“) en zijn schoolcijfer. toelatingsexamen voor de universiteit (gemeten van 0 tot 100). ).

Met de volgende code wordt de dataset gemaakt waarmee we gaan werken, die gegevens over 100 honkbalspelers bevat:

 #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)))

De gegevens begrijpen

Voordat we het Poisson-regressiemodel daadwerkelijk op deze dataset passen, kunnen we de gegevens beter begrijpen door de eerste paar rijen van de dataset te visualiseren en de dplyr- bibliotheek te gebruiken om samenvattende statistieken uit te voeren:

 #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 To: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) %>%
  summarize (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

Uit het bovenstaande resultaat kunnen we het volgende waarnemen:

  • Er zijn 100 rijen en 3 kolommen in de gegevensset
  • Het minimum aantal aanbiedingen dat een speler ontving was nul, het maximum was vier en het gemiddelde was 0,83.
  • In deze dataset zijn er 27 spelers uit de “A”-divisie, 38 spelers uit de “B”-divisie en 35 spelers uit de “C”-divisie.
  • De minimale examenscore was 60,26, de maximale score was 93,87 en het gemiddelde was 76,43.
  • Over het algemeen hebben spelers die meer beursaanbiedingen hebben ontvangen doorgaans hogere examenscores (de gemiddelde examenscore voor spelers die geen aanbiedingen hebben ontvangen was bijvoorbeeld 70,0 en de gemiddelde beoordelingsscore voor spelers die vier aanbiedingen hebben ontvangen was 87,9).

We kunnen ook een histogram maken om het aantal aanbiedingen te visualiseren dat door spelers is ontvangen op basis van de verdeling:

 #load ggplot2 package
library(ggplot2)

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

We zien dat de meeste spelers geen of slechts één aanbieding hebben ontvangen. Dit is typerend voor datasets die Poisson-verdelingen volgen: een groot deel van de responswaarden is nul.

Passend bij het Poisson-regressiemodel

Vervolgens kunnen we het model aanpassen met behulp van de glm() functie en specificeren dat we family=“fish“ voor het model willen gebruiken:

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

#view model output
summary(model)

#Call:
#glm(formula = offers ~ division + exam, family = "fish", 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 ***
#---
#Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#
#(Dispersion parameter for fish 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

Uit het resultaat kunnen we het volgende opmaken:

  • Poisson-regressiecoëfficiënten, standaardfout van schattingen, z-scores en bijbehorende p-waarden worden allemaal verstrekt.
  • De beoordelingscoëfficiënt is 0,09548 , wat aangeeft dat het verwachte loggetal voor het aantal aanbiedingen voor een beoordelingsverhoging van één eenheid 0,09548 is. Een eenvoudigere manier om dit te interpreteren is door de geëxponentieerde waarde te nemen, dwz e 0,09548 = 1,10 . Dit betekent dat er een stijging van 10% is in het aantal ontvangen aanbiedingen voor elk extra punt verdiend op het toelatingsexamen.
  • De coëfficiënt voor Divisie B is 0,1756 , wat aangeeft dat het verwachte aantal aanbiedingen voor een speler in Divisie B 0,1756 hoger is dan voor een speler in Divisie A. Een eenvoudigere manier om dit te interpreteren is door de geëxponentieerde waarde te nemen, dat wil zeggen e 0,1756 = 1.19 . Dit betekent dat spelers in divisie B 19% meer aanbiedingen ontvangen dan spelers in divisie A. Merk op dat dit verschil niet statistisch significant is (p = 0,519).
  • De coëfficiënt voor Divisie C is -0,05251 , wat aangeeft dat het verwachte loggetal voor het aantal aanbiedingen voor een speler in Divisie C 0,05251 lager is dan voor een speler in Divisie A. Een eenvoudigere manier om dit te interpreteren is door de geëxponentieerde waarde te nemen , dwz e 0,05251 = 0,94 . Dit betekent dat spelers in divisie C 6% minder aanbiedingen krijgen dan spelers in divisie A. Merk op dat dit verschil niet statistisch significant is (p = 850).

Er wordt ook informatie verstrekt over modelafwijkingen. We zijn vooral geïnteresseerd in de resterende afwijking , die een waarde heeft van 79.247 van de 96 vrijheidsgraden. Met behulp van deze cijfers kunnen we een chikwadraat-goodness-of-fit-test uitvoeren om te zien of het model bij de gegevens past. De volgende code illustreert hoe u deze test uitvoert:

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

#[1] 0.8922676

De p-waarde voor deze test is 0,89 , wat ruim boven het significantieniveau van 0,05 ligt. We kunnen concluderen dat de gegevens redelijk goed bij het model passen.

Bekijk resultaten

We kunnen ook een grafiek maken die het verwachte aantal ontvangen beursaanbiedingen weergeeft op basis van de resultaten van de divisie en het toelatingsexamen, met behulp van de volgende code:

 #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")

De grafiek toont het hoogste aantal verwachte beursaanbiedingen voor spelers die hoog scoorden op het toelatingsexamen. Bovendien kunnen we zien dat spelers in Divisie B (de groene lijn) over het algemeen meer aanbiedingen zouden moeten ontvangen dan spelers in Divisie A of Divisie C.

Rapporteer resultaten

Ten slotte kunnen we de regressieresultaten rapporteren op een manier die onze bevindingen samenvat:

Er werd een Poisson-regressie uitgevoerd om het aantal beursaanbiedingen te voorspellen dat honkbalspelers ontvingen op basis van divisie- en toelatingsexamenscores. Voor elk extra punt behaald op het toelatingsexamen stijgt het aantal ontvangen aanbiedingen met 10% ( p < 0,0001) . De verdeling bleek niet statistisch significant te zijn.

Aanvullende bronnen

Inleiding tot eenvoudige lineaire regressie
Inleiding tot meervoudige lineaire regressie
Een inleiding tot polynomiale regressie

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert