我正在尝试估计晃荡罐冲击压力分布样本的置信区间。
样本大小约为100,并使用广义pareto分布(gpd)进行分析。
我所做的如下:
实现的python代码如下:
import numpy as np
from scipy.stats import genpareto
ci = 0.95
lower = list()
upper = list()
params = list()
for i in range(number_of_resample):
# draw with replacement and sort
sample = sorted(np.random.choice(data_series, size=len(data_series), replace=True), reverse=True)
# list of tuple (shape, loc, scale)
params.append(genpareto.fit(sample))
for i, epf in enumerate(epf_series):
for j, param_tuple in enumerate(params):
# store evaluations at the given excessive probability from the resampled distribution
dist.append(
genpareto.ppf(1-epf, param_tuple[0], loc=param_tuple[1], scale=param_tuple[2]
)
)
p = ((1-ci)/2)*100
lower.append(np.percentile(dist, p))
p = ((ci + ((1-ci)/2))*100
upper.append(np.percentile(dist, p))
我不确定上面的代码是否对置信区间正确执行了百分位数引导程序。另外,由于gpd是两参数分布,但是genpareto.fit给出了三个参数,因此不确定在这种情况下使用genpareto.fit。
欢迎任何评论和建议。