如何为gpd分配进行引导程序仿真

时间:2019-01-05 20:21:51

标签: python statistics statistics-bootstrap

我正在尝试估计晃荡罐冲击压力分布样本的置信区间。

样本大小约为100,并使用广义pareto分布(gpd)进行分析。

我所做的如下:

  1. 从样品中重新采样并替换样品
  2. 估计gpd的参数
  3. 在给定的置信区间内获取百分位数

实现的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。

欢迎任何评论和建议。

0 个答案:

没有答案