Uma introdução suave à regressão de poisson para dados de contagem


A regressão é um método estatístico que pode ser usado para determinar a relação entre uma ou mais variáveis preditoras e uma variável de resposta .

A regressão de Poisson é um tipo especial de regressão em que a variável de resposta são “dados de contagem”. Os exemplos a seguir ilustram casos em que a regressão de Poisson poderia ser usada:

Exemplo 1: A regressão de Poisson pode ser usada para examinar o número de alunos que se formaram em um programa universitário específico com base em seu GPA quando ingressaram no programa e em seu gênero. Nesse caso, “número de alunos formados” é a variável resposta, “GPA no início do programa” é uma variável preditora contínua e “gênero” é uma variável preditora categórica.

Exemplo 2: A regressão de Poisson pode ser usada para examinar o número de acidentes de trânsito em um determinado cruzamento com base nas condições climáticas (“ensolarado”, “nublado”, “chuvoso”) e se um evento especial ocorre ou não na cidade (“Sim ou não”). Neste caso, “número de acidentes rodoviários” é a variável de resposta, enquanto “condições meteorológicas” e “evento especial” são ambas variáveis preditoras categóricas.

Exemplo 3: A regressão de Poisson pode ser usada para examinar o número de pessoas à sua frente na fila de uma loja com base na hora do dia, no dia da semana e se uma venda está ocorrendo ou não (“Sim ou não) . “). Neste caso, “o número de pessoas à sua frente na fila” é a variável de resposta, “hora do dia” e “dia da semana” são ambas variáveis preditoras contínuas e “venda em andamento” é uma variável preditora categórica.

Exemplo 4: A regressão de Poisson pode ser usada para examinar o número de pessoas que completam um triatlo com base nas condições climáticas (“ensolarado”, “nublado”, “chuvoso”) e dificuldade do percurso (“fácil”, “chuvoso”). moderado”, “difícil”). Neste caso, “número de pessoas concluindo” é a variável resposta, enquanto “condições climáticas” e “dificuldade do curso” são ambas variáveis preditoras categóricas.

A execução de uma regressão de Poisson permitirá ver quais variáveis preditoras (se houver) têm um efeito estatisticamente significativo na variável de resposta.

Para variáveis preditoras contínuas, você será capaz de interpretar como um aumento ou diminuição de uma unidade nessa variável está associado a uma mudança percentual nos números da variável de resposta (por exemplo, “cada ponto adicional de aumento de uma unidade no GPA está associado a um aumento de 12,5% na variável resposta).

Para variáveis preditoras categóricas, você poderá interpretar a variação percentual nas contagens de um grupo (por exemplo, o número de pessoas que completam um triatlo em um dia ensolarado) em comparação com outro grupo (por exemplo, o número de pessoas que terminam um triatlo). triatlo em tempo chuvoso).

Suposições da regressão de Poisson

Antes de podermos realizar uma regressão de Poisson, devemos garantir que as seguintes suposições sejam atendidas para que nossos resultados de regressão de Poisson sejam válidos:

Suposição 1: A variável de resposta são dados de contagem. Na regressão linear tradicional, a variável de resposta são dados contínuos. Entretanto, para usar a regressão de Poisson, nossa variável de resposta deve consistir em dados de contagem incluindo números inteiros de 0 ou mais (por exemplo, 0, 1, 2, 14, 34, 49, 200, etc.). Nossa variável de resposta não pode conter valores negativos.

Hipótese 2: as observações são independentes. Cada observação no conjunto de dados deve ser independente uma da outra. Isto significa que uma observação não deve ser capaz de fornecer informações sobre outra observação.

Hipótese 3: A distribuição das contas segue uma distribuição de Poisson. Como resultado, as contagens observadas e esperadas devem ser semelhantes. Uma maneira simples de testar isso é representar graficamente as contagens esperadas e observadas e ver se são semelhantes.

Premissa 4: A média e a variância do modelo são iguais. Isto resulta da suposição de que a distribuição das contagens segue uma distribuição de Poisson. Para uma distribuição de Poisson, a variância tem o mesmo valor que a média. Se esta suposição for satisfeita, então você tem equidispersão . No entanto, esta suposição é frequentemente violada porque a sobredispersão é um problema comum.

Exemplo: regressão de Poisson em R

Iremos agora revisar um exemplo de como realizar a regressão de Poisson em R.

Fundo

Suponha que queiramos saber quantas bolsas um jogador de beisebol do ensino médio em um determinado condado recebe com base em sua divisão escolar (“A”, “B” ou “C”) e sua série escolar. vestibular (medido de 0 a 100). ).

O código a seguir cria o conjunto de dados com o qual trabalharemos, que inclui dados de 100 jogadores de beisebol:

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

Compreendendo os dados

Antes de realmente ajustar o modelo de regressão de Poisson a este conjunto de dados, podemos entender melhor os dados visualizando as primeiras linhas do conjunto de dados e usando a biblioteca dplyr para executar estatísticas resumidas:

 #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

Do resultado acima, podemos observar o seguinte:

  • Existem 100 linhas e 3 colunas no conjunto de dados
  • O número mínimo de ofertas que um jogador recebeu foi zero, o máximo foi quatro e a média foi 0,83.
  • Neste conjunto de dados, existem 27 jogadores da divisão “A”, 38 jogadores da divisão “B” e 35 jogadores da divisão “C”.
  • A nota mínima do exame foi 60,26, a nota máxima foi 93,87 e a média foi 76,43.
  • Em geral, os jogadores que receberam mais ofertas de bolsas de estudo tendem a ter pontuações mais altas nos exames (por exemplo, a pontuação média do exame para jogadores que não receberam ofertas foi 70,0 e a pontuação média da avaliação para jogadores que receberam 4 ofertas foi 87,9).

Também podemos criar um histograma para visualizar a quantidade de ofertas recebidas pelos jogadores com base na divisão:

 #load ggplot2 package
library(ggplot2)

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

Podemos ver que a maioria dos jogadores não recebeu nenhuma ou apenas uma oferta. Isso é típico de conjuntos de dados que seguem distribuições de Poisson : boa parte dos valores de resposta são zero.

Ajustando o modelo de regressão de Poisson

A seguir, podemos ajustar o modelo usando a função glm() e especificando que queremos usar family=”fish” para o modelo:

 #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

Pelo resultado podemos observar o seguinte:

  • Coeficientes de regressão de Poisson, erro padrão de estimativas, escores z e valores p correspondentes são todos fornecidos.
  • O coeficiente de revisão é 0,09548 , o que indica que o número logarítmico esperado para o número de ofertas para um aumento de uma unidade na revisão é 0,09548 . Uma maneira mais simples de interpretar isso é usar o valor exponenciado, ou seja, e 0,09548 = 1,10 . Isso significa que há um aumento de 10% no número de ofertas recebidas para cada ponto adicional obtido no vestibular.
  • O coeficiente para a Divisão B é 0,1756 , o que indica que o número esperado de ofertas para um jogador da Divisão B é 0,1756 superior ao de um jogador da Divisão A. Uma forma mais simples de interpretar isto é tomar o valor exponenciado, ou seja, e 0,1756 = 1.19 . Isto significa que os jogadores da divisão B recebem 19% mais ofertas do que os jogadores da divisão A. Note-se que esta diferença não é estatisticamente significativa (p = 0,519).
  • O coeficiente para a Divisão C é -0,05251 , o que indica que o número de log esperado para o número de ofertas para um jogador na Divisão C é 0,05251 menor do que para um jogador na Divisão A. Uma maneira mais simples de interpretar isso é pegar o valor exponenciado , ou seja, é e 0,05251 = 0,94 . Isto significa que os jogadores da divisão C recebem 6% menos ofertas do que os jogadores da divisão A. Note-se que esta diferença não é estatisticamente significativa (p = 850).

Informações sobre desvios do modelo também são fornecidas. Estamos especialmente interessados no desvio residual , que tem um valor de 79.247 em 96 graus de liberdade. Usando esses números, podemos realizar um teste de adequação do qui-quadrado para ver se o modelo se ajusta aos dados. O código a seguir ilustra como realizar esse teste:

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

#[1] 0.8922676

O valor p para este teste é 0,89 , bem acima do nível de significância de 0,05. Podemos concluir que os dados se ajustam razoavelmente bem ao modelo.

Ver resultados

Também podemos criar um gráfico que mostre a quantidade esperada de ofertas de bolsas recebidas com base nos resultados da divisão e do vestibular usando o seguinte código:

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

O gráfico mostra o maior número de ofertas de bolsas esperadas para jogadores com notas altas no vestibular. Além disso, podemos ver que os jogadores da Divisão B (a linha verde) devem receber mais ofertas em geral do que os jogadores da Divisão A ou da Divisão C.

Relatar resultados

Finalmente, podemos relatar os resultados da regressão de uma forma que resuma nossas descobertas:

Uma regressão de Poisson foi executada para prever o número de ofertas de bolsas de estudo recebidas por jogadores de beisebol com base nas notas da divisão e dos exames de admissão. Para cada ponto adicional obtido no vestibular, o número de ofertas recebidas aumenta em 10% ( p < 0,0001) . A divisão não foi considerada estatisticamente significativa.

Recursos adicionais

Introdução à regressão linear simples
Introdução à regressão linear múltipla
Uma introdução à regressão polinomial

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *