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

使用extRemes R包进行洪水频率分析时计算重现期分位数报错求解决

问题描述

我用于估算DF数据框不同重现期频率的代码,在计算return_quantiles时出现错误,请问该如何解决?

library(extRemes)
library(tidyverse)

DF <- data.frame(Date = seq(as.Date("1980-01-01"), 
                            to = as.Date("2020-12-31"), 
                            by = "day"), 
                 A1 = runif(14976,1,500))

# Extract the annual maximum values
annual_max <- aggregate(A1 ~ year(Date), data = DF, FUN = max)
max_values <- annual_max$A1


gev_fit <- extRemes::fevd(max_values, type = "GEV")


return_period <- c(2, 5, 10, 20, 50, 100)  # Update with desired return periods
return_quantiles <- extRemes::qgev(return_period, gev_fit)

# Print the estimated return period and corresponding quantile
for (i in 1:length(return_period)) {
  print(paste("Return Period:", return_period[i], "years"))
  print(paste("Estimated Quantile:", return_quantiles[i]))
  print("---------------")
}
解决方法

错误根源是extRemes::qgev函数的参数要求:它需要传入累积概率值,而非直接的重现期数值。重现期与累积概率的转换公式为:p = 1 - 1/return_period(重现期T代表每年有1/T的概率超过该分位数,因此累积概率为1减去超过概率)。

修改后的完整代码:

library(extRemes)
library(tidyverse)

DF <- data.frame(Date = seq(as.Date("1980-01-01"), 
                            to = as.Date("2020-12-31"), 
                            by = "day"), 
                 A1 = runif(14976,1,500))

# 提取年最大值
annual_max <- aggregate(A1 ~ year(Date), data = DF, FUN = max)
max_values <- annual_max$A1

# 拟合GEV模型
gev_fit <- extRemes::fevd(max_values, type = "GEV")

# 定义重现期并转换为累积概率
return_period <- c(2, 5, 10, 20, 50, 100)
p <- 1 - 1/return_period

# 计算对应重现期的分位数
return_quantiles <- extRemes::qgev(p, gev_fit)

# 打印结果
for (i in 1:length(return_period)) {
  print(paste("重现期:", return_period[i], "年"))
  print(paste("估算分位数:", return_quantiles[i]))
  print("---------------")
}
  • 核心修改:将原代码中的return_period替换为转换后的累积概率p传入qgev
  • 逻辑验证:以2年重现期为例,对应累积概率为1 - 1/2 = 0.5,即每年有50%的概率不超过该分位数,符合重现期的统计定义

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 16:22:50