首页 > 其他分享 >极值分析:分块极大值BLOCK-MAXIMA、阈值超额法、广义帕累托分布GPD拟合降雨数据时间序列|附代码数据

极值分析:分块极大值BLOCK-MAXIMA、阈值超额法、广义帕累托分布GPD拟合降雨数据时间序列|附代码数据

时间:2023-04-07 21:34:06浏览次数:75  
标签:似然 阈值 GPD 帕累托 估计 拟合 极值 BLOCK

全文链接:http://tecdat.cn/?p=25348

最近我们被客户要求撰写关于极值分析的研究报告,包括一些图形和统计输出。

你们可能知道,实际极值分析有两种常用方法:分块极大值Block-maxima、阈值超额法threshold excess

今天,我们将分别介绍这两种方法。

分块极大值Block-maxima

分块样本极大值的极值理论(Block-maxima)。这种对(时间)观测序列的极值建模的方法是基于在一定的恒定长度序列内利用这些观测值的最大值或最小值。对于足够多  的_n个已建立块,这__n_个等长块  的所得峰值    可用于将合适的分布拟合到这些数据。虽然块大小基本上可以自由选择,但必须在偏差(小块)和方差(大块)之间进行权衡。通常,序列的长度通常选择对应于某个熟悉的时间段,在大多数情况下为一年。年度最大值(或最小值)的结果向量称为“年度最大值(最小值)系列”或简称为 AMS。

根据 Fisher-Tippett-Gnedenko 定理,块最大值的分布可以通过广义极值分布来近似。

以下代码显示了一个简短的实际示例,该示例使用 R 将广义极值分布拟合到降水数据的时间序列。样本数据集包含 1971 年至 2014 年 降水数据 ( 查看文末了解数据获取方式 ) 。

# 加载所需的包


# 获取数据
prexts <- rehyd

# 导出 AMS 以获得最大降水量
ams <- apprly

# GEV 分布的最大似然拟合
evd
# 诊断图
plot

rl_mle <- reevel
# 基于 L- 拟合 GEV 分布矩估计
# 诊断图
plot(fiom) 
# 重现水平:
rm <- retvel
# 重现水平图

plot
loc <- as.numeric(retvel)

# 带 LMOM 图的重现水平

loc <- as.numeric(return.level)

图片

在这种情况下,两个结果非常相似。在大多数情况下,L 矩估计比最大似然估计更稳健。除了这些经典估计方法之外,还提供广义最大似然估计(GMLE,  Martins 和 Stedinger,2000 年)和贝叶斯估计方法(Gilleland 和 Katz,2016 年)。


点击标题查阅往期内容

图片

R语言POT超阈值模型和极值理论EVT分析

图片

左右滑动查看更多

图片

01

图片

02

图片

03

图片

04

图片

阈值超额法threshold excess 

我们现在来看看阈值超额法。

根据 Coles (2001) 的说法,如果可以使用没有间隙的完整(时间)序列,则阈值方法比块最大值方法更有效,因为所有超过某个阈值的值都可以作为模型拟合的基础。在某些情况下,将分布拟合到块最大值数据是一种浪费的方法,因为每个块只有一个值用于建模,而阈值过剩方法可能会提供更多关于极端值的信息。

然而,类似于块最大值方法中块大小的选择,部分持续时间模型的阈值选择也受到偏差(低阈值)和方差(高阈值)之间的权衡。

Coles (2001) 描述了两种不同的阈值选择方法。首先,有一种基于平均_残差_寿命图的探索性方法。该技术在实际模型拟合之前应用。其次,另一种方法是评估参数估计的稳定性。因此,模型拟合的这种敏感性分析是在一系列不同的阈值范围内进行的。

但是,选择合适的阈值可能是使用部分持续时间序列执行极值分析的最关键部分。Scarrott 和 MacDonald 在其 2012 年的文章。文献综述:极值阈值估计和不确定性量化(REVSTAT 10(1): 33-59)中对阈值估计方法进行了很好的概述 。

找到合适的阈值后,超过该阈值的极值子集将用于拟合广义帕累托分布。

根据 Pickands-Balkema-de Haan 定理,超过阈值的值的分布可以近似为广义帕累托分布。

以下代码显示了一个简短的实际示例,该示例使用R将广义帕累托分布拟合到降水数据的时间序列。样本数据集以 1981 年至 2014 年降水数据为特征。

# 平均剩余寿命图:
lplot(prects)
# 平均剩余寿命图描绘了阈值 (u) 与平均过剩流量。
# 这个想法是找到图几乎是线性的最低阈值;
# 考虑到 95% 的置信范围。

# 在一系列阈值上拟合 GPD 模型
threplot(prxts)

fitrange (prts)
# 设置阈值
th <- 40

# 最大似然估计
pole <- fe
# 诊断图

rl_mle <- retvel(po)

# L-矩估计
d(as.vector(prmethod = "moments")
# 诊断图
retel(pom)

# 重现水平图

# 使用 MLE 的重现水平图

loc <- as.numeric

# 带 LMOM 的重现水平图
plmom

图片
这个例子很好地说明了为什么基于 L 矩的方法可能优于最大似然估计,因为右图清楚地证明了使用 L 矩估计时异常值的影响要小得多。除了这些经典估计方法之外,还提供广义最大似然估计(GMLE,  Martins 和 Stedinger,2000 年)和贝叶斯估计方法(Gilleland 和 Katz,2016 年)。

在最近关于分块最大值法和阈值超额法的文章中,我们简单地假设了极值分析的所有假设都得到了满足。然而,在处理环境变量时,情况很可能不是这样的。特别是平稳性的假设在很多情况下可能被违反。在全球气候变化的背景下,气象或其他环境变量的时间序列中很可能有一个相当大的趋势。当然,这种趋势必须被纳入分析中,因为由此产生的回归水平随时间而变化。

广义帕累托分布拟合

下面的代码显示了一个简短的实际例子,即使用R对降水数据的时间序列进行广义帕累托分布的拟合。样本数据集是从1971年到2013年的降水数据。

# 推导出最大降水的AMS值
as <- apprly(preax)

# 检查AMS的平稳性。

# 简单的线性模型

summary(lm)

p <- ggplot

图片

拟合线性模型的结果和图给人的印象都表明年最大降水量有上升趋势。Mann-Kendall趋势检验的结果是一个非常小的P值,证实了这一趋势。因此,必须进行趋势校正,以说明随时间变化的回归水平。

# 最大似然估计
d( method = "MLE")
# 重现水平图
plot(mend)

图片

与前面的重现水平图(没有趋势)相比,这个重现水平图看起来有所不同。它显示的是5年和100年重现水平随时间的变化。

数据获取

在下面公众号后台回复 “降雨极值分析 数据” ,可获取完整数据。


图片

本文摘选 《 R语言极值分析:分块极大值BLOCK-MAXIMA、阈值超额法THRESHOLD EXCESS、广义帕累托分布GPD拟合降雨数据时间序列 》 ,点击“阅读原文”获取全文完整资料。


点击标题查阅往期内容

极值理论 EVT、POT超阈值、GARCH 模型分析股票指数VaR、条件CVaR:多元化投资组合预测风险测度分析
R语言POT超阈值模型和极值理论EVT分析
R语言极值推断:广义帕累托分布GPD使用极大似然估计、轮廓似然估计、Delta法
R语言极值理论EVT:基于GPD模型的火灾损失分布分析
R语言有极值(EVT)依赖结构的马尔可夫链(MC)对洪水极值分析
R语言POT超阈值模型和极值理论EVT分析
R语言混合正态分布极大似然估计和EM算法
R语言多项式线性模型:最大似然估计二次曲线
R语言Wald检验 vs 似然比检验
R语言GARCH-DCC模型和DCC(MVT)建模估计
R语言非参数方法:使用核回归平滑估计和K-NN(K近邻算法)分类预测心脏病数据
matlab实现MCMC的马尔可夫转换ARMA - GARCH模型估计
R语言基于Bootstrap的线性回归预测置信区间估计方法
R语言随机搜索变量选择SSVS估计贝叶斯向量自回归(BVAR)模型
Matlab马尔可夫链蒙特卡罗法(MCMC)估计随机波动率(SV,Stochastic Volatility) 模型
Matlab马尔可夫区制转换动态回归模型估计GDP增长率R语言极值推断:广义帕累托分布GPD使用极大似然估计、轮廓似然估计、Delta法

标签:似然,阈值,GPD,帕累托,估计,拟合,极值,BLOCK
From: https://www.cnblogs.com/tecdat/p/17297429.html

相关文章

  • COMP5125M Blockchain Technologies
    ModuletitleBlockchainTechnologiesModulecodeCOMP5125MAssignmenttitleCourseworkAssignmenttypeanddescriptionItisaprogrammingassignmentwherestudentsarere-quiredtodevelopsmartcontractsforpeer-to-peeren-ergytrading.RationaleTheaimoft......
  • org.springframework.amqp.rabbit.listener.BlockingQueueConsumer$DeclarationExcept
    错误信息:com.xubo.rabbitmq.springbootrabbitmq.SpringbootRabbitmqApplication._________/\\/___'_____(_)______\\\\(()\___|'_|'_||'_\/_`|\\\\\\/___)||_)||||......
  • blockchain | 基于ethers.js的ctf合约攻击模板
    blockchain|基于ethers.js的ctf合约攻击模板之前做题用的是truffle命令行和truffleexec来进行编写代码,封装的层级比较高,这个框架主要还是用来开发比较方便,看了大师傅的wp(https://www.seaeye.cn/archives/497.html)以后觉得还是得写一个自己用起来顺手的攻击模板。使用ethers......
  • blockchain | 使用truffle测试合约
    blockchain|使用truffle测试合约使用truffletest功能对之前的合约进行测试参考:https://www.qikegu.com/docs/4816本质上的过程还是部署到测试链子上,然后进行一系列操作。如果要临时环境还可以用truffledevelop进行创建:https://learnblockchain.cn/docs/truffle/quickstart......
  • LinkedBlockingDeque介绍
    //有一个内部类finalclassNode<E>,//用于包装每个节点的数据。另外有成员属性//Node<E>first,Node<E>last,//当前拥有元素数量intcount,容量intcapacity;//Eitem当前节点数据//Node<E>prev指向当前节点前驱节点......
  • ArrayBlockingQueue解释
    1//transient是Java语言的关键字,用来表示一个成员变量不是该对象序列化的一部分。当一个对象被序列化的时候,transient型变量的值不包括在序列化的结果中。2//而非transient型的变量是被包括进去的。注意static修饰的静态变量天然就是不可序列化的。34......
  • blockchain | truffle console 访问合约
    blockchain|truffleconsole访问合约今天用truffleconsole来测试昨天部署的合约。一开始报错invalidopcode,查了一下还是创世区块配置的问题,这里贴上最新的配置文件:{"config":{"chainId":15,"homesteadBlock":0,"byzantiumBlock":0,......
  • blockchain | 将合约部署到geth
    blockchain|将truffle合约部署到geth【一路踩坑】上一篇文章里我用truffle编写了一个测试合约,这次得部署到链子上。本文包含诸多试错过程先把geth跑起来1.更改配置文件更改truffle-config.js主要就是配置一下网络(对接geth)2.创建迁移脚本据教程的说法是要文件名写......
  • blockchain | 通过truffle编写合约
    blockchain|通过truffle编写合约有了前两篇环境搭建的基础,开始编写智能合约。(虽然部署了geth,但是truffle也有自带的私有链子环境可以用)参考官方文档:https://learnblockchain.cn/docs/truffle/quickstart.html#creating-a-project以及教程:https://www.qikegu.com/docs/4782......
  • NonBlocking 非阻塞IO 状态下的实现单线程协程socket通信
    #服务器端#-*-coding:utf-8-*-importtimefromsocketimport*server=socket(AF_INET,SOCK_STREAM)server.bind(('127.0.0.1',8081))server.listen(5)server.setblocking(False)#至关重要的一步!!!conn_l=[]print('waiting...')whileTrue:......