我在运行负二项模型时遇到一些麻烦。基本上,我有一个动物数量的数据集。然而,努力是不同的,因此我可以计算每天动物的比率。我正在使用相当大的数据集(> 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不起作用,或增加迭代量。这是我的数据的一个子集(一个物种),只有很少的零。
有什么建议吗?我觉得实际上建模的第二种方法是正确的做法,但我不知道如何让这个模型运行。有任何想法吗?非常感谢。
答案 0 :(得分:1)
假设Rates = Count/Effort
,您几乎肯定会想要以下其中一项。要么适合速率,要使用努力作为加权变量:
glm.nb(Rates ~ *, weights=Effort, data=data)
或,适合计数,并使用log(effort)作为偏移量:
glm.nb(Count ~ * + offset(log(Effort)), data=data)
另请参阅my answer on CrossValidated关于泊松/负二项模型中的偏移。