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


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

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

Пример 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") 
Сгруппированная гистограмма в R

Мы видим, что большинство игроков получили либо ноль, либо одно предложение. Это типично для наборов данных, которые следуют распределению Пуассона : приличная часть значений ответа равна нулю.

Подбор модели регрессии Пуассона

Затем мы можем подобрать модель, используя функцию 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).Было установлено, что деление не является статистически значимым.

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

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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.