Короткий вступ до регресії пуассона для даних підрахунку


Регресія — це статистичний метод, який можна використовувати для визначення зв’язку між однією або декількома змінними предиктора та змінною відповіді .

Регресія Пуассона — це особливий тип регресії, у якому змінною відповіді є «підраховані дані». Наступні приклади ілюструють випадки, коли можна використовувати регресію Пуассона:

Приклад 1. Регресію Пуассона можна використовувати для вивчення кількості студентів, які закінчили певну програму коледжу, на основі їх середнього балу на момент вступу на програму та їхньої статі. У цьому випадку «кількість студентів, які закінчили навчання» є змінною відповіді, «Середній бал при вступі на програму» є постійною змінною предиктора, а «стать» є категоріальною змінною предиктора.

Приклад 2. Регресію Пуассона можна використати для дослідження кількості дорожньо-транспортних пригод на певному перехресті на основі погодних умов («сонячно», «хмарно», «дощ») і того, чи відбувається в місті особлива подія чи ні («Так або ні”). У цьому випадку «кількість дорожньо-транспортних пригод» є змінною відповіді, тоді як «погодні умови» та «особлива подія» є категоріальними змінними прогнозу.

Приклад 3. Регресію Пуассона можна використати для визначення кількості людей, які стоять перед вами в черзі в магазині, залежно від часу доби, дня тижня та того, чи відбувається розпродаж («Так чи ні»). . “). У цьому випадку «кількість людей перед вами в черзі» є змінною відповіді, «час доби» та «день тижня» є безперервними предикторними змінними, а «розпродаж» є категоріальною предикторною змінною.

Приклад 4. Регресію Пуассона можна використати для визначення кількості людей, які закінчили триатлон, залежно від погодних умов («сонячно», «хмарно», «дощ») і складності траси («легко», «дощ»). помірний», «важкий»). У цьому випадку «кількість людей, які фінішували» є змінною відповіді, тоді як «погодні умови» та «складність траси» є категоричними змінними-прогностиками.

Виконання регресії Пуассона дозволить вам побачити, які змінні прогнозу (якщо такі є) мають статистично значущий вплив на змінну відповіді.

Для неперервних змінних предикторів ви зможете інтерпретувати, як збільшення або зменшення цієї змінної на одну одиницю пов’язане з відсотковою зміною чисел змінної відповіді (наприклад, «кожне збільшення додаткового бала GPA на одну одиницю пов’язане з 12,5% збільшення змінної відповіді).

Для змінних категоріальних предикторів ви зможете інтерпретувати відсоткову зміну підрахунків однієї групи (наприклад, кількість людей, які закінчили триатлон у сонячний день) порівняно з іншою групою (наприклад, кількість людей, які закінчили триатлон в дощову погоду).

Припущення регресії Пуассона

Перш ніж ми зможемо виконати регресію Пуассона, ми повинні переконатися, що виконуються наступні припущення, щоб наші результати регресії Пуассона були дійсними:

Припущення 1: Змінна відповіді – це дані підрахунку. У традиційній лінійній регресії змінна відповіді є безперервними даними. Однак для використання регресії Пуассона наша змінна відповіді має складатися з даних підрахунку, включаючи цілі числа 0 або більше (наприклад, 0, 1, 2, 14, 34, 49, 200 тощо). Наша змінна відповіді не може містити негативних значень.

Гіпотеза 2: спостереження незалежні. Кожне спостереження в наборі даних має бути незалежним одне від одного. Це означає, що одне спостереження не повинно надати інформацію про інше спостереження.

Гіпотеза 3: Розподіл рахунків відповідає розподілу Пуассона. У результаті спостережувані та очікувані підрахунки мають бути подібними. Простий спосіб перевірити це — побудувати графік очікуваних і спостережуваних показників і перевірити, чи вони схожі.

Припущення 4: середнє значення та дисперсія моделі рівні. Це є результатом припущення, що розподіл підрахунків відповідає розподілу Пуассона. Для розподілу Пуассона дисперсія має таке ж значення, як і середнє. Якщо це припущення виконується, то ви маєте рівнодисперсію . Однак це припущення часто порушується, оскільки надмірна дисперсія є загальною проблемою.

Приклад: регресія Пуассона в R

Тепер ми розглянемо приклад того, як виконати регресію Пуассона в R.

Фон

Припустімо, ми хочемо знати, скільки стипендій отримує бейсболіст середньої школи в даному окрузі залежно від його шкільного класу («A», «B» або «C») і його шкільного класу. вступний іспит до ВНЗ (вимірюється від 0 до 100). ).

Наступний код створює набір даних, з яким ми будемо працювати, який містить дані про 100 бейсболістів:

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

Розуміння даних

Перш ніж фактично підібрати модель регресії Пуассона до цього набору даних, ми можемо краще зрозуміти дані, візуалізувавши кілька перших рядків набору даних і використовуючи бібліотеку dplyr для запуску підсумкової статистики:

 #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

З наведеного вище результату ми можемо помітити наступне:

  • У наборі даних 100 рядків і 3 стовпці
  • Мінімальна кількість пропозицій, які отримував гравець, становила нуль, максимальна – чотири, а середня – 0,83.
  • У цьому наборі даних є 27 гравців з дивізіону «A», 38 гравців з дивізіону «B» і 35 гравців з дивізіону «C».
  • Мінімальний іспитовий бал – 60,26, максимальний – 93,87, середній – 76,43.
  • Загалом гравці, які отримали більше пропозицій стипендії, як правило, мають вищі оцінки за іспит (наприклад, середній бал за іспит для гравців, які не отримали жодної пропозиції, становив 70,0, а середній бал за рецензію для гравців, які отримали 4 пропозиції, становив 87,9).

Ми також можемо створити гістограму, щоб візуалізувати кількість пропозицій, отриманих гравцями на основі дивізіону:

 #load ggplot2 package
library(ggplot2)

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

Ми бачимо, що більшість гравців не отримали жодної пропозиції або отримали лише одну пропозицію. Це типово для наборів даних, які відповідають розподілу Пуассона : значна частина значень відповіді дорівнює нулю.

Підгонка моделі регресії Пуассона

Далі ми можемо налаштувати модель за допомогою функції glm() і вказати, що ми хочемо використовувати family=”fish” для моделі:

 #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

З результату можна помітити наступне:

  • Наведено коефіцієнти регресії Пуассона, стандартну помилку оцінок, z-показники та відповідні значення p.
  • Коефіцієнт огляду дорівнює 0,09548 , що вказує на те, що очікуваний номер журналу для кількості пропозицій щодо збільшення на одиницю перегляду становить 0,09548 . Простіший спосіб інтерпретувати це — взяти значення, піднесене до степеня, тобто e 0,09548 = 1,10 . Це означає, що кількість отриманих пропозицій збільшується на 10% за кожен додатковий бал, отриманий на вступному іспиті.
  • Коефіцієнт для Дивізіону B дорівнює 0,1756 , що вказує на те, що очікувана кількість пропозицій для гравця з Дивізіону B на 0,1756 вища, ніж для гравця з Дивізіону A. Простіший спосіб інтерпретувати це – взяти значення в степені, тобто e 0,1756 = 1.19 . Це означає, що гравці дивізіону B отримують на 19% більше пропозицій, ніж гравці дивізіону A. Зверніть увагу, що ця різниця не є статистично значущою (p = 0,519).
  • Коефіцієнт для Дивізіону С дорівнює -0,05251 , що вказує на те, що очікуване число пропозицій для гравця в Дивізіоні С на 0,05251 менше , ніж для гравця в Дивізіоні А. Простіший спосіб інтерпретувати це — взяти поступове значення , тобто e 0,05251 = 0,94 . Це означає, що гравці в дивізіоні C отримують на 6% менше пропозицій, ніж гравці в дивізіоні A. Зверніть увагу, що ця різниця не є статистично значущою (p = 850).

Також надається інформація про відхилення моделі. Нас особливо цікавить залишкове відхилення , яке має значення 79 247 з 96 ступенів свободи. Використовуючи ці числа, ми можемо виконати тест на відповідність хі-квадрат, щоб побачити, чи відповідає модель даним. Наступний код ілюструє, як виконати цей тест:

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

#[1] 0.8922676

P-значення для цього тесту становить 0,89 , що значно перевищує рівень значущості 0,05. Ми можемо зробити висновок, що дані досить добре відповідають моделі.

Переглянути результати

Ми також можемо створити діаграму, яка показує очікувану кількість пропозицій стипендій, отриманих на основі результатів відділень і вступних іспитів, використовуючи такий код:

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

На діаграмі показано найбільшу кількість очікуваних пропозицій стипендій для гравців, які отримали високі бали на вступному іспиті. Крім того, ми бачимо, що гравці в Дивізіоні B (зелена лінія) повинні отримувати більше пропозицій загалом, ніж гравці в Дивізіоні A або Дивізіоні C.

Звіт про результати

Нарешті, ми можемо повідомити про результати регресії таким чином, щоб узагальнити наші висновки:

Було проведено регресію Пуассона, щоб передбачити кількість пропозицій стипендії, отриманих бейсболістами, на основі результатів дивізійних і вступних іспитів. З кожним додатковим балом, отриманим на вступному іспиті, кількість отриманих пропозицій збільшується на 10% ( p < 0,0001) . Поділ не був визнаний статистично значущим.

Додаткові ресурси

Вступ до простої лінійної регресії
Вступ до множинної лінійної регресії
Вступ до поліноміальної регресії

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *