我正在尝试使用一组站点计算最大日降水量的回报水平。数据存储在三列中 - 站点、年份、降水量。目的是计算每日降水量的回报水平(即 2、5、10、20、25、50、100 年事件)。
我已经使用 nsRFA 包安装了最佳发行版。看起来 GEV GPA 和 GLO 是最适合数据的分布。使用 chatGPT,我设法创建了一个工作代码来计算具有合适 GEV 分布的站点的返回水平。它使用 extREMES 包,但我没有运气编写出适用于 GPA 或 GLO 的代码。我在网上找到了一些可能的方法,但由于我的编码能力很差,无法满足我的需求。是否可能在极端情况下或需要不同的封装。
感谢您的帮助。
我的 GEV 代码如下所示:
# Load necessary packages
library(extRemes)
library(dplyr)
library(tidyr)
# Read data from the CSV file
data <- read.csv("precip_GEV.csv")
data
calculate_return_levels <- function(station_data) {
gev_fit <- fevd(station_data$precip, threshold = NULL, type = "GEV", method = "MLE")
return_levels <- return.level(gev_fit, return.period = c(2, 3, 4, 5, 10, 20, 25, 50, 100, 200))
return(return_levels)
}
return_levels <- data %>%
group_by(station) %>%
summarize(return_levels = list(calculate_return_levels(data[data$station == first(station),])))
return_levels <- return_levels %>%
unnest(return_levels)
print(return_levels, n = 20)
write.csv(return_levels, "return_levels_table_GEV.csv", row.names = FALSE)
感谢您回答我的问题。 Gev 代表广义极值,GLO 代表广义逻辑,GPA 代表广义帕累托。
我的数据存储在一个 csv 文件中,包含三列 - 站点、年份、降水量。年份包含值 1951 - 2020、站点值 1 - 419 以及降水值(以毫米为单位,范围从 0 到 300)。