Como lidar com o aviso "não inteiro" do GLM binomial negativo?

11

Estou tentando modelar as intensidades médias de parasitas que afetam um hospedeiro em R usando um modelo binomial negativo. Eu recebo 50 ou mais avisos que dizem:

In dpois(y, mu, log = TRUE) : non-integer x = 251.529000

Como posso lidar com isso? Meu código fica assim:

mst.nb = glm.nb(Larvae+Nymphs+Adults~B.type+Month+Season, data=MI.df)
Natasha
fonte
11
Por favor, adicione um exemplo reproduzível para as pessoas trabalharem.
gung - Restabelece Monica
5
Um GLiM binomial negativo é um tipo de modelo de contagem. A resposta deve ser contada. Uma contagem , por definição, não pode ser um valor fracionário. Você tem esses valores?
gung - Restabelece Monica
11
Você pode esclarecer o que você quer dizer com "intensidades"? Você está dividindo a contagem de um parasita por, digamos, uma quantidade de área de superfície para um hospedeiro?
gung - Restabelece Monica
11
Tenho dados de contagem, porém tive que calcular as intensidades para explicar os diferentes esforços de amostragem. Entendo que preciso contar dados lá, no entanto, estava me perguntando se havia outra maneira de trabalhar com números não inteiros usando o mesmo modelo. Para intensidades, dividi a contagem de parasitas com o número de hospedeiros infectados.
Natasha
2
@ Natasha, não faça isso. É extremamente provável que a maneira correta de lidar com esse problema seja de acordo com a resposta de Gung, com um deslocamento. Se você quiser ter certeza, edite sua pergunta para explicar um pouco mais de onde vêm as intensidades diferenciais de amostragem. Esses números são diferentes de hosts? Diferentes períodos de tempo amostrados ou número de coletores?
quer

Respostas:

9

O binomial negativo é uma distribuição para os dados de contagem, portanto, você realmente deseja que sua variável de resposta seja contada (ou seja, números inteiros não negativos). Dito isto, é apropriado dar conta de "diferentes esforços de amostragem" (não sei exatamente a que você está se referindo, mas entendo o essencial). No entanto, você não deve tentar fazer isso dividindo suas contagens por outro número. Em vez disso, você precisa usar esse outro número como um deslocamento . Há uma boa discussão no CV sobre o que é um deslocamento: Quando usar um deslocamento em uma regressão de Poisson? Meu palpite é que seu modelo deve ser algo como:

mst.nb = glm.nb(Larvae+Nymphs+Adults~B.type+Month+Season + offset(log(num.hosts)), 
                data=MI.df)
- Reinstate Monica
fonte
Obrigado. Vou tentar isso e volto para contar o que eu fiz.
Natasha
OT: Estou faltando alguma coisa, o que significa ter muitos resultados em uma regressão?
Bakaburg
@ Bakaburg, não sei dizer a que você está se referindo.
gung - Restabelece Monica
A parte "Larvas + Ninfas + Adultos ~" do código.
Bakaburg
11
@Bababurg, é sobre como o R funciona. A adição é elementar. A adição de 3 vetores fornece um único vetor em que cada elemento é a soma dos 3 elementos correspondentes. Para ter várias variáveis ​​de resposta no LHS de uma fórmula R, você precisa usar cbind().
gung - Restabelece Monica
4

É um aviso, não um erro fatal. glm.nb () espera contar como sua variável de resultado, que são números inteiros. Seus dados não são números inteiros: 251.529.

R está dizendo "Hmmm ... você pode verificar isso e garantir que está tudo bem, porque pode não parecer certo". Se minha memória estiver correta, o SPSS não emitirá esse aviso.

Se você tiver certeza de que está usando o modelo certo, mesmo que não tenha números inteiros, ignore-o e continue.

Jeremy Miles
fonte
11
Eu sei que é um aviso, eu só estava me perguntando se existe uma maneira de contornar isso. Eu tenho números inteiros, então estava tentando ver se existe uma maneira de trabalhar com números inteiros, mas usando o mesmo modelo com um código diferente.
Natasha
11
Como suprimir avisos explicados aqui: stackoverflow.com/questions/16194212/…
kjetil b halvorsen
-2

Sou um parasitologista ecológico. A maneira como você deve lidar com isso é vinculando os hosts que foram parasitados e os que não foram e, em seguida, usando uma distribuição binomial. Veja o código abaixo.

Eu também nunca usei uma glm com mais de uma variável y .. então, digamos que você queira observar larvas parasitadas: você teria # larvas saudáveis ​​e # parasitadas.

Vamos dizer: Lh e Lp

Então por exemplo

parasitizedL = cbind (Lp, Lh) hist (parasitized) #Eu acho que você pode usar uma distribuição binomial regular com glm .. e pode não precisar do modelo negativo.binominal PLarvae1 = glm (parasitizedL ~ B.type + Month + Season, família = binomial, dados = MI.df)

faça uma redução gradual do modelo para ver quais dos seus fatores afetam significativamente o parasitismo ... veja o link abaixo

http://bbolker.github.io/mixedmodels-misc/glmmFAQ.html

no entanto, parece que você precisa ter efeitos aleatórios para explicar a amostragem repetitiva. provavelmente o seu efeito aleatório será (1 | Temporada / mês) ... mas difícil de dizer sem conhecer seus dados

JULIE HOPPER
fonte