Por que o quase-Poisson no GLM não é tratado como um caso especial de binômio negativo?

21

Estou tentando ajustar modelos lineares generalizados a alguns conjuntos de dados de contagem que podem ou não estar superdispersos. As duas distribuições canônicas que se aplicam aqui são o Poisson e o Binomial Negativo (Negbin), com EV e variânciaμ

VarP=μ

VarNB=μ+μ2θ

que pode ser montado em R usando glm(..,family=poisson)e glm.nb(...), respectivamente. Há também a quasipoissonfamília, que no meu entender é um Poisson ajustado com o mesmo VE e variância

VarQP=ϕμ ,

ou seja, caindo em algum lugar entre Poisson e Negbin. O principal problema com a família quasipoisson é que não há uma probabilidade correspondente para isso e, portanto, muitos testes estatísticos extremamente úteis e medidas de ajuste (AIC, LR etc.) não estão disponíveis.

Se você comparar as variações de QP e Negbin, poderá perceber que pode equipará-las colocando . Continuando com essa lógica, você pode tentar expressar a distribuição de quaseipoisson como um caso especial do Negbin:ϕ=1+μθ

QP(μ,ϕ)=NB(μ,θ=μϕ1) ,

isto é, um Negbin com linearmente dependente de . Tentei verificar essa ideia gerando uma sequência aleatória de números de acordo com a fórmula acima e ajustando-a com :μθμglm

#fix parameters

phi = 3
a = 1/50
b = 3
x = 1:100

#generating points according to an exp-linear curve
#this way the default log-link recovers the same parameters for comparison

mu = exp(a*x+b) 
y = rnbinom(n = length(mu), mu = mu, size = mu/(phi-1)) #random negbin generator

#fit a generalized linear model y = f(x)  
glmQP = glm(y~x, family=quasipoisson) #quasipoisson
glmNB = glm.nb(y~x) #negative binomial

> glmQP

Call:  glm(formula = y ~ x, family = quasipoisson)

Coefficients:
(Intercept)            x  
    3.11257      0.01854  
(Dispersion parameter for quasipoisson family taken to be 3.613573)

Degrees of Freedom: 99 Total (i.e. Null);  98 Residual
Null Deviance:      2097 
Residual Deviance: 356.8    AIC: NA

> glmNB

Call:  glm.nb(formula = y ~ x, init.theta = 23.36389741, link = log)

Coefficients:
(Intercept)            x  
    3.10182      0.01873  

Degrees of Freedom: 99 Total (i.e. Null);  98 Residual
Null Deviance:      578.1 
Residual Deviance: 107.8    AIC: 824.7

Ambos os ajustes reproduzem os parâmetros, e o quasipoisson fornece uma estimativa 'razoável' para . Agora também podemos definir um valor AIC para o quasipoisson:ϕ

df = 3 # three model parameters: a,b, and phi
phi.fit = 3.613573 #fitted phi value copied from summary(glmQP)
mu.fit = glmQP$fitted.values 

#dnbinom = negbin density, log=T returns log probabilities
AIC = 2*df - 2*sum(dnbinom(y, mu=mu.fit, size = mu.fit/(phi.fit - 1), log=T))
> AIC
[1] 819.329

(Eu tive que copiar manualmente o valor ajustado , pois não o encontrei no objeto)ϕsummary(glmQP)glmQP

Uma vez que , isso indicaria que o quasipoisson é, sem surpresa, o melhor ajuste; portanto, pelo menos, faz o que deve fazer e, portanto, pode ser uma definição razoável para o AIC (e, por extensão, probabilidade) de um quasipoisson. As grandes questões que me restam são então A I C Q PAICQP<AICNBAICQP

  1. Essa ideia faz sentido? Minha verificação é baseada em raciocínio circular?
  2. A principal questão para quem "inventa" algo que parece estar faltando em um tópico bem estabelecido: se essa idéia faz sentido, por que ela já não está implementada glm?

Editar: figura adicionada

glm fits e + -1 sigma bandas

user28400
fonte
1
(+1) Bem-vindo ao Cross Validated! E obrigado por uma excelente pergunta (embora alguns comentários no código possam ser agradáveis ​​para pessoas que não usam R). Acho que você pode ter reinventado o modelo NB1 (embora ainda não o tenha seguido em detalhes). Observe também que não há uma distribuição quase-Poisson - e é por isso que não há probabilidade ou AIC - apenas se refere a uma maneira de ajustar meios e variações.
Scortchi - Restabelecer Monica
2
Obrigado! Eu adicionei alguns comentários enquanto isso, espero que isso esclareça as coisas. Entendo que a distribuição quase-Poisson não existe por si só - o que eu realmente estava tentando descobrir é por que o QP é uma coisa, considerando que a distribuição NB1 existe e não tem nenhum dos quase-problemas do QP (consulte Achims respondem por uma aparente resolução).
user28400
1
@Scortchi --- na verdade, não é tal distribuição um ... Se , e , em seguida, é família exponencial com médias e variância . Se . Não é necessariamente adequado para dados de contagem (exceto como uma aproximação), uma vez que é definido em . Y = k X Y μ = k λ k μ k 1 0 , k , 2 K , . . .XPois(λ)Y=kXYμ=kλkμk10 0,k,2k,...
Glen_b -instala Monica
1
@Glen_b: As pessoas realmente chamam isso de quase Poisson? De qualquer forma, é uma boa ilustração - quando você usa um modelo de "quasiPoisson", não está realmente assumindo que a distribuição, ou o NB1, ou qualquer outro, apenas uma relação entre média e variância que faz suas estimativas de coeficientes e seus erros padrão melhor à medida que a amostra aumenta.
Scortchi - Restabelecer Monica
1
@ Scortchi É a única distribuição familiar exponencial que satisfaz as suposições do quase-Poisson, então meio que - em algumas ocasiões, vi pessoas apontarem que é a distribuição que a suposição implica. É claro que quando as pessoas o usam, elas quase nunca pretendem que seus dados sejam dessa distribuição específica - é apenas uma descrição aproximada de como sua média e variação se relacionam. (Pode fazer sentido sob premissas muito simples em alguns aplicativos de seguro - custo total de sinistros, onde o número de sinistros é Poisson e o custo por sinistro é efetivamente constante.)
Glen_b -Reinstate Monica

Respostas:

24

O quase-Poisson não é um modelo de máxima verossimilhança máxima (ML), mas um modelo de quase-ML. Você apenas usa a função de estimativa (ou função de pontuação) do modelo de Poisson para estimar os coeficientes e, em seguida, emprega uma certa função de variação para obter erros padrão adequados (ou melhor, uma matriz de covariância completa) para realizar inferência. Portanto, glm()não fornece e logLik()ou AIC()aqui etc.

Conforme apontado corretamente, um modelo com a mesma função de expectativa e variação pode ser incorporado na estrutura do binômio negativo (NB) se o sizeparâmetro variar junto com a expectativa . Na literatura, isso é tipicamente chamado de parametrização NB1. Veja, por exemplo, o livro de Cameron & Trivedi (Regression Analysis of Count Data) ou "Analysis of Microdata" de Winkelmann & Boes.μ iθEuμEu

Se não houver regressores (apenas uma interceptação) a parametrização NB1 ea parametrização NB2 empregado por MASS's glm.nb()coincidem. Com regressores eles diferem. Na literatura estatística, a parametrização do NB2 é usada com mais frequência, mas alguns pacotes de software também oferecem a versão NB1. Por exemplo, em R, você pode usar o gamlsspacote para fazer gamlss(y ~ x, family = NBII). Observe que um pouco confuso é gamlssusado NBIpara a parametrização do NB2 e NBIIpara o NB1. (Mas o jargão e a terminologia não são unificados em todas as comunidades.)

Então você pode perguntar, é claro, por que usar quase-Poisson se há NB1 disponível? Ainda existe uma diferença sutil: o primeiro usa quase-ML e obtém a estimativa da dispersão a partir dos resíduos do desvio ao quadrado (ou Pearson). Este último usa ML completo. Na prática, a diferença geralmente não é grande, mas as motivações para o uso de qualquer modelo são ligeiramente diferentes.

Achim Zeileis
fonte
1
Obrigado! Resposta muito útil, estou experimentando gamlssagora e parece que é exatamente o que eu precisava. Você poderia elaborar as motivações para o uso de quase-probabilidade versus ML completo?
user28400
2
Você assume menos: você apenas assume (1) uma relação log-linear entre a expectativa e os regressores (2) uma relação linear entre variação e expectativa. O restante da probabilidade é deixado completamente não especificado. Como alternativa a (2), os profissionais às vezes empregam os chamados erros-padrão sanduíche "robustos", que permitiriam padrões de heterocedasticidade mais gerais. Obviamente, também é possível empregar o NB1 com erros padrão sanduíche ... Mais alguns comentários estão no nosso vignette("countreg", package = "pscl").
Achim Zeileis 19/06/2015