基于标记重捕数据在R中构建蝙蝠环志累积发现曲线以评估访问次数
蝙蝠环志累积发现曲线分析:单次vs两次访问评估
嘿,看起来你已经在蝙蝠环志的研究上迈出了不错的步伐!针对你想通过对比两次洞穴访问的累积重捕/发现率,判断是否需要维持每年两次访问的需求,我整理了一套具体的R实现方案,包含数据处理、可视化和统计检验的完整流程:
1. 数据预处理
首先确保你的数据集包含核心字段:蝙蝠环志ID、年份、访问次数(1/2)、记录状态(新发现/重捕)。这里先模拟一份示例数据,你可以替换成自己的真实数据:
# 示例数据集 bat_banding <- data.frame( bat_id = c("BT001", "BT002", "BT003", "BT001", "BT004", "BT002", "BT005"), year = c(2019, 2019, 2019, 2020, 2020, 2020, 2020), visit_num = c(1, 1, 2, 1, 2, 2, 2), record_type = c("new", "new", "recapture", "recapture", "new", "recapture", "new") )
2. 计算累积发现/重捕率
我们需要按年份和访问顺序,计算每次访问后的累积新发现蝙蝠占总记录的比例,用dplyr可以高效完成分组统计:
library(dplyr) library(tidyr) # 分组计算累积指标 cumulative_stats <- bat_banding %>% # 按年份和访问次数统计单次访问的新发现数与总记录数 group_by(year, visit_num) %>% summarise( new_individuals = sum(record_type == "new"), total_records = n() ) %>% # 按年份排序,确保访问顺序正确 arrange(year, visit_num) %>% # 按年份计算累积值 group_by(year) %>% mutate( cum_new = cumsum(new_individuals), cum_total = cumsum(total_records), cum_discovery_rate = cum_new / cum_total # 累积新发现率 ) %>% ungroup()
3. 可视化累积曲线
用ggplot2绘制每年两次访问的累积发现率曲线,直观对比两者的差异:
library(ggplot2) ggplot(cumulative_stats, aes(x = visit_num, y = cum_discovery_rate, color = factor(year), group = year)) + geom_line(linewidth = 1.2, alpha = 0.8) + geom_point(size = 3, shape = 19) + # 限定x轴为1和2,聚焦两次访问 scale_x_continuous(breaks = c(1, 2), labels = c("首次访问", "二次访问")) + labs( title = "蝙蝠累积新发现率对比(首次vs二次洞穴访问)", x = "访问次数", y = "累积新发现率", color = "年份" ) + theme_minimal() + theme(plot.title = element_text(hjust = 0.5, size = 14, face = "bold"))
如果大部分年份中,二次访问的累积率上升幅度极小,说明单次访问已经能覆盖绝大多数蝙蝠种群。
4. 统计检验差异显著性
为了量化两次访问的差异,我们可以用配对t检验(因为每年的两次访问属于配对样本):
# 整理成对数据:每年首次与二次访问的累积发现率 pairwise_data <- cumulative_stats %>% select(year, visit_num, cum_discovery_rate) %>% pivot_wider(names_from = visit_num, values_from = cum_discovery_rate) %>% rename(visit_1 = `1`, visit_2 = `2`) # 执行配对t检验 t_test_result <- t.test(pairwise_data$visit_2, pairwise_data$visit_1, paired = TRUE) print(t_test_result)
- 如果p值>0.05:说明两次访问的累积发现率无显著差异,支持仅保留单次访问的方案;
- 如果p值<0.05:说明二次访问能带来显著的新发现,需要维持每年两次的访问频率。
额外小贴士
- 若研究涉及多个洞穴,可以按洞穴分组分析,评估不同栖息地的差异;
- 针对不同蝙蝠物种分别绘制累积曲线,避免种群间的差异干扰结论;
- 长期评估时,可以加入年份作为协变量,用线性模型分析趋势:
trend_model <- lm(cum_discovery_rate ~ visit_num + year, data = cumulative_stats) summary(trend_model)
内容的提问来源于stack exchange,提问作者DFinch
相关产品推荐
相关产品推荐

