使用 R 计算回报水平

问题描述 投票:0回答:1

我正在尝试使用一组站点计算最大日降水量的回报水平。数据存储在三列中 - 站点、年份、降水量。目的是计算每日降水量的回报水平(即 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)
r return-value frequency-analysis
1个回答
0
投票

感谢您回答我的问题。 Gev 代表广义极值,GLO 代表广义逻辑,GPA 代表广义帕累托。

我的数据存储在一个 csv 文件中,包含三列 - 站点、年份、降水量。年份包含值 1951 - 2020、站点值 1 - 419 以及降水值(以毫米为单位,范围从 0 到 300)。

© www.soinside.com 2019 - 2024. All rights reserved.