Zerouri în datele de numărare, cum să faceți față?

Am un set de date cu date de numărare. Fac o regresie Poisson cu glm. Acum vreau să calculez manual devianța nulă. Pentru asta am nevoie de loglike-ul modelului complet. Pentru loglike primesc NaN. Cred că este pentru că unele valori ale variabilei răspuns sunt 0 și log(0) produce NaN. Cu toate acestea, glm calculează devianța nulă. Deci trebuie să existe un truc pentru a face față celor 0 intrări din y. Ar trebui să le înlocuiesc cu valori foarte mici, cum ar fi 0,00001 sau care ar putea fi o soluție posibilă pentru a obține un rezultat dacă acesta nu este NaN

data(discoveries)
disc <- data.frame(count=as.numeric(discoveries),
                   year=seq(0,(length(discoveries)-1),1))

yearSqr <- disc$year^2

hush <- glm(count ~ year + yearSqr , family = "poisson", disc)


# modelFrame
test <- hush$model
# reponse variable 
test$count

# formula for loglike full modell lf = sum(y * log(y) - y - log(factorial(y)))


# result is NaN
lf <- sum(test$count * log(test$count) - test$count - log(factorial(test$count)))

person Dima Ku    schedule 05.03.2018    source sursă
comment
Acest lucru poate fi mai potrivit pentru placa CrossValidated.   -  person Steven    schedule 05.03.2018
comment
caută modele zero-umflate sau obstacole.   -  person Adam Warner    schedule 05.03.2018
comment
Modelele zero inflatetd sunt folosite numai dacă avem mai multe valori zero decât valori diferite de zero și pe setul meu de date am doar 5 intrări zero...   -  person Dima Ku    schedule 05.03.2018


Răspunsuri (1)


Formula ta aplicată este greșită; nu folosește nicio informație despre parametrii estimați. Doriți să utilizați următoarele:

sum(test$count * log(fitted(hush)) - fitted(hush) - log(factorial(test$count)))
# [1] -200.9226
logLik(hush)
# 'log Lik.' -200.9226 (df=3)
person Julius Vainora    schedule 05.03.2018