Un modello per dati non negativi con aggregazione agli zeri (Tweedie GLM, GLM a zero inflazione, ecc.) Può prevedere zeri esatti?


15

Una distribuzione Tweedie può modellare dati distorti con una massa in punti pari a zero quando il parametro (esponente nella relazione media-varianza) è compreso tra 1 e 2.p

Allo stesso modo un modello a zero inflazione (sia continuo che discreto) può avere un gran numero di zeri.

Ho difficoltà a capire perché quando eseguo la previsione o calcolo i valori adattati con questo tipo di modelli, tutti i valori previsti sono diversi da zero.

Questi modelli possono davvero prevedere zeri esatti?

Per esempio

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

predora non contiene zeri. Ho pensato che l'utilità di modelli come la distribuzione di Tweedie venisse dalla sua capacità di prevedere gli zeri esatti e la parte continua.

So che nel mio esempio la variabile xnon è molto predittiva.


Considerare anche modelli di risposta ordinali semiparametrici, che consentono distribuzioni arbitrarie per . Y
Frank Harrell,

Risposte:


16

Si noti che il valore previsto in un GLM è una media.

Per qualsiasi distribuzione su valori non negativi, per prevedere una media di 0, la sua distribuzione dovrebbe essere interamente un picco a 0.

Tuttavia, con un log-link, non si adatterà mai una media esattamente pari a zero (poiché ciò richiederebbe per andare a - ).η

Quindi il tuo problema non è un problema con Tweedie, ma molto più generale; avresti esattamente lo stesso problema con il Poisson (a zero inflazionato o ordinario Poisson GLM) per esempio.

Ho pensato che l'utilità della distribuzione di Tweedie venisse dalla sua capacità di prevedere gli zeri esatti e la parte continua.

Poiché la previsione di zeri esatti non si verificherà per alcuna distribuzione su valori non negativi con un log-link, la tua opinione su questo deve essere sbagliata.

Una delle sue attrazioni è che può modellare zeri esatti nei dati, non che le previsioni medie saranno 0. [Naturalmente una distribuzione adattata con media diversa da zero può comunque avere una probabilità di essere esattamente zero, anche se la media deve superare 0 Ad esempio, un intervallo di previsione adatto potrebbe includere 0, ad esempio.]

Non importa affatto che la distribuzione adattata includa una proporzione sostanziale di zeri - ciò non significa che lo zero adattato significhi zero.

Nota che se cambi la tua funzione di collegamento per dire un collegamento di identità, non risolve davvero il tuo problema - la media di una variabile casuale non negativa che non è zero è positiva.


1
Grazie per la tua spiegazione. Ho confrontato un tweedie glm con un gamma glm e i beta sono quasi identici, indipendentemente da quanti zeri contengono i dati (cambio gli zeri in un valore molto piccolo per il gamma glm). E qual è il modo proposto per prevedere contemporaneamente zeri e parte continua.
spore234,

2
@ spore234 Potresti creare il tuo modello di gamma-hurdle, che avrebbe un ostacolo binomiale per prevedere 0/1 e un modello gamma adattato ai dati diversi da zero. Ecco un link a un post sul blog che discute di questo modello e come adattarlo a mano in R. A parte questo, se qualcosa è continuo, come fai a sapere che è esattamente zero? Il vostro apparecchio di misura è in grado di eseguire misurazioni così dettagliate?
Ripristina Monica - G. Simpson,

2
@spore, dovrai essere più esplicito su cosa intendi veramente per "predire gli zeri"; la mia risposta stabilisce già perché nessun altro modello distributivo utilizzato per sostituire il Tweedie fornirà una previsione media pari a zero (NB i modelli con gonfiaggio zero e ostacolo hanno lo stesso problema anche con le loro previsioni medie). Data una previsione media è ciò che intendevi per "prevedere" quando hai usato un GLM, cosa intendi con questo ora? Se lo cambi per significare qualcosa in cui un modello con gonfia 0 o ostacolo ha un senso, un Tweedie potrebbe soddisfare le stesse condizioni.
Glen_b

1
Dipende davvero da cosa intendi per "prevedere" (dal momento che non intendi "prevedere la media" devi dire cosa cerchi, vuoi prevedere la probabilità di uno zero? previsione mediana? Qualcos'altro?) e quali tipi di cose consideri "migliori", in modo da poter fare un paragone.
Glen_b -Restate Monica,

1
@ spore234 Il problema, ancora una volta, è che usi la parola "predire" ma non riesci a definire cosa intendi per "predire" (continuo a chiedere!). Sembra che tu abbia escluso entrambe le maggior parte delle interpretazioni evidenti del termine in questa situazione, quindi è necessario dire quello che fai media. Quando dici "prevedi quanto sarà il costo di questa persona" cosa intendi realmente? Si noti che non è possibile ottenere il costo esatto per ogni persona ... quindi quali proprietà dovrebbe avere questa "previsione"?
Glen_b

10

Prevedere la proporzione di zeri

Sono l'autore del pacchetto statmod e l'autore congiunto del pacchetto tweedie. Tutto nel tuo esempio funziona correttamente. Il codice tiene correttamente conto degli zeri che potrebbero essere nei dati.

Come hanno spiegato Glen_b e Tim, il valore medio previsto non sarà mai esattamente zero, a meno che la probabilità di uno zero sia del 100%. Ciò che potrebbe essere interessante è la proporzione prevista di zeri, che può essere facilmente estratta dall'adattamento del modello, come mostrerò di seguito.

Ecco un esempio di lavoro più sensato. Prima simula alcuni dati:

> 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

I dati contengono 12 zeri.

Ora si adatta a un glm di Tweedie:

> 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 

Quindi la proporzione prevista di zeri varia dal 38,1% ai valori medi più piccoli fino a 4,5e-6 ai valori medi più grandi.

La formula per la probabilità di uno zero esatto è disponibile nella Dunn & Smyth (2001) Densità della famiglia Tweedie: metodi di valutazione o Dunn & Smyth (2005) Valutazione in serie delle densità del modello di dispersione esponenziale di Tweedie .


grazie utile! Qualche suggerimento su come calcolare l'intervallo di confidenza per queste probabilità di zero esatto? Avrebbe senso a tutti? Sono anche perplesso su come definire la "regione di probabilità del 95%" dal tuo documento del 2005, probabilmente qualcosa di noto che non riesco a trovare. Gradirei molto un riferimento
irintch3

8

Questa risposta è stata unita da un altro thread che chiedeva previsioni sul modello a regressione zero-inflated, ma si applica anche al modello Tweedie GLM.

ff

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

Ifzeroinfl(y)

μi=π0+(1π)g1(xiβ)

g1

YXYXYXE(Y|X)

Example


Tim, questa è davvero un'ottima risposta e mi dispiace per i tempi di chiusura. Se desideri qualcosa sulla domanda ulteriormente modificata per renderla più canonica o per adattarsi meglio (incorpora alcune di quelle a cui hai risposto forse), vai avanti, o sarò felice di farlo per te.
Glen_b -Restate Monica,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.