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

不同树种组森林损失年复合增长率(CARG)计算结果偏高咨询

问题原因与解决方案

核心错误原因

  • 业务逻辑与计算公式不匹配:你使用的复合年增长率(CAGR)计算的是累计损失占比这个指标本身的增长速度,比如松树的累计损失占比18年从1%涨到19%,涨幅达19倍,算出17.8%的增速是符合CAGR逻辑的,但这个结果完全不是你需要的「森林年死亡率」。
  • 指标含义理解偏差:累计损失占比是「已损失森林/初始总森林」,而年死亡率是「当年损失森林/上年剩余森林」,二者的计算逻辑完全不同。

正确计算逻辑

年死亡率的推导基于森林留存比例的复合变化:

  1. 假设年死亡率为r,每年剩余的森林是上一年的(1 - r)倍
  2. 期初(统计开始时)剩余森林比例 = 1 - 起始累计损失占比/100
  3. 期末(统计结束时)剩余森林比例 = 1 - 期末累计损失占比/100
  4. 二者满足公式:期末剩余比例 = 期初剩余比例 * (1 - r) ^ 间隔年数,反推即可得到r

代码实现

# 正确的年死亡率计算函数
annual_mortality <- function(end_pct, start_pct, yrs) {
  remaining_end <- 1 - end_pct / 100
  remaining_start <- 1 - start_pct / 100
  r <- 1 - (remaining_end / remaining_start)^(1/yrs)
  return(r * 100) # 转换为百分比格式输出
}

# 代入你的数据计算
library(dplyr)
df <- data.frame(group = c('pine', 'beech'),
                 start = c(1,2),
                 end = c(19, 30),
                 years = 18)

df %>% 
  mutate(annual_mortality = annual_mortality(end, start, years))

运行后得到的结果:

group start end years annual_mortality
1  pine     1  19    18         1.21
2 beech     2  30    18         1.89

结果在你预期的1%-3%区间内,符合业务常识。

注意事项

  • 确保输入的start和end是同一统计口径的累计损失占比,不存在重复统计、口径偏差的问题
  • 若你的统计周期起始点是「无损失的初始森林」,即start=0,可以将remaining_start直接设为1代入计算即可

内容的提问来源于stack exchange,提问作者maycca

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 14:54:03