Estou realizando pesquisas para analisar as diferenças na densidade e na riqueza de espécies de peixes ao usar dois métodos diferentes de censo visual subaquático. Meus dados eram originalmente dados de contagem, mas normalmente isso é alterado para densidade de peixes, mas eu ainda decidi usar um Poisson GLM, o que espero estar certo.
model1 <- glm(g_den ~ method + site + depth, poisson)
Minhas três variáveis preditoras são método, site e profundidade que eu ordenei como fatores quando as inseri.
Minhas variáveis de resposta são riqueza de espécies de garoupa, densidade de garoupa e o mesmo para outros grupos de peixes. Estou ciente de que a densidade não é um número inteiro e são dados numéricos, por exemplo, 1.34849. No entanto, agora estou recebendo este erro:
In dpois(y, mu, log = TRUE) : non-integer x = 0.037500
Estive lendo e muitas pessoas sugerem o uso de um deslocamento, isso é a coisa mais recomendável a se fazer?
Respostas:
Existem várias questões aqui:
g_den
).Se as contagens observadas forem de áreas diferentes, é necessário tomar o log dessas áreas como uma nova variável:
Você pode controlar as diferentes áreas para as observações de duas maneiras diferentes:
larea
como um deslocamento. Isso tornará sua resposta realmente uma taxa (mesmo que o que está listado no lado esquerdo do seu modelo seja uma contagem ).larea
como covariável. Isso controlará as diferentes áreas, mas não tornará sua resposta equivalente a uma taxa. Essa é uma abordagem mais flexível que permitirá avaliar se os aumentoslarea
têm um efeito crescente ou decrescente na contagem (ou seja, se a inclinação é menor ou maior que 1).Há mais informações sobre esses problemas nos seguintes tópicos do CV:
fonte
Parece que você dividiu a contagem de peixes pelo volume (ou talvez área) da água pesquisada. Nesse caso, um deslocamento é realmente apropriado, você deve usar o log do que quer que seja dividido. Possivelmente
model1 <- glm(g_den ~ method + site + depth + offset(log(area)), poisson)
(editado a partir da versão incorreta anterior, sem o log)
O motivo da mensagem de erro é que a distribuição de poisson é normalmente com valor inteiro, mas a resposta não era um número inteiro. Isso muda quando um deslocamento está presente; (resposta / deslocamento) deve ser um número inteiro (o que é claro, supondo que as contagens originais fossem números inteiros).
fonte
offset
aplica a transformação por padrão, mas já faz um tempo desde que eu useioffset
.offset()
não aplica a transformação por padrão; apenas força o coeficiente a ser 1. Veja, por exemplo, aqui .Para modelar usando o Poisson, é necessário ter valores inteiros para sua variável de resposta. Você então tem duas opções
Se você usar a abordagem de deslocamento, estará dizendo que, se eu duplicar a área, esperaria obter o dobro da contagem. Se você usa a abordagem preditora, diz que sabe que, se multiplicar a área, multiplica as contagens, mas não necessariamente pelo mesmo fator.
É a sua chamada.
fonte