Bij het analyseren van data waarin je gebeurtenissen telt – zoals het aantal klantklachten per dag, ziekenhuisopnames per maand of websitekliks per uur – levert gewone lineaire regressie vaak misleidende resultaten op. Telgegevens hebben unieke kenmerken die een gespecialiseerde modelaanpak vereisen.
Poisson-regressie biedt een statistische methode die specifiek is ontworpen voor telgegevens. In tegenstelling tot lineaire regressie, die negatieve waarden kan voorspellen, zorgt Poisson-regressie ervoor dat voorspellingen niet-negatieve gehele getallen blijven. Dat maakt het bijzonder waardevol in elk vakgebied waar het tellen van gebeurtenissen centraal staat bij besluitvorming.
Als je nieuw bent met regressieanalyse, biedt onze cursus Introduction to Regression in R de essentiële basisconcepten die je voor deze tutorial nodig hebt. Voor wie klaar is om de bredere familie van regressietechnieken te verkennen, biedt Generalized Linear Models in R een compleet overzicht van het statistische raamwerk waar Poisson-regressie onder valt.
Telgegevens en hun uitdagingen begrijpen
Wat telgegevens bijzonder maakt
Telgegevens geven weer hoe vaak iets gebeurt binnen een vaste periode of ruimte. Voorbeelden zijn het aantal ingediende schadeclaims per polis per jaar of het aantal verkeersongelukken op een kruispunt per maand.
Telgegevens hebben verschillende specifieke eigenschappen waardoor gewone lineaire regressie ongeschikt is:
Alleen niet-negatieve gehele getallen: Tellingen kunnen niet negatief of fractioneel zijn.
Rechts-scheve verdeling: De meeste teldatasets bevatten veel lage waarden met af en toe hoge waarden, wat zorgt voor een kenmerkende rechterstaart.
Variantie neemt toe met het gemiddelde: Naarmate gemiddelde tellingen hoger worden, neemt de variabiliteit meestal ook toe.
Waarom lineaire regressie faalt
Stel dat je het aantal klantklachten voorspelt op basis van factoren zoals productcomplexiteit en klanttevredenheidsscores. Lineaire regressie behandelt dit als een continue uitkomst en kan daardoor onmogelijke waarden voorspellen zoals -1,5 klachten of 14,7 klachten.
Nog problematischer is dat lineaire regressie uitgaat van constante variantie over alle voorspellingsniveaus. In de praktijk zullen weken met hoger voorspelde aantallen klachten waarschijnlijk meer variabiliteit vertonen dan weken met lage voorspelde aantallen. Dit pattern, genoemd heteroscedasticiteit, leidt tot onbetrouwbare betrouwbaarheidsintervallen en hypothesetesten.
De basis: de Poisson-verdeling
Poisson-regressie bouwt voort op de Poisson-kansverdeling, die telgegevens van nature beschrijft. De Poisson-verdeling heeft één parameter (lambda) die zowel het gemiddelde als de variantie van de tellingen weergeeft. Deze eigenschap van gelijke verwachting en variantie, equidispersie genoemd, is een belangrijke aanname die we in de praktijk moeten verifiëren.
De verdeling blinkt uit in het modelleren van “zeldzame” gebeurtenissen – niet per se infrequent, maar gebeurtenissen waarbij elke afzonderlijke gebeurtenis onafhankelijk is en het tempo onder vergelijkbare omstandigheden relatief constant blijft.
Wanneer Poisson-regressie gebruiken
Laten we eerst de ideale omstandigheden bespreken waaronder Poisson-regressie goed presteert. Daarna kunnen we het over de echte toepassingen hebben.
Ideale scenario’s
Poisson-regressie werkt het best als je data aan meerdere voorwaarden voldoet:
Onafhankelijke gebeurtenissen: Elke gebeurtenis beïnvloedt de andere niet. Eén schadeclaim maakt een andere niet meer of minder waarschijnlijk (uitgaand van geen fraudepatronen).
Constante snelheid: Onder vergelijkbare omstandigheden blijft het gemiddelde tempo van gebeurtenissen stabiel. Bezoeken aan de spoedeisende hulp kunnen per weekdag variëren, maar dinsdagen in vergelijkbare maanden zouden consistente patronen moeten vertonen.
Juiste tijd- of ruimtekader: Gebeurtenissen worden geteld over duidelijk gedefinieerde perioden of gebieden. "Klachten per maand" is beter dan "klachten soms per dag, soms per week geteld".
Geen duidelijke overmaat aan nullen: Hoewel enkele nullen te verwachten zijn, heb je bij veel meer nullen dan de Poisson-verdeling voorspelt mogelijk gespecialiseerde zero-inflated modellen nodig.
Veelvoorkomende toepassingen
In de gezondheidszorg en epidemiologie volgen onderzoekers ziektegevallen over regio’s of perioden, gecorrigeerd voor populatie. Zo bestuderen ze bijvoorbeeld hoe vaccinatiegraad de infecties per 100.000 mensen beïnvloedt.
In business en marketing onderzoeken teams klantgedrag zoals aankoopfrequentie, supporttickets of engagement. E-commercebedrijven modelleren vaak dagelijkse bestellingen op basis van marketinguitgaven, seizoensinvloeden en promoties.
Een vaak genoemd voorbeeld bij Poisson-regressie: productieteams monitoren defectpercentages per batchgrootte of inspectieperiode om kwaliteitsproblemen vroegtijdig te signaleren en processen te verbeteren.
Modelstructuur en aannames begrijpen
De log-link-verbinding
Poisson-regressie modelleert tellingen niet direct. In plaats daarvan modelleert het het logaritme van de verwachte telling als een lineaire combinatie van voorspellers.
Deze logaritmische transformatie zorgt ervoor dat voorspellingen positief blijven. Concreet zet de log-linkfunctie de verwachte telling om naar de log-schaal, waardoor modelvoorspellingen voor de gemiddelde telling strikt positief blijven. Wanneer we de transformatie omkeren (door te exponentiëren), krijgen we:
Deze structuur betekent dat veranderingen in voorspellers multiplicatieve effecten hebben op de verwachte telling.
Multiplicatieve effecten interpreteren
Bij lineaire regressie voegt een toename van één eenheid in een voorspeller een constant bedrag toe aan de uitkomst. Bij Poisson-regressie vermenigvuldigt een toename van één eenheid in een voorspeller de verwachte telling met een constante factor.
Als bijvoorbeeld de coëfficiënt voor "marketinguitgaven" 0,1 is, dan vermenigvuldigt elke extra dollar aan marketinguitgaven het verwachte aantal klanten met e^0,1 ≈ 1,105, wat neerkomt op ongeveer 10,5% toename.
Hoewel het ingewikkelder lijkt, kan dit kenmerk intuïtief zijn voor zakelijke toepassingen, waar we vaak in percentages en relatieve effecten denken.
Belangrijke aannames om te controleren
Zoals bij elk model zijn er aannames waar we op moeten letten:
Onafhankelijkheid: Waarnemingen zouden elkaar niet moeten beïnvloeden. Als je dagelijkse tellingen in de tijd analyseert, kunnen sterke temporele patronen duiden op afhankelijkheid die geavanceerdere modellering vereist.
Equidispersie: De variantie zou ongeveer gelijk moeten zijn aan het gemiddelde. Bereken deze ratio voor je data – waarden veel groter dan 1 duiden op overdispersie die aandacht vraagt.
Juiste functionele vorm: De relatie tussen voorspellers en log-telling zou ruwweg lineair moeten zijn. Niet-lineaire relaties kunnen polynoomtermen of transformaties vereisen.
Geen zware uitschieters: Extreme telwaarden kunnen de resultaten onevenredig beïnvloeden. Onderzoek of uitschieters dataproblemen zijn of echte extreme gebeurtenissen.
Werken met exposure en offsets
Exposure-variabelen begrijpen
Veel teldatasets bevatten verschillende exposure-niveaus – variërende perioden, populatieomvang of observatie-intensiteit. Zo moet je bij het vergelijken van ongevalstellingen tussen steden rekening houden met populatieverschillen, of bij maandelijkse verkoopcijfers noteren dat sommige maanden een verschillend aantal dagen hebben.
Exposure-variabelen vormen de "noemer" die tellingen vergelijkbaar maakt. Zonder juiste correctie hebben grotere steden vanzelfsprekend meer ongelukken, en langere maanden hogere verkopen, wat de werkelijke relaties die je wilt bestuderen kan verhullen.
Offsets toepassen
Offsets bieden een manier om exposure-variabelen op te nemen met een coëfficiënt vastgezet op 1. In plaats van ruwe tellingen te modelleren, kun je met offsets tarieven modelleren terwijl je de telstructuur van je data behoudt.
De wiskundige vorm wordt dan:
Herschikking van deze vergelijking:
Dit laat zien dat je in feite het log-tarief modelleert, waarbij tarief = telling/exposure.
Wanneer deze denkwijze nuttig is
Populatie-gecorrigeerde ziektecijfers: Bij het vergelijken van COVID-19-gevallen tussen counties, neem log(population) op als offset. Zo representeren coëfficiënten effecten op gevallen per persoon in plaats van op totale aantallen.
Tijd-gecorrigeerde bedrijfsstatistieken: Als je maandelijkse verkopen analyseert met sommige maanden met verschillende promotieperioden, neem log(promotional_days) op als offset om verkopen per promotiedag te bestuderen.
Oppervlakte-gecorrigeerde milieudata: Bij het tellen van waarnemingen van soorten in verschillende habitatvakken, neem log(area_surveyed) op als offset om soortendichtheid te modelleren in plaats van ruwe tellingen.
De offset zorgt ervoor dat een verdubbeling van de exposure de verwachte telling verdubbelt (ceteris paribus), wat de natuurlijke relatie is voor tariefgebaseerde fenomenen.
Coëfficiënten en resultaten interpreteren
Van coëfficiënten naar incidentieratio’s
Ruwe Poisson-regressiecoëfficiënten vertegenwoordigen veranderingen in de log-telling, wat lastig direct te interpreteren is. Door coëfficiënten te exponentiëren zet je ze om in incidentieratio’s (IRR’s), die intuïtieve interpretaties hebben.
Een IRR geeft de multiplicatieve verandering in de verwachte telling weer voor een toename van één eenheid in de voorspeller:
IRR = 1,0: Geen effect (voorspeller verandert het tarief niet)
IRR = 1,2: 20% stijging van het tarief
IRR = 0,8: 20% daling van het tarief
IRR = 2,0: 100% stijging (verdubbeling van het tarief)
Verschillende type voorspellers interpreteren
Continue voorspellers: Als leeftijd een IRR van 1,03 heeft, vermenigvuldigt elk extra levensjaar de verwachte telling met 1,03, een stijging van 3%. Voor een leeftijdsverschil van 10 jaar is het effect 1,03^10 ≈ 1,34, ofwel circa 34% stijging.
Binaire voorspellers: Als gender (man vs. vrouw) een IRR van 1,5 heeft, hebben mannen 1,5 keer het tarief van de uitkomst vergeleken met vrouwen, oftewel een 50% hoger tarief.
Categorische voorspellers: Bij meerdere categorieën wordt elk niveau vergeleken met een referentiecategorie. Als "winter" een IRR van 0,7 heeft ten opzichte van "zomer", laten wintermaanden 30% minder gebeurtenissen zien dan zomermaanden.
Betrouwbaarheidsintervallen begrijpen
IRR-betrouwbaarheidsintervallen geven onzekerheidschattingen rond je ratiocijfers. Een IRR van 1,25 met een 95%-betrouwbaarheidsinterval van [1,10, 1,42] suggereert dat je er redelijk zeker van kunt zijn dat het echte effect tussen 10% en 42% stijging van het tarief ligt.
Als een betrouwbaarheidsinterval 1,0 omvat, is het effect mogelijk niet statistisch significant. Een IRR van 1,15 met BI [0,95, 1,39] suggereert bijvoorbeeld dat de voorspeller geen effect kan hebben.
Praktische communicatiestrategieën
Richt je bij presentaties aan niet-technische doelgroepen op procentuele veranderingen in plaats van verhoudingen. Zeg liever "deze factor hangt samen met een stijging van 30% in het gebeurtenistarief" dan "de IRR is 1,3".
Geef concrete voorbeelden: "Op basis van ons model hangt een stijging van marketinguitgaven met $1000 samen met ongeveer 15% meer klantacquisities, van gemiddeld 20 naar circa 23 klanten per maand."
Poisson-regressie implementeren in R
Nu we de interpretatie uitgebreid hebben behandeld, gaan we dit in R implementeren.
Datavoorbereiding en verkenning
Bekijk je telgegevens goed voordat je een model fit. Begin met het laden van de benodigde libraries en het verkennen van de verdeling:
library(ggplot2)
library(dplyr)# Example: Website daily visitor counts
data <- data.frame(
visitors = c(42,48,39,52,44,58,51,47,41,49,40,46,43,54,50),
day_of_week = factor(c("Mon","Tue","Wed","Thu","Fri","Sat","Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sun","Mon")),
marketing_spend = c(200,150,180,250,220,400,350,300,160,190,140,210,380,420,170),
temperature = c(22,25,19,24,26,28,30,27,21,23,18,25,29,31,20))# Check mean vs variance (should be similar for Poisson)
mean(data$visitors)
var(data$visitors)
var(data$visitors)/ mean(data$visitors)# Should be close to 1# Visualize the distribution
ggplot(data, aes(x = visitors))+
geom_histogram(bins =8, fill ="lightblue", color ="black")+
labs(title ="Distribution of Daily Visitors",
x ="Number of Visitors", y ="Frequency")Mogelijk gemaakt door
> mean(data$visitors)[1]46.93333> var(data$visitors)[1]30.35238> var(data$visitors)/ mean(data$visitors)[1]0.6467127Mogelijk gemaakt door
De variantie-tot-gemiddeldeverhouding van 0,65 ligt redelijk dicht bij 1, wat aangeeft dat onze data geschikt is voor Poisson-regressie. Hoewel niet exact gelijk, zijn verhoudingen tussen 0,5 en 1,5 over het algemeen acceptabel en suggereren ze dat de Poisson-verdeling een goede basis vormt om deze telgegevens te modelleren.
Verdeling van dagelijkse websitebezoekers. Afbeelding door de auteur.
Het histogram toont een grofweg symmetrische verdeling van bezoekersaantallen rond 47 per dag, met waarden variërend van circa 39 tot 58. Dit patroon past bij telgegevens die effectief met Poisson-regressie zijn te modelleren.
Het model fitten
De functie glm() met family = poisson fit Poisson-regressiemodellen:
# Basic Poisson regression
model <- glm(visitors ~ day_of_week + marketing_spend + temperature,
family = poisson, data = data)# View key model results
summary(model)# Calculate Incidence Rate Ratios (IRRs)
exp(coefficients(model))Mogelijk gemaakt door
Hier is de coëfficiëntentabel:
Coefficients:
Estimate Std. Error z value Pr(>|z|)(Intercept)3.29781220.55566015.9352.94e-09***
day_of_weekMon 0.07240360.16354670.4430.658
day_of_weekSat 0.03162650.28728780.1100.912
day_of_weekSun 0.03396210.25025780.1360.892
day_of_weekThu 0.10687560.18708210.5710.568
day_of_weekTue 0.04429670.16330320.2710.786
day_of_weekWed 0.06537890.18132300.3610.718
marketing_spend 0.00015930.00182110.0870.930
temperature 0.01860990.03176820.5860.558Mogelijk gemaakt door
Hier zijn de incidentieratio’s (IRR’s):
(Intercept) day_of_weekMon day_of_weekSat day_of_weekSun day_of_weekThu day_of_weekTue day_of_weekWed marketing_spend
27.0533861.0750891.0321321.0345451.1127961.0452921.0675631.000159
temperature
1.018784Mogelijk gemaakt door
De coëfficiënten tonen de effecten op log-schaal, maar de IRR’s bieden intuïtievere interpretaties. Donderdag (day_of_weekThu) heeft bijvoorbeeld een IRR van 1,11, wat neerkomt op circa 11% meer bezoekers vergeleken met vrijdag (de referentiecategorie). Marketinguitgaven hebben een IRR van 1,0002, wat aangeeft dat elke extra dollar het verwachte bezoekersaantal met ongeveer 0,02% verhoogt.
Let op dat, als we betrouwbaarheidsintervallen voor deze IRR’s zouden berekenen, veel ervan 1,0 zouden omvatten, wat suggereert dat de effecten met deze kleine steekproef niet statistisch significant zijn. Dit komt vaak voor bij kleine datasets en laat zien waarom steekproefgrootte ertoe doet.
Exposure opnemen met offsets
Als je data variërende exposureperioden heeft, neem die dan op als offsets:
# Example with exposure data
data$exposure_days <- c(rep(7,10), rep(6,5))# Some weeks had 6 observation days# Model with offset
model_offset <- glm(visitors ~ day_of_week + marketing_spend + temperature +
offset(log(exposure_days)),
family = poisson, data = data)
summary(model_offset)Mogelijk gemaakt door
Call:
glm(formula = visitors ~ day_of_week + marketing_spend + temperature +
offset(log(exposure_days)), family = poisson, data = data)
Coefficients:
Estimate Std. Error z value Pr(>|z|)(Intercept)1.734e+005.579e-013.1090.00188**
day_of_weekMon 2.371e-021.637e-010.1450.88485
day_of_weekSat 9.873e-022.898e-010.3410.73338
day_of_weekSun 1.208e-012.472e-010.4890.62513
day_of_weekThu 5.642e-021.871e-010.3020.76297
day_of_weekTue -6.713e-021.634e-01-0.4110.68128
day_of_weekWed -6.073e-021.825e-01-0.3330.73934
marketing_spend -4.231e-051.823e-03-0.0230.98149
temperature 8.210e-033.179e-020.2580.79623Mogelijk gemaakt door
Let op hoe de coëfficiënten sterk veranderen wanneer we de offset opnemen. De intercept daalt van 3,30 naar 1,73 en alle andere effecten worden kleiner. Deze transformatie treedt op omdat we nu het tarief per dag modelleren in plaats van totale tellingen over variërende perioden.
De offset zorgt voor eerlijke vergelijkingen door te corrigeren voor verschillende exposureduren. Zonder deze correctie zouden perioden met meer observatiedagen kunstmatig hogere bezoekersaantallen lijken te hebben, wat de werkelijke relaties die we willen bestuderen kan verhullen. Het model beantwoordt nu de vraag "Wat is het dagelijkse bezoekersaantal?" in plaats van "Hoeveel bezoekers waren er in totaal?"
Voorspellingen maken
Genereer voorspellingen voor nieuwe scenario’s:
# Create new data for prediction
new_data <- data.frame(
day_of_week = factor("Fri", levels = levels(data$day_of_week)),
marketing_spend =300,
temperature =25)# Predict expected counts
predicted_counts <- predict(model, newdata = new_data, type ="response")
print(paste("Expected visitors:", round(predicted_counts,1)))Mogelijk gemaakt door
Het model voorspelt 45,2 bezoekers voor een vrijdag met $300 aan marketinguitgaven en een temperatuur van 25°C. Deze voorspelling valt binnen het redelijke bereik van onze geobserveerde data (39–58 bezoekers) en ligt dicht bij ons algemene gemiddelde van 46,9 bezoekers.
Poisson-regressie zorgt er van nature voor dat voorspellingen positief blijven en als gehele getallen kunnen worden afgerond, in tegenstelling tot lineaire regressie die onmogelijke negatieve waarden kan opleveren. De parameter type = "response" geeft voorspellingen terug op de oorspronkelijke telschaal in plaats van de intern gebruikte log-schaal.
Essentiële modeldiagnostiek
Controleren op overdispersie
Overdispersie treedt op wanneer de variantie het gemiddelde overschrijdt, wat een belangrijke Poisson-aanname schendt:
# Calculate dispersion statistic
residual_deviance <- model$deviance
df_residual <- model$df.residual
dispersion <- residual_deviance / df_residual
print(paste("Dispersion statistic:", round(dispersion,3)))if(dispersion >1.5){
print("Possible overdispersion detected")
print("Consider quasi-Poisson or negative binomial models")}Mogelijk gemaakt door
De dispersiestatistiek van 0,849 ligt dicht bij 1, wat aangeeft dat ons model goed past zonder significante overdispersie. Waarden dicht bij 1 suggereren dat de Poisson-aanname van gelijke verwachting en variantie redelijk is voor deze dataset.
Omdat de statistiek onder 1,5 ligt, verschijnt er geen waarschuwing, wat bevestigt dat standaard Poisson-regressie passend is. Als deze waarde veel groter dan 1 zou zijn (typisch boven 1,5), overweeg dan quasi-Poisson of negatief-binomiale modellen om de extra variabiliteit te modelleren.
Residualanalyse
Bekijk residuals om patronen of modelovertredingen te detecteren:
# Calculate Pearson residuals
fitted_values <- fitted(model)
pearson_residuals <- residuals(model, type ="pearson")# Plot residuals vs fitted values
plot(fitted_values, pearson_residuals,
xlab ="Fitted Values", ylab ="Pearson Residuals",
main ="Residuals vs Fitted")
abline(h =0, col ="red", lty =2)Mogelijk gemaakt door
Residualplot met willekeurige spreiding rond nul. Afbeelding door de auteur.
De residualplot toont punten die willekeurig rond de nullijn verspreid zijn zonder duidelijke patronen, wat erop wijst dat ons model de data goed past. De residuals variëren grofweg van -1 tot +1, wat redelijk is voor deze steekproefgrootte.
Goede residualplots laten zien: willekeurige spreiding rond nul (geen kromme patronen), ruwweg constante spreiding over fitted values (geen trechtervormen) en geen extreme uitschieters. Deze plot voldoet aan al deze criteria, wat bevestigt dat de aannames van Poisson-regressie zijn vervuld en ons model betrouwbare resultaten levert.
Omgaan met overdispersie
Als overdispersie wordt vastgesteld, overweeg dan quasi-Poisson-modellen die standaardfouten aanpassen:
# Fit quasi-Poisson model
quasi_model <- glm(visitors ~ day_of_week + marketing_spend + temperature,
family = quasipoisson, data = data)Mogelijk gemaakt door
Omdat ons model een goede dispersie (0,849) laat zien, zijn quasi-Poisson-aanpassingen hier niet nodig. Deze aanpak levert echter conservatievere betrouwbaarheidsintervallen en p-waarden op wanneer de variantie het gemiddelde overschrijdt, en is dus waardevol bij praktijkdata die vaak overdispersie vertoont.
Resultaten presenteren en interpreteren
Heldere samenvattingen maken
Zet modeluitvoer om in bedrijfsrelevante inzichten door je te richten op de praktische betekenis van je IRR’s. Als je model laat zien dat weekenddagen een IRR van 1,4 hebben vergeleken met weekdagen, communiceer dit dan als "in het weekend zijn er ongeveer 40% meer bezoekers dan op weekdagen". Als marketinguitgaven een IRR van 1,002 hebben, leg dan uit dat "elke extra dollar aan marketing samenhangt met ongeveer 0,2% meer bezoekers".
Voor continue variabelen kun je effecten presenteren op betekenisvolle intervallen. In plaats van het effect van één graad temperatuurverschil te bespreken, kun je het effect van een verschil van 10 graden tonen, wat relevanter kan zijn voor planning.
Beperkingen van het model begrijpen
Poisson-regressie identificeert associaties, geen causale relaties. Een sterke samenhang tussen marketinguitgaven en bezoekersaantallen bewijst niet dat marketing de stijging veroorzaakt. Andere factoren kunnen beide variabelen beïnvloeden. Erken deze beperking wanneer je resultaten presenteert.
Het model veronderstelt dat het tarief constant blijft voor gegeven voorspellerwaarden. Als je bedrijf seizoenspatronen kent die niet door je variabelen worden vastgelegd, of als de relatie tussen voorspellers en uitkomsten in de tijd verandert, generaliseert je model mogelijk niet goed naar toekomstige perioden.
Veelvoorkomende uitdagingen en oplossingen
Omgaan met nullen
Telgegevens bevatten vaak nullen, die in Poisson-regressie volkomen geldig zijn. Als je data echter veel meer nullen bevat dan een Poisson-verdeling zou voorspellen, kan dat wijzen op een ander datagenererend proces. Sommige observaties kunnen perioden of omstandigheden vertegenwoordigen waarin de gebeurtenis simpelweg niet kan plaatsvinden, in plaats van perioden waarin het kon maar niet gebeurde.
Zo kunnen bezoekersaantallen van een website nullen bevatten voor dagen waarop de site wegens onderhoud offline was. Deze "structurele nullen" verschillen van "willekeurige nullen" die natuurlijk voorkomen in Poisson-processen.
Modelbouwstrategie
Begin met je belangrijkste voorspellers op basis van domeinkennis. Voeg variabelen één voor één toe en beoordeel of ze je begrip van de data verbeteren. Complexere modellen zijn niet altijd beter.
Let op de praktische betekenis van effecten, niet alleen op statistische significantie. Een statistisch significant verschil van 1% in gebeurtenistarieven rechtvaardigt misschien geen actie, terwijl een verandering van 20% die marginaal niet-significant is, toch nader onderzoek met meer data kan verdienen.
Omgaan met schendingen
Wanneer equidispersie faalt (variantie veel groter dan het gemiddelde), biedt quasi-Poisson-regressie een eenvoudige oplossing. De modelstructuur blijft gelijk, maar de standaardfouten worden aangepast voor de extra variabiliteit. Dit levert conservatievere betrouwbaarheidsintervallen en p-waarden op.
Bij ernstige overdispersie modelleert negatief-binomiale regressie de extra variatie expliciet. Deze aanpak schat zowel de gemiddelde relatie als de extra variabiliteit.
Best practices en aanbevelingen
Veelgemaakte fouten vermijden
Negeer overdispersie niet – het is een van de meest voorkomende schendingen van Poisson-aannames en kan je conclusies ernstig beïnvloeden. Controleer altijd de verhouding tussen variantie en gemiddelde en overweeg alternatieven wanneer nodig.
Wees voorzichtig met extrapoleren buiten je datarange. Als je marketinguitgaven variëren van $100 tot $1000, voorspel dan niet vol vertrouwen effecten voor $5000. De relatie blijft mogelijk niet log-lineair bij extreme waarden.
Vermijd de aanname dat alle niveaus van categorische voorspellers gelijk uit elkaar liggen. Opleidingsniveaus (middelbare school, wat hoger onderwijs, hbo/wo-afgestudeerd) hebben mogelijk geen gelijke effecten op je uitkomstvariabele.
Documentatie en workflow
Documenteer je modelleerkeuzes, vooral aannameschendingen en hoe je die hebt aangepakt. Als je overdispersie ontdekte maar koos voor quasi-Poisson-aanpassingen, noteer dan deze beslissing en de implicaties voor de interpretatie.
Conclusie
Poisson-regressie biedt een effectief kader voor het analyseren van telgegevens in veel domeinen. Begin met eenvoudige modellen en bouw de complexiteit geleidelijk op, gebaseerd op zowel statistisch bewijs als domeinexpertise. Wanneer aannames worden geschonden, bieden uitbreidingen zoals quasi-Poisson of negatief-binomiale modellen goede alternatieven. Het doel is niet alleen statistische significantie, maar praktische inzichten die betere beslissingen ondersteunen.
Wil je je regressie-expertise verdiepen, dan behandelt onze cursus Intermediate Regression in R geavanceerde diagnostiek en modelstrategieën die de Poisson-regressievaardigheden uit deze tutorial aanvullen. Generalized Linear Models in R is een andere prima optie.
Vinod Chugani begon zijn carrière in Tokio als JPMorgans jongste Head van de Hedge Fund Sales Desk en vestigde later een individueel verkooprecord bij Lehman Brothers, bouwde daarna een elektronicadistributiebedrijf in 30 landen uit tot voorbij SG$100 miljoen omzet en maakte vervolgens de overstap naar data. Als afgestudeerde Economie aan Duke en alumnus van de NYC Data Science Academy was hij een van de drie beursontvangers uit meer dan 100 aanmeldingen voor Hugo Bowne-Andersons Building AI Applications-cursus op Maven. Tegenwoordig schrijft hij voor DataCamp, KDnuggets, Machine Learning Mastery en Statology over onderwerpen van statistiek tot agentische AI, en coacht hij dataprofessionals bij de NYC Data Science Academy met meer dan 1.000 één-op-één-sessies op zijn naam.
Poisson-regressie: veelgestelde vragen
Waarvoor wordt Poisson-regressie gebruikt?⌄
Poisson-regressie wordt gebruikt om telgegevens te modelleren – zoals het aantal klantklachten per dag, websitebezoeken per uur of defecten per batch. Het is specifiek ontworpen voor niet-negatieve gehele uitkomsten.
Wanneer moet ik Poisson-regressie gebruiken in plaats van lineaire regressie?⌄
Gebruik Poisson-regressie wanneer je uitkomstvariabele tellingen weergeeft, alleen niet-negatieve gehele getallen bevat en een rechts-scheve verdeling vertoont. Lineaire regressie kan voor telgegevens onmogelijke negatieve waarden voorspellen.
Wat zijn incidentieratio’s (IRR’s) in Poisson-regressie?⌄
IRR’s zijn geëxponentieerde coëfficiënten die de multiplicatieve verandering in de verwachte telling laten zien voor een toename van één eenheid in een voorspeller. Een IRR van 1,2 betekent een stijging van 20% in het tarief.
Kan Poisson-regressie nullen aan?⌄
Ja, Poisson-regressie kan van nature met nullen omgaan. Heb je echter veel meer nullen dan verwacht, overweeg dan zero-inflated modellen voor een betere fit.
Wat is overdispersie en hoe pak ik het aan?⌄
Overdispersie treedt op wanneer de variantie het gemiddelde overschrijdt (ratio > 1,5). Pak dit aan met quasi-Poisson-regressie, die standaardfouten aanpast, of met negatief-binomiale regressie bij ernstige gevallen.
Hoe controleer ik of mijn data geschikt is voor Poisson-regressie?⌄
Bereken de verhouding tussen variantie en gemiddelde van je telvariabele – die zou dicht bij 1 moeten liggen. Controleer ook de onafhankelijkheid van waarnemingen en zorg voor een passend tijd-/ruimtekader voor het tellen.
Voorspel huizenprijzen en de klikfrequentie van advertenties door regressieanalyses uit te voeren, te analyseren en te interpreteren met statsmodels in Python.
Breid je regressietoolbox uit met de logistieke en Poisson-modellen en leer hoe je ze kunt trainen, begrijpen en valideren, en hoe je voorspellingen kunt doen.
Bij het analyseren van data waarin je gebeurtenissen telt – zoals het aantal klantklachten per dag, ziekenhuisopnames per maand of websitekliks per uur – levert gewone lineaire regressie vaak misleidende resultaten op. Telgegevens hebben unieke kenmerken die een gespecialiseerde modelaanpak vereisen.
Poisson-regressie biedt een statistische methode die specifiek is ontworpen voor telgegevens. In tegenstelling tot lineaire regressie, die negatieve waarden kan voorspellen, zorgt Poisson-regressie ervoor dat voorspellingen niet-negatieve gehele getallen blijven. Dat maakt het bijzonder waardevol in elk vakgebied waar het tellen van gebeurtenissen centraal staat bij besluitvorming.
Als je nieuw bent met regressieanalyse, biedt onze cursus Introduction to Regression in R de essentiële basisconcepten die je voor deze tutorial nodig hebt. Voor wie klaar is om de bredere familie van regressietechnieken te verkennen, biedt Generalized Linear Models in R een compleet overzicht van het statistische raamwerk waar Poisson-regressie onder valt.
Telgegevens en hun uitdagingen begrijpen
Wat telgegevens bijzonder maakt
Telgegevens geven weer hoe vaak iets gebeurt binnen een vaste periode of ruimte. Voorbeelden zijn het aantal ingediende schadeclaims per polis per jaar of het aantal verkeersongelukken op een kruispunt per maand.
Telgegevens hebben verschillende specifieke eigenschappen waardoor gewone lineaire regressie ongeschikt is:
Waarom lineaire regressie faalt
Stel dat je het aantal klantklachten voorspelt op basis van factoren zoals productcomplexiteit en klanttevredenheidsscores. Lineaire regressie behandelt dit als een continue uitkomst en kan daardoor onmogelijke waarden voorspellen zoals -1,5 klachten of 14,7 klachten.
Nog problematischer is dat lineaire regressie uitgaat van constante variantie over alle voorspellingsniveaus. In de praktijk zullen weken met hoger voorspelde aantallen klachten waarschijnlijk meer variabiliteit vertonen dan weken met lage voorspelde aantallen. Dit pattern, genoemd heteroscedasticiteit, leidt tot onbetrouwbare betrouwbaarheidsintervallen en hypothesetesten.
De basis: de Poisson-verdeling
Poisson-regressie bouwt voort op de Poisson-kansverdeling, die telgegevens van nature beschrijft. De Poisson-verdeling heeft één parameter (lambda) die zowel het gemiddelde als de variantie van de tellingen weergeeft. Deze eigenschap van gelijke verwachting en variantie, equidispersie genoemd, is een belangrijke aanname die we in de praktijk moeten verifiëren.
De verdeling blinkt uit in het modelleren van “zeldzame” gebeurtenissen – niet per se infrequent, maar gebeurtenissen waarbij elke afzonderlijke gebeurtenis onafhankelijk is en het tempo onder vergelijkbare omstandigheden relatief constant blijft.
Wanneer Poisson-regressie gebruiken
Laten we eerst de ideale omstandigheden bespreken waaronder Poisson-regressie goed presteert. Daarna kunnen we het over de echte toepassingen hebben.
Ideale scenario’s
Poisson-regressie werkt het best als je data aan meerdere voorwaarden voldoet:
Veelvoorkomende toepassingen
In de gezondheidszorg en epidemiologie volgen onderzoekers ziektegevallen over regio’s of perioden, gecorrigeerd voor populatie. Zo bestuderen ze bijvoorbeeld hoe vaccinatiegraad de infecties per 100.000 mensen beïnvloedt.
In business en marketing onderzoeken teams klantgedrag zoals aankoopfrequentie, supporttickets of engagement. E-commercebedrijven modelleren vaak dagelijkse bestellingen op basis van marketinguitgaven, seizoensinvloeden en promoties.
Een vaak genoemd voorbeeld bij Poisson-regressie: productieteams monitoren defectpercentages per batchgrootte of inspectieperiode om kwaliteitsproblemen vroegtijdig te signaleren en processen te verbeteren.
Modelstructuur en aannames begrijpen
De log-link-verbinding
Poisson-regressie modelleert tellingen niet direct. In plaats daarvan modelleert het het logaritme van de verwachte telling als een lineaire combinatie van voorspellers.
Deze logaritmische transformatie zorgt ervoor dat voorspellingen positief blijven. Concreet zet de log-linkfunctie de verwachte telling om naar de log-schaal, waardoor modelvoorspellingen voor de gemiddelde telling strikt positief blijven. Wanneer we de transformatie omkeren (door te exponentiëren), krijgen we:
Deze structuur betekent dat veranderingen in voorspellers multiplicatieve effecten hebben op de verwachte telling.
Multiplicatieve effecten interpreteren
Bij lineaire regressie voegt een toename van één eenheid in een voorspeller een constant bedrag toe aan de uitkomst. Bij Poisson-regressie vermenigvuldigt een toename van één eenheid in een voorspeller de verwachte telling met een constante factor.
Als bijvoorbeeld de coëfficiënt voor "marketinguitgaven" 0,1 is, dan vermenigvuldigt elke extra dollar aan marketinguitgaven het verwachte aantal klanten met e^0,1 ≈ 1,105, wat neerkomt op ongeveer 10,5% toename.
Hoewel het ingewikkelder lijkt, kan dit kenmerk intuïtief zijn voor zakelijke toepassingen, waar we vaak in percentages en relatieve effecten denken.
Belangrijke aannames om te controleren
Zoals bij elk model zijn er aannames waar we op moeten letten:
Werken met exposure en offsets
Exposure-variabelen begrijpen
Veel teldatasets bevatten verschillende exposure-niveaus – variërende perioden, populatieomvang of observatie-intensiteit. Zo moet je bij het vergelijken van ongevalstellingen tussen steden rekening houden met populatieverschillen, of bij maandelijkse verkoopcijfers noteren dat sommige maanden een verschillend aantal dagen hebben.
Exposure-variabelen vormen de "noemer" die tellingen vergelijkbaar maakt. Zonder juiste correctie hebben grotere steden vanzelfsprekend meer ongelukken, en langere maanden hogere verkopen, wat de werkelijke relaties die je wilt bestuderen kan verhullen.
Offsets toepassen
Offsets bieden een manier om exposure-variabelen op te nemen met een coëfficiënt vastgezet op 1. In plaats van ruwe tellingen te modelleren, kun je met offsets tarieven modelleren terwijl je de telstructuur van je data behoudt.
De wiskundige vorm wordt dan:
Herschikking van deze vergelijking:
Dit laat zien dat je in feite het log-tarief modelleert, waarbij tarief = telling/exposure.
Wanneer deze denkwijze nuttig is
De offset zorgt ervoor dat een verdubbeling van de exposure de verwachte telling verdubbelt (ceteris paribus), wat de natuurlijke relatie is voor tariefgebaseerde fenomenen.
Coëfficiënten en resultaten interpreteren
Van coëfficiënten naar incidentieratio’s
Ruwe Poisson-regressiecoëfficiënten vertegenwoordigen veranderingen in de log-telling, wat lastig direct te interpreteren is. Door coëfficiënten te exponentiëren zet je ze om in incidentieratio’s (IRR’s), die intuïtieve interpretaties hebben.
Een IRR geeft de multiplicatieve verandering in de verwachte telling weer voor een toename van één eenheid in de voorspeller:
Verschillende type voorspellers interpreteren
Betrouwbaarheidsintervallen begrijpen
IRR-betrouwbaarheidsintervallen geven onzekerheidschattingen rond je ratiocijfers. Een IRR van 1,25 met een 95%-betrouwbaarheidsinterval van [1,10, 1,42] suggereert dat je er redelijk zeker van kunt zijn dat het echte effect tussen 10% en 42% stijging van het tarief ligt.
Als een betrouwbaarheidsinterval 1,0 omvat, is het effect mogelijk niet statistisch significant. Een IRR van 1,15 met BI [0,95, 1,39] suggereert bijvoorbeeld dat de voorspeller geen effect kan hebben.
Praktische communicatiestrategieën
Richt je bij presentaties aan niet-technische doelgroepen op procentuele veranderingen in plaats van verhoudingen. Zeg liever "deze factor hangt samen met een stijging van 30% in het gebeurtenistarief" dan "de IRR is 1,3".
Geef concrete voorbeelden: "Op basis van ons model hangt een stijging van marketinguitgaven met $1000 samen met ongeveer 15% meer klantacquisities, van gemiddeld 20 naar circa 23 klanten per maand."
Poisson-regressie implementeren in R
Nu we de interpretatie uitgebreid hebben behandeld, gaan we dit in R implementeren.
Datavoorbereiding en verkenning
Bekijk je telgegevens goed voordat je een model fit. Begin met het laden van de benodigde libraries en het verkennen van de verdeling:
De variantie-tot-gemiddeldeverhouding van 0,65 ligt redelijk dicht bij 1, wat aangeeft dat onze data geschikt is voor Poisson-regressie. Hoewel niet exact gelijk, zijn verhoudingen tussen 0,5 en 1,5 over het algemeen acceptabel en suggereren ze dat de Poisson-verdeling een goede basis vormt om deze telgegevens te modelleren.
Verdeling van dagelijkse websitebezoekers. Afbeelding door de auteur.
Het histogram toont een grofweg symmetrische verdeling van bezoekersaantallen rond 47 per dag, met waarden variërend van circa 39 tot 58. Dit patroon past bij telgegevens die effectief met Poisson-regressie zijn te modelleren.
Het model fitten
De functie
glm()metfamily = poissonfit Poisson-regressiemodellen:Hier is de coëfficiëntentabel:
Hier zijn de incidentieratio’s (IRR’s):
De coëfficiënten tonen de effecten op log-schaal, maar de IRR’s bieden intuïtievere interpretaties. Donderdag (
day_of_weekThu) heeft bijvoorbeeld een IRR van 1,11, wat neerkomt op circa 11% meer bezoekers vergeleken met vrijdag (de referentiecategorie). Marketinguitgaven hebben een IRR van 1,0002, wat aangeeft dat elke extra dollar het verwachte bezoekersaantal met ongeveer 0,02% verhoogt.Let op dat, als we betrouwbaarheidsintervallen voor deze IRR’s zouden berekenen, veel ervan 1,0 zouden omvatten, wat suggereert dat de effecten met deze kleine steekproef niet statistisch significant zijn. Dit komt vaak voor bij kleine datasets en laat zien waarom steekproefgrootte ertoe doet.
Exposure opnemen met offsets
Als je data variërende exposureperioden heeft, neem die dan op als offsets:
Let op hoe de coëfficiënten sterk veranderen wanneer we de offset opnemen. De intercept daalt van 3,30 naar 1,73 en alle andere effecten worden kleiner. Deze transformatie treedt op omdat we nu het tarief per dag modelleren in plaats van totale tellingen over variërende perioden.
De offset zorgt voor eerlijke vergelijkingen door te corrigeren voor verschillende exposureduren. Zonder deze correctie zouden perioden met meer observatiedagen kunstmatig hogere bezoekersaantallen lijken te hebben, wat de werkelijke relaties die we willen bestuderen kan verhullen. Het model beantwoordt nu de vraag "Wat is het dagelijkse bezoekersaantal?" in plaats van "Hoeveel bezoekers waren er in totaal?"
Voorspellingen maken
Genereer voorspellingen voor nieuwe scenario’s:
Het model voorspelt 45,2 bezoekers voor een vrijdag met $300 aan marketinguitgaven en een temperatuur van 25°C. Deze voorspelling valt binnen het redelijke bereik van onze geobserveerde data (39–58 bezoekers) en ligt dicht bij ons algemene gemiddelde van 46,9 bezoekers.
Poisson-regressie zorgt er van nature voor dat voorspellingen positief blijven en als gehele getallen kunnen worden afgerond, in tegenstelling tot lineaire regressie die onmogelijke negatieve waarden kan opleveren. De parameter
type = "response"geeft voorspellingen terug op de oorspronkelijke telschaal in plaats van de intern gebruikte log-schaal.Essentiële modeldiagnostiek
Controleren op overdispersie
Overdispersie treedt op wanneer de variantie het gemiddelde overschrijdt, wat een belangrijke Poisson-aanname schendt:
De dispersiestatistiek van 0,849 ligt dicht bij 1, wat aangeeft dat ons model goed past zonder significante overdispersie. Waarden dicht bij 1 suggereren dat de Poisson-aanname van gelijke verwachting en variantie redelijk is voor deze dataset.
Omdat de statistiek onder 1,5 ligt, verschijnt er geen waarschuwing, wat bevestigt dat standaard Poisson-regressie passend is. Als deze waarde veel groter dan 1 zou zijn (typisch boven 1,5), overweeg dan quasi-Poisson of negatief-binomiale modellen om de extra variabiliteit te modelleren.
Residualanalyse
Bekijk residuals om patronen of modelovertredingen te detecteren:
Residualplot met willekeurige spreiding rond nul. Afbeelding door de auteur.
De residualplot toont punten die willekeurig rond de nullijn verspreid zijn zonder duidelijke patronen, wat erop wijst dat ons model de data goed past. De residuals variëren grofweg van -1 tot +1, wat redelijk is voor deze steekproefgrootte.
Goede residualplots laten zien: willekeurige spreiding rond nul (geen kromme patronen), ruwweg constante spreiding over fitted values (geen trechtervormen) en geen extreme uitschieters. Deze plot voldoet aan al deze criteria, wat bevestigt dat de aannames van Poisson-regressie zijn vervuld en ons model betrouwbare resultaten levert.
Omgaan met overdispersie
Als overdispersie wordt vastgesteld, overweeg dan quasi-Poisson-modellen die standaardfouten aanpassen:
Omdat ons model een goede dispersie (0,849) laat zien, zijn quasi-Poisson-aanpassingen hier niet nodig. Deze aanpak levert echter conservatievere betrouwbaarheidsintervallen en p-waarden op wanneer de variantie het gemiddelde overschrijdt, en is dus waardevol bij praktijkdata die vaak overdispersie vertoont.
Resultaten presenteren en interpreteren
Heldere samenvattingen maken
Zet modeluitvoer om in bedrijfsrelevante inzichten door je te richten op de praktische betekenis van je IRR’s. Als je model laat zien dat weekenddagen een IRR van 1,4 hebben vergeleken met weekdagen, communiceer dit dan als "in het weekend zijn er ongeveer 40% meer bezoekers dan op weekdagen". Als marketinguitgaven een IRR van 1,002 hebben, leg dan uit dat "elke extra dollar aan marketing samenhangt met ongeveer 0,2% meer bezoekers".
Voor continue variabelen kun je effecten presenteren op betekenisvolle intervallen. In plaats van het effect van één graad temperatuurverschil te bespreken, kun je het effect van een verschil van 10 graden tonen, wat relevanter kan zijn voor planning.
Beperkingen van het model begrijpen
Poisson-regressie identificeert associaties, geen causale relaties. Een sterke samenhang tussen marketinguitgaven en bezoekersaantallen bewijst niet dat marketing de stijging veroorzaakt. Andere factoren kunnen beide variabelen beïnvloeden. Erken deze beperking wanneer je resultaten presenteert.
Het model veronderstelt dat het tarief constant blijft voor gegeven voorspellerwaarden. Als je bedrijf seizoenspatronen kent die niet door je variabelen worden vastgelegd, of als de relatie tussen voorspellers en uitkomsten in de tijd verandert, generaliseert je model mogelijk niet goed naar toekomstige perioden.
Veelvoorkomende uitdagingen en oplossingen
Omgaan met nullen
Telgegevens bevatten vaak nullen, die in Poisson-regressie volkomen geldig zijn. Als je data echter veel meer nullen bevat dan een Poisson-verdeling zou voorspellen, kan dat wijzen op een ander datagenererend proces. Sommige observaties kunnen perioden of omstandigheden vertegenwoordigen waarin de gebeurtenis simpelweg niet kan plaatsvinden, in plaats van perioden waarin het kon maar niet gebeurde.
Zo kunnen bezoekersaantallen van een website nullen bevatten voor dagen waarop de site wegens onderhoud offline was. Deze "structurele nullen" verschillen van "willekeurige nullen" die natuurlijk voorkomen in Poisson-processen.
Modelbouwstrategie
Begin met je belangrijkste voorspellers op basis van domeinkennis. Voeg variabelen één voor één toe en beoordeel of ze je begrip van de data verbeteren. Complexere modellen zijn niet altijd beter.
Let op de praktische betekenis van effecten, niet alleen op statistische significantie. Een statistisch significant verschil van 1% in gebeurtenistarieven rechtvaardigt misschien geen actie, terwijl een verandering van 20% die marginaal niet-significant is, toch nader onderzoek met meer data kan verdienen.
Omgaan met schendingen
Wanneer equidispersie faalt (variantie veel groter dan het gemiddelde), biedt quasi-Poisson-regressie een eenvoudige oplossing. De modelstructuur blijft gelijk, maar de standaardfouten worden aangepast voor de extra variabiliteit. Dit levert conservatievere betrouwbaarheidsintervallen en p-waarden op.
Bij ernstige overdispersie modelleert negatief-binomiale regressie de extra variatie expliciet. Deze aanpak schat zowel de gemiddelde relatie als de extra variabiliteit.
Best practices en aanbevelingen
Veelgemaakte fouten vermijden
Negeer overdispersie niet – het is een van de meest voorkomende schendingen van Poisson-aannames en kan je conclusies ernstig beïnvloeden. Controleer altijd de verhouding tussen variantie en gemiddelde en overweeg alternatieven wanneer nodig.
Wees voorzichtig met extrapoleren buiten je datarange. Als je marketinguitgaven variëren van $100 tot $1000, voorspel dan niet vol vertrouwen effecten voor $5000. De relatie blijft mogelijk niet log-lineair bij extreme waarden.
Vermijd de aanname dat alle niveaus van categorische voorspellers gelijk uit elkaar liggen. Opleidingsniveaus (middelbare school, wat hoger onderwijs, hbo/wo-afgestudeerd) hebben mogelijk geen gelijke effecten op je uitkomstvariabele.
Documentatie en workflow
Documenteer je modelleerkeuzes, vooral aannameschendingen en hoe je die hebt aangepakt. Als je overdispersie ontdekte maar koos voor quasi-Poisson-aanpassingen, noteer dan deze beslissing en de implicaties voor de interpretatie.
Conclusie
Poisson-regressie biedt een effectief kader voor het analyseren van telgegevens in veel domeinen. Begin met eenvoudige modellen en bouw de complexiteit geleidelijk op, gebaseerd op zowel statistisch bewijs als domeinexpertise. Wanneer aannames worden geschonden, bieden uitbreidingen zoals quasi-Poisson of negatief-binomiale modellen goede alternatieven. Het doel is niet alleen statistische significantie, maar praktische inzichten die betere beslissingen ondersteunen.
Wil je je regressie-expertise verdiepen, dan behandelt onze cursus Intermediate Regression in R geavanceerde diagnostiek en modelstrategieën die de Poisson-regressievaardigheden uit deze tutorial aanvullen. Generalized Linear Models in R is een andere prima optie.