鸟类回访次数与停留时间的R统计分析方法咨询
针对鸟类性别对回访次数和停留时间影响的统计分析方案
一、回访次数(visitIdx:计数型数据)
模型选择与代码
如果数据中同一鸟类有多次回访记录(存在重复测量),必须加入鸟类编号作为随机截距控制个体非独立性,此时用广义线性混合模型(GLMM)合理:
- Poisson GLMM(lme4包):
library(lme4) # bird_id为数据集里的鸟类编号列名 mod_pois <- glmer(visitIdx ~ sex + (1|bird_id), data = Gbirds_sex, family = poisson) summary(mod_pois)
- 检查过度离散:
计算残差离散度,若值显著大于1,说明Poisson模型适配性差,需改用负二项GLMM:
# 皮尔逊残差平方和 / 残差自由度 dispersion <- sum(residuals(mod_pois, type = "pearson")^2) / df.residual(mod_pois) dispersion
- 负二项GLMM(glmmTMB包):
library(glmmTMB) mod_nb <- glmmTMB(visitIdx ~ sex + (1|bird_id), data = Gbirds_sex, family = nbinom2) summary(mod_nb)
如果每只鸟仅对应一个总回访次数(无重复测量),无需随机截距,直接用广义线性模型(GLM):
# Poisson GLM mod_pois_glm <- glm(visitIdx ~ sex, data = Gbirds_sex, family = poisson) # 负二项GLM(过度离散时用,依赖MASS包) library(MASS) mod_nb_glm <- glm.nb(visitIdx ~ sex, data = Gbirds_sex)
二、停留时间(timeInside:连续但过度离散)
高斯模型离散度达2.8,说明数据不符合正态假设,推荐以下两种方案:
方案1:负二项模型(适合计数型停留时间,如整数秒记录)
若停留时间是整数计数(如秒数),用glmmTMB的nbinom2模型,根据是否有重复测量决定是否加随机截距:
# 带随机截距(存在重复测量) mod_time_nb <- glmmTMB(timeInside ~ sex + (1|bird_id), data = Gbirds_sex, family = nbinom2) summary(mod_time_nb) # 无重复测量(依赖MASS包) library(MASS) mod_time_nb_glm <- glm.nb(timeInside ~ sex, data = Gbirds_sex)
方案2:Gamma模型(适合连续型正数右偏数据)
若停留时间是连续型正数(如带小数的精确时间),Gamma分布模型更适配:
# 带随机截距 mod_time_gamma <- glmmTMB(timeInside ~ sex + (1|bird_id), data = Gbirds_sex, family = Gamma(link = "log")) summary(mod_time_gamma) # 无重复测量 mod_time_gamma_glm <- glm(timeInside ~ sex, data = Gbirds_sex, family = Gamma(link = "log"))
模型拟合诊断
无论用哪种模型,都要通过残差图检查拟合效果:
plot(residuals(mod_time_nb, type = "pearson") ~ fitted(mod_time_nb)) abline(h = 0, lty = 2)
关于随机截距的判断
- 必须加:同一鸟类有多次观测(回访/停留时间的重复记录),随机截距可控制个体间的非独立变异。
- 无需加:每只鸟仅对应一个观测值(如总回访次数、平均停留时间),用固定效应模型即可。
内容的提问来源于stack exchange,提问作者Zach Ng
相关产品推荐
相关产品推荐

