2016-11-21 10 views
1

У меня возникают проблемы с работой с отрицательными биномиальными моделями. В принципе, у меня есть набор данных с подсчетом животных. Однако усилия разные, поэтому я могу рассчитать скорость животных в день. Я делаю это с довольно большим набором данных (> 100000 наблюдений). Я очень удивлен, что не мог найти другие темы, которые охватывали мой вопрос, если вы знаете одно: было бы полезно!Использование нецелых чисел против целых чисел: предупреждения с нецелыми, но модель не будет работать с целыми числами

При попытке подгонки модели к моим данным у меня возникают некоторые проблемы. Либо я бегу отрицательное биномиальное модель с темпами

> m1<-glm.nb(Rates ~ Par1+Par2+...+Par7+Par8,data=data) 

, а затем я получаю следующие предупредительные сообщения:

>Warning messages: 
1: In dpois(y, mu, log = TRUE) : non-integer x = 25.913718 
2: In dpois(y, mu, log = TRUE) : non-integer x = 5.457385 
3: In dpois(y, mu, log = TRUE) : non-integer x = 2.195133 
4: In dpois(y, mu, log = TRUE) : non-integer x = 2.721088 
5: In dpois(y, mu, log = TRUE) : non-integer x = 6.971678 
6: In dpois(y, mu, log = TRUE) : non-integer x = 21.863799 
7: In dpois(y, mu, log = TRUE) : non-integer x = 5.300733 
8: In dpois(y, mu, log = TRUE) : non-integer x = 7.157865 
9: In dpois(y, mu, log = TRUE) : non-integer x = 14.117588 
10: In dpois(y, mu, log = TRUE) : non-integer x = 6.505993, etc. 

Или я бегу модель со смещением

> m2<-glm.nb(Count ~ Par1+Par2+...+Par7+Par8+offset(Effort),data=data) 

Это однако дает следующую ошибку:

> Error: no valid set of coefficients has been found: please supply starting values 
In addition: Warning messages: 
1: glm.fit: algorithm did not converge 
2: glm.fit: fitted rates numerically 0 occurred 

Я уже пытался представить коэффициенты первой модели как стартовые коэффициенты для второго, но это не сработает. Также использование пакета pscl не работает или увеличивает количество итераций. Это подмножество моих данных (один вид) с очень небольшим количеством нулей.

Любые предложения? Я чувствую, что на самом деле второй способ моделирования этого - правильный способ сделать это, но я не знаю, как заставить эту модель работать. Есть идеи? Было бы очень признательно.

ответ

1

Вы почти наверняка хотите одно из следующего, принимая Rates = Count/Effort. Либо установите скорость, и использовать усилие в качестве переменного весового:

glm.nb(Rates ~ *, weights=Effort, data=data) 

Или, установите счетчики, а также использовать журнал (усилия) в качестве смещения:

glm.nb(Count ~ * + offset(log(Effort)), data=data) 

Смотрите также my answer on CrossValidated о смещениях в пуассоновских/отрицательных биномиальных моделях.

+0

Так что для моего собственного понимания: поскольку вы смотрите на журнал переменной ответа, вы также должны моделировать журнал смещения? Второй способ работает отлично, никаких предупреждений и проблем с моделью. Спасибо! – Tommele

+0

Правильно. Эти две формулы эквивалентны, поэтому первый метод также должен работать. –

+0

Хорошо, отлично. По какой-то причине первый метод дает мне отличный результат с чрезвычайно низкими значениями p. Может быть, это связано с тем, что это отрицательное биномиальное распределение, и glm.nb нужно сначала найти theta? – Tommele