You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于标记重捕数据在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:06:54