非整数计数的泊松GLM-R
我希望能从Poisson家族得到一些关于GLM的建议 我有一个数据集,其中包含每个人在一段时间内接受的比特数。由于观察到的个体在不同时期进食,当我计算每个个体的叮咬率为每分钟叮咬次数时,我得出的结果是非整数。现在,根据我到目前为止读到的内容,我应该仍然能够对泊松族进行GLM。然而,我遇到了错误,我认为这可能是因为R不喜欢我使用非整数。有人有什么建议吗非整数计数的泊松GLM-R,r,glm,poisson,R,Glm,Poisson,我希望能从Poisson家族得到一些关于GLM的建议 我有一个数据集,其中包含每个人在一段时间内接受的比特数。由于观察到的个体在不同时期进食,当我计算每个个体的叮咬率为每分钟叮咬次数时,我得出的结果是非整数。现在,根据我到目前为止读到的内容,我应该仍然能够对泊松族进行GLM。然而,我遇到了错误,我认为这可能是因为R不喜欢我使用非整数。有人有什么建议吗 Example <- structure(list(Species = c("Fish1", "Fish2", "Fish3", "Fish
Example <- structure(list(Species = c("Fish1", "Fish2", "Fish3", "Fish4",
"Fish5", "Fish6", "Fish7", "Fish1", "Fish2", "Fish3", "Fish4",
"Fish5", "Fish6", "Fish7", "Fish1", "Fish2", "Fish3", "Fish4",
"Fish5", "Fish6", "Fish7"), Site = c(1, 1, 1, 1, 1, 1, 1, 2,
2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3), Bite_Rate = c(3.5, 7.5,
0, 0, 2.45, 5.5, 6.5, 6.5, 7.5, 8.03, 32.1, 15.6, 18.2, 19.1,
20.5, 20.5, 3.5, 5.7, 6.7, 23.2, 0)), class = c("spec_tbl_df",
"tbl_df", "tbl", "data.frame"), row.names = c(NA, -21L), spec = structure(list(
cols = list(Species = structure(list(), class = c("collector_character",
"collector")), Site = structure(list(), class = c("collector_double",
"collector")), Bite_Rate = structure(list(), class = c("collector_double",
"collector"))), default = structure(list(), class = c("collector_guess",
"collector")), skip = 1), class = "col_spec"))
str(Example) # check structure
Example$Species<-as.factor(Example$Species) # set species as a factor
str(Example) # check structure
glm<-glm(Species~Bite_Rate, data=Example, family = poisson) # create the GLM
Example您需要获得归一化的秒数(分母)和实际比特数(计数)
接下来包括分钟作为偏移量,注意,您的响应变量位于~:
fit = glm(Bites ~ Species,offset=log(Observed_Seconds),
family=poisson,data=Example)
您可以查看摘要:
summary(fit)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
SpeciesFish1 -2.8679 0.4472 -6.413 1.42e-10 ***
SpeciesFish2 -1.1436 0.1857 -6.158 7.35e-10 ***
SpeciesFish3 -0.5738 0.1581 -3.629 0.000284 ***
SpeciesFish4 -0.7732 0.1543 -5.011 5.42e-07 ***
SpeciesFish5 -1.3269 0.1961 -6.766 1.33e-11 ***
SpeciesFish6 -1.7198 0.2887 -5.958 2.56e-09 ***
SpeciesFish7 -1.5244 0.1925 -7.921 2.35e-15 ***
似乎非常重要,但要检查的一件好事是数据是否过度分散,还包括其他因素(例如站点):
如果遵循泊松分布,分散度将在1左右,但在这种情况下,分散度过大。你好,卡罗琳娜。您需要使用offet,可以将用于计算速率的数字添加到data.frame中,即分钟和位(整数)。并且您的glm指定错误。好的,我在下面写一个例子,如果可以的话,更新你的数据集,这有助于你快速解决你的问题。我在看回归。这是你的真实数据吗?下面的偏移量是进行回归的方法。方差远远超过泊松分布。根据您想从模型中了解的内容,您可能需要考虑这种额外的差异。谢谢!我刚刚根据你的第一条评论编辑了我的数据。谢谢,我现在就来试试!谢谢它起作用了,但是。。。结果我的模型真的太分散了…。剩余偏差:在119个自由度上为663.22。这种方法是否仍然适用于准泊松模型?是的。我正要这么说。你需要一个准保尔森。对于上面的代码,只需使用family=quasipoisson,并将站点作为一个因素包含在内。啊,谢谢!如果我把站点作为一个因素来添加,这会是一个交互术语吗?或者只是咬~Species~站点?是的,你可以使用glht,这是一个很好的包。这仍然是一个glm,因此适用。你的网站是一个固定效果,没有随机效果(你需要使用另一个包,如lme4或glmmTMB),所以这是100%固定效果
fit = glm(Bites ~ Species,offset=log(Observed_Seconds),
family=poisson,data=Example)
summary(fit)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
SpeciesFish1 -2.8679 0.4472 -6.413 1.42e-10 ***
SpeciesFish2 -1.1436 0.1857 -6.158 7.35e-10 ***
SpeciesFish3 -0.5738 0.1581 -3.629 0.000284 ***
SpeciesFish4 -0.7732 0.1543 -5.011 5.42e-07 ***
SpeciesFish5 -1.3269 0.1961 -6.766 1.33e-11 ***
SpeciesFish6 -1.7198 0.2887 -5.958 2.56e-09 ***
SpeciesFish7 -1.5244 0.1925 -7.921 2.35e-15 ***
fit_quasi = glm(Bites ~ Species + factor(Site),offset=log(Observed_Seconds),
family=quasipoisson,data=Example)
summary(fit_quasi)
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -2.9754 1.0713 -2.777 0.0167 *
SpeciesFish2 1.8487 1.1434 1.617 0.1319
SpeciesFish3 2.2731 1.1152 2.038 0.0642 .
SpeciesFish4 2.1246 1.1205 1.896 0.0823 .
SpeciesFish5 1.3533 1.1604 1.166 0.2662
SpeciesFish6 1.2754 1.2658 1.008 0.3336
SpeciesFish7 0.8922 1.1719 0.761 0.4612
factor(Site)2 -0.2325 0.5132 -0.453 0.6587
factor(Site)3 0.6118 0.4677 1.308 0.2154
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for quasipoisson family taken to be 5.521045)