基于R语言概率密度函数图评估极端降水阈值规避概率
问题与解决方案
核心需求
需要通过R语言结合温室气体排放与极端降水数据,利用概率密度函数(PDF)图估算:
- 规避200mm/天极端降水事件的概率
- 达到该降水阈值前剩余的允许排放量
当前代码仅绘制了排放值的密度曲线,未整合降水变量,无法实现关联分析。
解决步骤
1. 建立排放与降水的关联模型
首先需要拟合排放与极端降水的统计关系,这里以线性回归为例(若实际数据是非线性关系,可替换为非线性模型如gam或nls):
# 拟合降水~排放的线性模型 fit_model <- lm(precip ~ emissions, data = GEV) # 反推200mm/天降水对应的临界排放值 critical_em <- (200 - coef(fit_model)[["(Intercept)"]]) / coef(fit_model)[["emissions"]]
2. 计算规避概率
规避概率即排放水平低于临界值的累积概率,可通过经验累积分布函数(ECDF)计算:
# 生成排放的经验累积分布函数 em_ecdf <- ecdf(GEV$emissions) # 计算临界排放值对应的累积概率(规避概率) avoid_prob <- em_ecdf(critical_em)
3. 绘制整合后的PDF图
修改原ggplot代码,添加临界线、规避区域阴影及概率标注:
library(ggplot2) # 绘制带关联分析的密度图 final_plot <- ggplot(GEV, aes(x = emissions)) + # 排放的密度曲线 geom_density(color = "midnightblue", size = 3) + # 临界排放值虚线 geom_vline(xintercept = critical_em, color = "red", size = 2, linetype = "dashed") + # 填充规避区域(排放低于临界值的部分) geom_area(stat = "density", fill = "midnightblue", alpha = 0.3, xlim = c(min(GEV$emissions), critical_em)) + # 标注规避概率 annotate("text", x = critical_em - diff(range(GEV$emissions))/10, y = max(density(GEV$emissions)$y)/2, label = paste0("规避概率: ", round(avoid_prob*100, 1), "%"), size = 14, color = "darkred") + # 标注临界排放值 annotate("text", x = critical_em + diff(range(GEV$emissions))/10, y = max(density(GEV$emissions)$y)/2, label = paste0("临界排放: ", round(critical_em, 2), " TtC"), size = 14, color = "darkred") + # 轴标签与标题 xlab("温室气体排放 (万亿吨碳)") + ylab("概率密度") + ggtitle("RCP 4.5: 极端降水阈值对应的排放规避概率") + # 主题优化 theme(plot.title = element_text(size=24), axis.title=element_text(size=20), axis.text=element_text(size=18), panel.background = element_blank(), panel.grid.major = element_line(color = "gray80")) print(final_plot)
4. 估算剩余排放量
假设当前已累计排放current_em,剩余排放量为临界排放值与当前排放的差值:
# 示例:当前累计排放0.07万亿吨碳 current_em <- 0.07 remaining_em <- critical_em - current_em cat("达到200mm/天降水阈值前剩余排放量: ", round(remaining_em, 2), " TtC\n")
补充优化建议
- 非线性关联修正:若排放与降水呈非线性关系(如指数、对数),可使用广义可加模型(
mgcv包的gam函数)拟合更精准的关联。 - 极端事件适配:针对极端降水分析,推荐使用分位数回归(
quantreg包),直接估算特定降水分位数对应的排放阈值,更贴合极端事件的统计特性。 - 多情景对比:若有不同排放情景(如RCP2.6、RCP8.5)的数据,可在同一张图中绘制多条密度曲线,对比不同情景下的规避概率差异。
内容的提问来源于stack exchange,提问作者Android17
相关产品推荐
相关产品推荐

