我有用于执行极值分析(计算回报水平)的风数据。我正在使用 R 包'evd','extRemes'和'ismev'。
我正在拟合GEV,Gumbel和Weibull分布,以估算某段时间T的回报水平(RL)。
对于GEV和Gumbel案例,我可以使用 extRemes :: return.level()函数获取RL和置信区间。
一些代码:
require(ismev)
require(MASS)
data(wind)
x = wind[, 2]
rperiod = 10
fit <- fitdistr(x, 'weibull')
s <- fit$estimate['shape']
b <- fit$estimate['scale']
rlevel <- qweibull(1 - 1/rperiod, shape = s, scale = b)
## CI around rlevel
## ci.rlevel = ??
但对于Weibull案例,我需要一些帮助才能生成CI。
答案 0 :(得分:2)
我怀疑极其正确的答案是联合置信区域是椭圆形或弯曲香肠形状,但您可以使用vcov
函数从拟合对象中提取参数的方差估计值,然后构建标准+/- 1.96 SE应该提供信息的错误:
> sqrt(vcov(fit)["shape", "shape"])
[1] 0.691422
> sqrt(vcov(fit)["scale", "scale"])
[1] 1.371256
> s +c(-1,1)*sqrt(vcov(fit)["shape", "shape"])
[1] 6.162104 7.544948
> b +c(-1,1)*sqrt(vcov(fit)["scale", "scale"])
[1] 54.46597 57.20848
计算单个参数的CI的常用方法是假设正态分布并使用theta +/- 1.96 * SE(theta)。在这种情况下,你有两个参数,所以这两个参数都会给你一个“盒子”,一个间隔的2D模拟。真正正确的答案是在'scale'-by-'shape'参数空间中更复杂的东西,并且可能最容易通过模拟方法实现,除非你比我更好地掌握理论。