Um modelo para dados não negativos com aglomerado em zeros (Tweedie GLM, GLM inflado a zero, etc.) pode prever zeros exatos?

15

Uma distribuição Tweedie pode modelar dados assimétricos com uma massa de pontos em zero quando o parâmetro (expoente na relação média-variância) estiver entre 1 e 2.p

Da mesma forma, um modelo inflado a zero (seja ele contínuo ou discreto) pode ter um grande número de zeros.

Estou tendo problemas para entender por que, quando faço previsões ou calculo valores ajustados com esses tipos de modelos, todos os valores previstos são diferentes de zero.

Esses modelos podem realmente prever zeros exatos?

Por exemplo

library(tweedie)
library(statmod)
# generate data
y <- rtweedie( 100, xi=1.3, mu=1, phi=1)  # xi=p
x <- y+rnorm( length(y), 0, 0.2)
# estimate p
out <- tweedie.profile( y~1, p.vec=seq(1.1, 1.9, length=9))
# fit glm
fit <- glm( y ~ x, family=tweedie(var.power=out$p.max, link.power=0))
# predict
pred <- predict.glm(fit, newdata=data.frame(x=x), type="response")

predagora não contém zeros. Eu pensei que a utilidade de modelos como a distribuição Tweedie vem de sua capacidade de prever zeros exatos e a parte contínua.

Eu sei que no meu exemplo a variável xnão é muito preditiva.

spore234
fonte
Considere também modelos de resposta ordinais semi-paramétricos, que permitem que as distribuições arbitrários para . Y
31717 Frank Fellowski em

Respostas:

16

Observe que o valor previsto em um GLM é uma média.

Para qualquer distribuição em valores não negativos, para prever uma média de 0, sua distribuição teria que ser inteiramente um pico em 0.

No entanto, com um link de log, você nunca ajustará uma média de exatamente zero (já que isso exigiria que vá para - ).η

Portanto, seu problema não é um problema com o Tweedie, mas muito mais geral; você teria exatamente o mesmo problema com o Poisson (Poisson GLM comum ou inflado a zero), por exemplo.

Eu pensei que a utilidade da distribuição Tweedie vem de sua capacidade de prever zeros exatos e a parte contínua.

Como a previsão de zeros exatos não ocorrerá para qualquer distribuição sobre valores não negativos com um link de log, seu pensamento sobre isso deve estar errado.

Uma de suas atrações é que ele pode modelar zeros exatos nos dados, não que as previsões médias sejam 0. [É claro que uma distribuição ajustada com média diferente de zero ainda pode ter uma probabilidade de ser exatamente zero, mesmo que a média deva exceder 0 Um intervalo de previsão adequado pode incluir 0, por exemplo.]

Não importa que a distribuição ajustada inclua uma proporção substancial de zeros - isso não faz com que a média ajustada seja zero.

Observe que, se você alterar a função de link para dizer um link de identidade, ele realmente não resolverá o problema - a média de uma variável aleatória não negativa que não é todos os zeros será positiva.

Glen_b -Reinstate Monica
fonte
1
Obrigado pela sua explicação. Comparei um tweedie glm a um gamma glm e os betas são quase exatamente os mesmos, independentemente de quantos zeros os dados contenham (altero os zeros para um valor muito pequeno para o gamma glm). E qual é a maneira proposta de prever zeros e a parte contínua simultaneamente.
precisa saber é o seguinte
2
@ spore234 Você pode rolar seu próprio modelo de barreira gama, que teria uma barreira binomial para prever 0/1 e um modelo gama ajustado aos dados diferentes de zero. Aqui está um link para um post de blog que discute esse modelo e como encaixar um à mão em R. Como um aparte, se algo é contínuo, como você sabe que é exatamente zero? O seu aparelho de medição é capaz de medições tão refinadas?
Reinstate Monica - G. Simpson
2
@spore, você terá que ser mais explícito sobre o que você realmente quer dizer com "prever os zeros"; minha resposta já estabelece por que nenhum outro modelo distributivo usado para substituir o Tweedie fornecerá uma previsão média de zero (os modelos NB inflados a zero e com obstáculos também têm o mesmo problema com suas previsões médias). Dada uma previsão média, é o que você quis dizer com "prever" quando usou um GLM, o que você quer dizer com agora? Se você mudar para significar algo em que um modelo com 0 ou obstáculo faz sentido, um Tweedie pode muito bem satisfazer a mesma condição.
Glen_b -Reinstate Monica
1
Realmente depende do que você quer dizer com "prever" (já que você não quer dizer "prever a média", você precisa dizer o que procura) - você deseja prever a probabilidade de um zero? previsão mediana? Alguma outra coisa?) e que tipo de coisas você considera "melhor" para que possa ser feita uma comparação.
Glen_b -Reinstala Monica
1
@ spore234 O problema, mais uma vez, é que você usa a palavra "prever", mas falha ao definir o que você quer dizer com "prever" (continuo perguntando!). Você parece ter descartado tanto dos mais interpretações óbvias do termo nesta situação, então você precisa dizer o que fazer média. Quando você diz "prever quanto será o custo dessa pessoa", o que você realmente quer dizer? Observe que você não pode obter o custo exato para cada pessoa ... então, quais propriedades essa "previsão" deve ter?
Glen_b -Reinstate Monica
10

Prevendo a proporção de zeros

Eu sou o autor do pacote statmod e o autor conjunto do pacote tweedie. Tudo no seu exemplo está funcionando corretamente. O código está contabilizando corretamente quaisquer zeros que possam estar nos dados.

Como Glen_b e Tim explicaram, o valor médio previsto nunca será exatamente zero, a menos que a probabilidade de um zero seja 100%. O que pode ser interessante, porém, é a proporção prevista de zeros, e isso pode ser facilmente extraído do ajuste do modelo, como mostramos abaixo.

Aqui está um exemplo de trabalho mais sensato. Primeiro simule alguns dados:

> library(statmod)
> library(tweedie)
> x <- 1:100
> mutrue <- exp(-1+x/25)
> summary(mutrue)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
 0.3829  1.0306  2.7737  5.0287  7.4644 20.0855 
> y <- rtweedie(100, mu=mutrue, phi=1, power=1.3)
> summary(y)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
 0.0000  0.8482  2.9249  4.7164  6.1522 24.3897 
> sum(y==0)
[1] 12

Os dados contêm 12 zeros.

Agora instale um Tweedie glm:

> fit <- glm(y ~ x, family=tweedie(var.power=1.3, link.power=0))
> summary(fit)

Call:
glm(formula = y ~ x, family = tweedie(var.power = 1.3, link.power = 0))

Deviance Residuals: 
     Min        1Q    Median        3Q       Max  
-2.71253  -0.94685  -0.07556   0.69089   1.84013  

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) -0.816784   0.168764   -4.84 4.84e-06 ***
x            0.036748   0.002275   16.15  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

(Dispersion parameter for Tweedie family taken to be 0.8578628)

    Null deviance: 363.26  on 99  degrees of freedom
Residual deviance: 103.70  on 98  degrees of freedom
AIC: NA

Number of Fisher Scoring iterations: 4

xϕ

x

> Phi <- 0.85786
> Mu <- fitted(fit)
> Power <- 1.3
> Prob.Zero <- exp(-Mu^(2-Power) / Phi / (2-Power))
> Prob.Zero[1:5]
        1         2         3         4         5 
0.3811336 0.3716732 0.3622103 0.3527512 0.3433024 
> Prob.Zero[96:100]
          96           97           98           99          100 
1.498569e-05 1.121936e-05 8.336499e-06 6.146648e-06 4.496188e-06 

Portanto, a proporção prevista de zeros varia de 38,1% nos menores valores médios até 4,5e-6 nos maiores valores médios.

A fórmula para a probabilidade de um zero exato pode ser encontrada em Dunn & Smyth (2001) Tweedie Family Densities: Methods of Evaluation ou Dunn & Smyth (2005) Series assessment of Tweedie densities model ex dispersential model .

Gordon Smyth
fonte
obrigado, útil! Alguma sugestão de como calcular o intervalo de confiança para essas probabilidades de zero exato? Faria algum sentido? Também estou confuso sobre como definir a "região de probabilidade de 95%" do seu artigo de 2005, provavelmente algo conhecido que não consigo encontrar. Agradecia uma referência
irintch3
8

Esta resposta foi mesclada a partir de outro segmento perguntando sobre o modelo de regressão inflacionado a zero de previsões, mas também se aplica ao modelo Tweedie GLM.

ff

fzeroinfl(y)=πI{0}(y)+(1π)f(y)

Ifzeroinfl(y)

μEu=π0 0+(1-π)g-1(xEuβ)

g-1

YXYXYXE(Y|X)

Exemplo

Tim
fonte
Tim, esta é realmente uma ótima resposta e lamento pelo momento da aproximação e fusão. Se você quiser que algo sobre a questão seja modificado para torná-la mais canônica ou para se encaixar melhor (incorpore uma parte da resposta que você talvez tenha), vá em frente ou teremos o maior prazer em fazer isso por você.
Glen_b -Reinstar Monica