Delikatne wprowadzenie do regresji poissona dla danych zliczeniowych


Regresja to metoda statystyczna, którą można zastosować do określenia związku między jedną lub większą liczbą zmiennych predykcyjnych azmienną odpowiedzi .

Regresja Poissona to specjalny rodzaj regresji, w którym zmienną odpowiedzi są „dane zliczeniowe”. Poniższe przykłady ilustrują przypadki, w których można zastosować regresję Poissona:

Przykład 1: Regresję Poissona można zastosować do zbadania liczby studentów, którzy ukończyli określony program studiów na podstawie ich średniej ocen w momencie rozpoczęcia programu i ich płci. W tym przypadku „liczba studentów kończących studia” jest zmienną odpowiedzi, „GPA w chwili rozpoczęcia programu” jest zmienną predykcyjną ciągłą, a „płeć” jest zmienną predykcyjną kategorialną.

Przykład 2: Regresję Poissona można zastosować do zbadania liczby wypadków drogowych na konkretnym skrzyżowaniu w oparciu o warunki pogodowe („słonecznie”, „pochmurno”, „deszczowo”) oraz to, czy w mieście ma miejsce jakieś szczególne wydarzenie, czy też nie („Tak albo nie”). W tym przypadku „liczba wypadków drogowych” jest zmienną odpowiedzi, podczas gdy „warunki pogodowe” i „zdarzenie specjalne” są kategorycznymi zmiennymi predykcyjnymi.

Przykład 3: Regresję Poissona można zastosować do sprawdzenia liczby osób stojących przed Tobą w kolejce w sklepie na podstawie pory dnia, dnia tygodnia oraz tego, czy odbywa się sprzedaż („Tak czy nie”) . „). W tym przypadku „liczba osób przed Tobą w kolejce” jest zmienną odpowiedzi, „pora dnia” i „dzień tygodnia” są zmiennymi predykcyjnymi ciągłymi, a „sprzedaż w toku” jest zmienną predykcyjną kategorialną.

Przykład 4: Regresję Poissona można zastosować do zbadania liczby osób, które ukończyły triathlon na podstawie warunków pogodowych („słonecznie”, „pochmurno”, „deszczowo”) i stopnia trudności trasy („łatwa”, „deszczowa”). umiarkowany”, „trudny”). W tym przypadku „liczba osób, które ukończyły kurs” jest zmienną odpowiedzi, podczas gdy „warunki pogodowe” i „trudność trasy” są kategorycznymi zmiennymi predykcyjnymi.

Wykonanie regresji Poissona pozwoli Ci zobaczyć, które zmienne predykcyjne (jeśli w ogóle) mają statystycznie istotny wpływ na zmienną odpowiedzi.

W przypadku zmiennych predykcyjnych ciągłych będzie można zinterpretować, w jaki sposób wzrost lub spadek tej zmiennej o jedną jednostkę jest powiązany z procentową zmianą liczb zmiennej odpowiedzi (na przykład „każdy dodatkowy punkt GPA o jedną jednostkę jest powiązany z wzrost zmiennej odpowiedzi o 12,5%).

W przypadku kategorycznych zmiennych predykcyjnych będzie można zinterpretować procentową zmianę liczebności jednej grupy (na przykład liczby osób, które ukończyły triathlon w słoneczny dzień) w porównaniu z inną grupą (na przykład liczbę osób, które ukończyły triathlon w deszczową pogodę).

Założenia regresji Poissona

Zanim będziemy mogli przeprowadzić regresję Poissona, musimy upewnić się, że spełnione są następujące założenia, aby wyniki naszej regresji Poissona były prawidłowe:

Założenie 1: Zmienną odpowiedzi są dane zliczeniowe. W tradycyjnej regresji liniowej zmienną odpowiedzi są dane ciągłe. Jednakże, aby zastosować regresję Poissona, nasza zmienna odpowiedzi musi składać się z danych liczbowych, w tym liczb całkowitych 0 lub większych (np. 0, 1, 2, 14, 34, 49, 200 itd.). Nasza zmienna odpowiedzi nie może zawierać wartości ujemnych.

Hipoteza 2: obserwacje są niezależne. Każda obserwacja w zbiorze danych musi być od siebie niezależna. Oznacza to, że jedna obserwacja nie powinna być w stanie dostarczyć informacji na temat innej obserwacji.

Hipoteza 3: Rozkład rachunków jest zgodny z rozkładem Poissona. W rezultacie zaobserwowane i oczekiwane liczby powinny być podobne. Prostym sposobem sprawdzenia tego jest wykreślenie oczekiwanych i zaobserwowanych zliczeń i sprawdzenie, czy są podobne.

Założenie 4: Średnia i wariancja modelu są równe. Wynika to z założenia, że rozkład zliczeń jest zgodny z rozkładem Poissona. W przypadku rozkładu Poissona wariancja ma tę samą wartość co średnia. Jeżeli to założenie jest spełnione, mamy do czynienia z równodyspersją . Jednak założenie to jest często łamane, ponieważ częstym problemem jest nadmierna dyspersja.

Przykład: regresja Poissona w R

Przyjrzyjmy się teraz przykładowi przeprowadzenia regresji Poissona w R.

Tło

Załóżmy, że chcemy dowiedzieć się, ile stypendiów otrzymuje licealista w baseballu w danym powiecie, biorąc pod uwagę jego oddział szkolny („A”, „B” lub „C”) i ocenę szkolną. egzamin wstępny na uniwersytet (mierzony od 0 do 100). ).

Poniższy kod tworzy zbiór danych, z którym będziemy pracować, zawierający dane dotyczące 100 graczy w 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)))

Zrozumienie danych

Zanim faktycznie dopasujemy model regresji Poissona do tego zbioru danych, możemy lepiej zrozumieć dane, wizualizując kilka pierwszych wierszy zbioru danych i używając biblioteki dplyr do uruchomienia statystyk podsumowujących:

 #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

Z powyższego wyniku możemy zaobserwować, co następuje:

  • Zbiór danych zawiera 100 wierszy i 3 kolumny
  • Minimalna liczba ofert, jakie otrzymał gracz, wyniosła zero, maksymalna – cztery, a średnia wyniosła 0,83.
  • W tym zbiorze danych znajduje się 27 zawodników z dywizji „A”, 38 zawodników z dywizji „B” i 35 zawodników z dywizji „C”.
  • Minimalny wynik egzaminu wyniósł 60,26, maksymalny 93,87, a średni 76,43.
  • Ogólnie rzecz biorąc, gracze, którzy otrzymali więcej ofert stypendialnych, mają zazwyczaj wyższe wyniki z egzaminów (na przykład średni wynik egzaminu dla graczy, którzy nie otrzymali żadnych ofert, wyniósł 70,0, a średni wynik recenzji dla graczy, którzy otrzymali 4 oferty, wyniósł 87,9).

Możemy również utworzyć histogram, który zwizualizuje liczbę ofert otrzymanych przez graczy w podziale na podział:

 #load ggplot2 package
library(ggplot2)

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

Widzimy, że większość graczy nie otrzymała żadnej oferty lub otrzymała tylko jedną ofertę. Jest to typowe dla zbiorów danych zgodnych z rozkładami Poissona : znaczna część wartości odpowiedzi wynosi zero.

Dopasowanie modelu regresji Poissona

Następnie możemy dostosować model za pomocą funkcji glm() i określić, że chcemy użyć Family=”fish” dla modelu:

 #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

Na podstawie wyniku możemy zaobserwować, co następuje:

  • Podano współczynniki regresji Poissona, błąd standardowy szacunków, wyniki Z i odpowiadające im wartości p.
  • Współczynnik przeglądu wynosi 0,09548 , co wskazuje, że oczekiwany numer logu liczby ofert w przypadku wzrostu liczby recenzji o jedną jednostkę wynosi 0,09548 . Prostszym sposobem interpretacji jest przyjęcie wartości potęgowanej, tj. e 0,09548 = 1,10 . Oznacza to, że za każdy dodatkowy punkt zdobyty na egzaminie wstępnym liczba otrzymywanych ofert wzrasta o 10%.
  • Współczynnik dla Dywizji B wynosi 0,1756 , co oznacza, że oczekiwana liczba ofert dla zawodnika Dywizji B jest o 0,1756 większa niż dla zawodnika Dywizji A. Prostszym sposobem interpretacji jest przyjęcie wartości wykładniczej, tj. e 0,1756 = 1.19 . Oznacza to, że gracze z ligi B otrzymują o 19% więcej ofert niż gracze z ligi A. Należy zauważyć, że różnica ta nie jest istotna statystycznie (p = 0,519).
  • Współczynnik dla Dywizji C wynosi -0,05251 , co oznacza, że oczekiwany numer logu dla liczby ofert dla zawodnika w Dywizji C jest o 0,05251 niższy niż dla zawodnika w Dywizji A. Prostszym sposobem interpretacji tego jest przyjęcie wartości wykładniczej , tj. czy e 0,05251 = 0,94 . Oznacza to, że gracze z ligi C otrzymują o 6% mniej ofert niż gracze z ligi A. Należy zauważyć, że różnica ta nie jest istotna statystycznie (p = 850).

Podano również informacje na temat odchyleń modelu. Nas szczególnie interesuje odchylenie resztkowe , które ma wartość 79 247 z 96 stopni swobody. Korzystając z tych liczb, możemy wykonać test dobroci dopasowania chi-kwadrat, aby sprawdzić, czy model pasuje do danych. Poniższy kod ilustruje sposób przeprowadzenia tego testu:

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

#[1] 0.8922676

Wartość p dla tego testu wynosi 0,89 , czyli znacznie powyżej poziomu istotności 0,05. Można stwierdzić, że dane pasują do modelu w miarę dobrze.

Pokaż wyniki

Możemy również utworzyć wykres przedstawiający oczekiwaną liczbę otrzymanych ofert stypendialnych na podstawie wyników egzaminów wydziałowych i wstępnych za pomocą następującego kodu:

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

Wykres pokazuje największą liczbę oczekiwanych ofert stypendialnych dla graczy, którzy uzyskali wysokie wyniki na egzaminie wstępnym. Dodatkowo widzimy, że gracze z Dywizji B (zielona linia) powinni otrzymać ogólnie więcej ofert niż gracze z Dywizji A czy Dywizji C.

Zgłoś wyniki

Na koniec możemy zgłosić wyniki regresji w sposób podsumowujący nasze ustalenia:

Przeprowadzono regresję Poissona, aby przewidzieć liczbę ofert stypendialnych otrzymanych przez graczy w baseball na podstawie wyników egzaminów wydziałowych i wstępnych. Za każdy dodatkowy punkt uzyskany na egzaminie wstępnym liczba otrzymanych ofert wzrasta o 10% ( p < 0,0001) . Podział ten nie okazał się istotny statystycznie.

Dodatkowe zasoby

Wprowadzenie do prostej regresji liniowej
Wprowadzenie do wielokrotnej regresji liniowej
Wprowadzenie do regresji wielomianowej

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *