Sto cercando di adattare modelli lineari generalizzati ad alcune serie di dati di conteggio che potrebbero essere o meno sovradispersi. Le due distribuzioni canoniche che si applicano qui sono Poisson e Negative Binomial (Negbin), con EV e varianza
che può essere montato in R usando glm(..,family=poisson)
e glm.nb(...)
, rispettivamente. C'è anche la quasipoisson
famiglia, che secondo me è un Poisson adattato con lo stesso EV e la stessa varianza
,
cioè cadere da qualche parte tra Poisson e Negbin. Il problema principale con la famiglia dei quasipoisson è che non esiste una probabilità corrispondente per esso, e quindi molti test statistici estremamente utili e misure di adattamento (AIC, LR eccetera) non sono disponibili.
Se si confrontano le varianze QP e Negbin, è possibile notare che è possibile equipararle inserendo . Continuando su questa logica, potresti provare ad esprimere la distribuzione quasipoisson come un caso speciale del Negbin:
,
cioè un Negbin con linearmente dipendente da \ mu . Ho provato a verificare questa idea generando una sequenza casuale di numeri secondo la formula sopra e adattandola con :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
Entrambi gli adattamenti riproducono i parametri e il quasipoisson fornisce una stima "ragionevole" per . Ora possiamo anche definire un valore AIC per il 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
(Ho dovuto copiare manualmente il valore montato , in quanto non riuscivo a trovarlo nell'oggetto)summary(glmQP)
glmQP
Dal momento che , ciò indicherebbe che il quasipoisson è, ovviamente, la soluzione migliore; quindi almeno fa quello che dovrebbe fare, e quindi potrebbe essere una definizione ragionevole per l'AIC (e, per estensione, probabilità) di un quasipoisson. Le grandi domande che mi rimangono sono quindi
- Questa idea ha senso? La mia verifica si basa su un ragionamento circolare?
- La domanda principale per chiunque 'inventa' qualcosa che sembra mancare da un argomento ben definito: se questa idea ha senso, perché non è già stata implementata
glm
?
Modifica: figura aggiunta