使用非整数与整数:使用非整数的警告,但模型不会使用整数运行

时间:2016-11-21 15:09:54

标签: r glm

我在运行负二项模型时遇到一些麻烦。基本上,我有一个动物数量的数据集。然而,努力是不同的,因此我可以计算每天动物的比率。我正在使用相当大的数据集(> 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 个答案:

答案 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关于泊松/负二项模型中的偏移。