我想为2、5、10、25、50和100个返回年计算给定数据的值。我需要将Gumbel dist与矩量法一起使用。但是,下面的代码不起作用。
return_years_5min=stats.gumbel_r.ppf([0.50,0.80,0.90,0.96,0.98,0.99], loc=mean_each_col[0], scale=std_each_col[0], moments='mv')
有人知道这是否可行吗?
答案 0 :(得分:0)
loc
的{{1}}和scale
参数不是分布的均值和标准差,因此不应使用均值和标准差。开发。数据集的gumbel_r
和loc
参数。
如果可以使用最大似然方法代替矩量方法,则可以使用scale
方法估计参数(假定fit()
是您的原始数据集):
data
SciPy不包含矩量分布方法的实现,因此,如果必须使用该方法,则必须实现它。 loc, scale = stats.gumbel_r.fit(data)
分布的均值和方差的公式非常简单,只需几行代码即可实现该方法:
gumbel_r
您将使用
而不是使用def gumbel_r_mom(x):
scale = np.sqrt(6)/np.pi * np.std(x)
loc = np.mean(x) - np.euler_gamma*scale
return loc, scale
stats.gumbel_r.fit
然后将收益水平计算为
loc, scale = gumbel_r_mom(data)