CJS模型中仅复杂Phi下最后时段p不稳定的原因及技术问询
CJS模型拟合(RMark包)中最后时段检测概率参数不稳定的问题
模型拟合背景与工作流程
- 采用R语言
RMark包拟合Cormack–Jolly–Seber (CJS)模型,流程如下:- 固定存活概率恒定(
Phi ~ 1),对比检测概率(p)的恒定、时间依赖、年龄依赖模型,选定p的结构; - 基于AIC准则,确定
p采用时间+年龄依赖的结构; - 用选定的
p结构,拟合存活概率更复杂的模型(Phi ~ time + age)。
- 固定存活概率恒定(
数据与参数设置
数据概况
- 总个体数约3391(2821只幼鸟、570只成鸟);
- 15个采样时段(2003–2022年,剔除4个样本量极低的年份);
- 2019年前无法检测幼鸟,通过代码固定对应
p为0:ddl_all$p$fix[ddl_all$p$edad_A5 %in% c("pich","j1","j2") & ddl_all$p$time < 2019] <- 0
年龄结构设置(Phi与p采用不同分类)
- 检测概率p的年龄分类(edad_A1):幼鸟/3年龄成鸟/成鸟(无幼雏类,因幼雏无法被重捕)
- 存活概率Phi的年龄分类(edad_A3):幼雏/幼鸟/成鸟(用于估算第一年存活率)
年龄分类代码示例:
# Phi age classes ddl_all$Phi$edad_A3 <- cut(ddl_all$Phi$edad_t, breaks = c(-1, 0, 2, Inf), labels = c("chick", "juvenile", "adult")) # p age classes ddl_all$p$edad_A1 <- cut(ddl_all$p$edad_t, breaks = c(-1, 2, 3, Inf), labels = c("Juvenile", "Ad1", "adult")) # 拟合全模型 modelos_phi$phi13 <- mark(processed_all, ddl_all, model.parameters = list(Phi = list(formula = ~ time + edad_A3), p = list(formula = ~ time + edad_A1)), adjust = TRUE, chat = chat, delete = FALSE)
问题现象
全模型(Phi ~ time + edad_A3,p ~ time + edad_A1)中,2022年(最后一个时段)的p估计值标准误差极大(如beta≈18,SE>1000);但相同p结构搭配Phi ~ 1时,所有参数(含2022年的p)估计均稳定。
已知2021-2022年重捕率与采样投入均较高,p(2022)理论上应有充足的2021年标记个体的重捕信息支撑。
技术疑问与解答
1. 简单模型中p稳定,但复杂CJS模型中最后时段p不稳定,是否符合预期?
符合预期。当存活概率(Phi)的结构变得复杂时,参数数量大幅增加,模型自由度被大量占用。最后时段的p本身在CJS模型中属于弱可识别参数——仅能通过最后一次重捕事件的信息估计,复杂的Phi结构会分散模型对p(最后时段)的信息分配,导致该参数估计精度骤降。而简单模型(Phi~1)参数少,能集中利用重捕信息稳定估计所有时段的p值。
2. CJS模型中导致最后时段p缺乏可识别性的主要因素有哪些?
- 参数冗余与信息竞争:Phi引入过多复杂结构(如时间+年龄交互)后,参数总数剧增,有限的重捕信息被分散到更多参数上,最后时段的p能获取的有效信息被稀释;
- 最后时段的信息局限性:CJS模型中,最后时段的p只能由前一个时段标记、最后时段被重捕的个体提供信息,没有后续存活数据辅助约束该参数;
- 模型结构的联动性:Phi与p在模型中联动估计,复杂Phi的估计误差会传递到p的估计中,尤其是最后时段这种本身信息基础较弱的参数;
- 样本结构偏差:如果最后时段重捕个体的年龄分布与其他时段差异大,且p采用年龄分层,可能导致该时段部分年龄组的p信息不足,进而拉低整体p(2022)的估计稳定性。
3. 承认最后时段的不确定性后,是否仍可解释整体模式?
可以。只要除最后时段外的其他参数估计稳定、符合生物学预期,就可以基于这些可靠参数解释种群存活与检测的整体模式。对于最后时段的p,可采取以下处理方式:
- 在结果报告中明确标注该参数的高不确定性,避免过度解读;
- 尝试对最后时段的p施加合理约束(如固定为前1-2年的平均p值),观察模型整体结果的稳健性;
- 重点关注存活概率Phi的估计结果,因为Phi的参数在非最后时段的信息支撑更充足,受最后时段p的影响较小。
4. 为Phi和p设置不同年龄结构是否会引入偏差或可识别性问题?
只要年龄分类的定义符合生物学实际,且数据能支撑对应分类的参数估计,就不会引入偏差或可识别性问题。你的设置是合理的:
- Phi包含幼雏类是因为需要估算幼雏到幼鸟的存活率,这是种群动态的关键参数;
- p不包含幼雏类是因为幼雏无法被重捕,没有对应的重捕数据支撑该类别的p估计。
唯一需要注意的是,要确保年龄分类的转换逻辑一致(即同一个体在不同时段的年龄分类对应正确),避免因分类错误导致的模型偏差。
内容的提问来源于stack exchange,提问作者Gabriela Scioscia
相关产品推荐
相关产品推荐

