Нежное введение в регрессию Пуассона для подсчета данных


Регрессия — это статистический метод, который можно использовать для определения взаимосвязи между одной или несколькими переменными-предикторами и переменной отклика .

Регрессия Пуассона — это особый тип регрессии, в котором переменная отклика состоит из «данных подсчета». Следующие примеры иллюстрируют случаи, когда можно использовать регрессию Пуассона:

Пример 1. Регрессию Пуассона можно использовать для изучения количества студентов, окончивших определенную программу колледжа, на основе их среднего балла при поступлении на программу и их пола. В этом случае «количество выпускников» — это переменная ответа, «средний балл успеваемости при поступлении на программу» — непрерывная предикторная переменная, а «пол» — категориальная предикторная переменная.

Пример 2. Регрессию Пуассона можно использовать для изучения количества дорожно-транспортных происшествий на конкретном перекрестке в зависимости от погодных условий («солнечно», «облачно», «дождь») и от того, происходит ли в городе особое событие ( "Да или нет"). В этом случае «количество дорожно-транспортных происшествий» является переменной отклика, а «погодные условия» и «особое событие» являются категориальными переменными-предикторами.

Пример 3. Регрессию Пуассона можно использовать для изучения количества людей, стоящих перед вами в очереди в магазине, в зависимости от времени суток, дня недели и наличия распродажи («да» или «нет»). »). В этом случае «количество людей впереди вас в очереди» является переменной ответа, «время дня» и «день недели» являются непрерывными предикторными переменными, а «распродажа» является категориальной предикторной переменной.

Пример 4. Регрессию Пуассона можно использовать для изучения количества людей, закончивших триатлон, в зависимости от погодных условий («солнечно», «облачно», «дождь») и сложности трассы («легко», «умеренно», « сложно"). В этом случае «количество людей, закончивших» — это переменная ответа, а «погодные условия» и «сложность трассы» — обе категориальные переменные-предикторы.

Проведение регрессии Пуассона позволит вам увидеть, какие переменные-предикторы (если они есть) оказывают статистически значимое влияние на переменную отклика.

Для непрерывных переменных-предикторов вы сможете интерпретировать, как увеличение или уменьшение этой переменной на одну единицу связано с процентным изменением в подсчетах переменной ответа (например, «каждое дополнительное увеличение среднего балла связано с увеличением на 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 A: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) %>%
 summarise (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 игроков из дивизиона «А», 38 игроков из дивизиона «В» и 35 игроков из дивизиона «С».
  • Минимальный балл за экзамен составлял 60,26, максимальный — 93,87, а средний — 76,43.
  • В целом игроки, получившие больше предложений о стипендиях, как правило, получали более высокие баллы на экзаменах (например, средний балл на экзамене для игроков, получивших 0 предложений, составил 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 = «poisson» для модели:

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

#view model output
summary(model)

#Call:
#glm(formula = offers ~ division + exam, family = "poisson", 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 \*\*\*
#---
#Signif. codes: 0 '\*\*\*' 0.001 '\*\*' 0.01 '\*' 0.05 '.' 0.1 ' ' 1
#
#(Dispersion parameter for poisson 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. Более простой способ интерпретировать это — взять возведенное в степень значение, т. е. е 0,1756 = 1,19.Это означает, что игроки в дивизионе B получают на 19% больше предложений, чем игроки в дивизионе A. Обратите внимание, что эта разница не является статистически значимой (p = 0,519).
  • Коэффициент для дивизиона C равен -0,05251 , что указывает на то, что ожидаемый логарифмический подсчет количества предложений для игрока в дивизионе C на 0,05251 ниже , чем для игрока в дивизионе A. Более простой способ интерпретировать это — взять возведенное в степень значение, т. е. е 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") 

График регрессии Пуассона в R

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

Отчет о результатах

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

Регрессия Пуассона была проведена для прогнозирования количества предложений о стипендиях, полученных бейсболистами, на основе результатов дивизиона и вступительных экзаменов. На каждый дополнительный балл, набранный на вступительном экзамене, приходится 10% увеличение количества полученных предложений ( р < 0,0001).Было установлено, что деление не является статистически значимым.

Дополнительные ресурсы

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