Я провожу исследование, чтобы посмотреть на различия в плотности и богатстве видов рыб при использовании двух разных методов подводной визуальной переписи. Мои данные изначально были данными подсчета, но затем они обычно меняются на плотность рыбы, но я все же решил использовать Poisson GLM, что, я надеюсь, правильно.
model1 <- glm(g_den ~ method + site + depth, poisson)
Моими 3 переменными предиктора являются метод, место и глубина, которые я указывал в качестве факторов при вводе их.
Мои переменные ответа - богатство видов окуня, плотность окуня и то же самое для других групп рыб. Я знаю, что плотность не является целым числом, и это числовые данные, например, 1,34849. Однако сейчас я получаю эту ошибку:
In dpois(y, mu, log = TRUE) : non-integer x = 0.037500
Я читал, и многие люди предлагают использовать смещение, это самая рекомендуемая вещь, чтобы сделать?
Ответы:
Здесь есть несколько вопросов:
g_den
).Если наблюдаемые значения относятся к разным областям, необходимо взять журнал этих областей в качестве новой переменной:
Вы можете контролировать различные области для наблюдений двумя различными способами:
larea
в качестве смещения. Это сделает ваш ответ на самом деле нормой (даже если то, что указано в левой части вашей модели, является счетчиком ).larea
как ковариату. Это будет контролировать различные области, но не сделает ваш ответ эквивалентным скорости. Это более гибкий подход, который позволит вам оценить,larea
влияет ли увеличение на увеличение или уменьшение влияния на счет (т. Е. Наклона меньше или больше 1).Более подробная информация об этих проблемах содержится в следующих темах резюме:
источник
Похоже, вы разделили количество рыб на объем (или, возможно, площадь) обследованной воды. В этом случае смещение действительно подходит, вы должны использовать журнал того, на что вы делились. возможно
model1 <- glm(g_den ~ method + site + depth + offset(log(area)), poisson)
(отредактировано из более ранней неверной версии, отсутствует журнал)
Причина сообщения об ошибке заключается в том, что распределение Пуассона обычно целочисленное, но ответ не был целым числом. Это изменяется, как только смещение присутствует; (response / offset) должно быть целым числом (что, конечно, при условии, что исходные значения были целыми числами).
источник
offset
применяет преобразование по умолчанию, но прошло уже много времени с тех пор, как я использовалoffset
.offset()
не применяется; это просто заставляет коэффициент быть 1. См., например, здесь .Если вы собираетесь моделировать с использованием Пуассона, вы должны иметь целочисленные значения для вашей переменной ответа. Тогда у вас есть два варианта
Если вы используете подход со смещением, вы говорите, что если я удвою площадь, то получу удвоенный счет. Если вы используете подход предиктора, вы говорите, что знаете, если вы умножаете площадь, которую вы умножаете, но не обязательно на тот же коэффициент.
Это твой звонок.
источник