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