我试图拟合多个分布并得到每个分布的标准差。然而,大量的分布会为标准差重新运行inf或Nan。我得到拟合分布方差的方法是正确的吗?有更好的方法吗?为什么是南军?这就是我所做的:
param = distribution.fit(data)
arg = param[:-2]
loc = param[-2]
scale = param[-1]
if len(arg)>0:
std = np.sqrt(distribution.stats(arg, loc, scale, moments='v')[0]))
else:
std = np.sqrt(distribution.stats(loc, scale, moments='v')[0]))
此外,我跳过了在拟合数据时生成警告的分布。在
更新1:
例如,当distribution = scipy.stats.beta
时,我得到[ nan nan]
,参数如下:
我问了另一个关于堆栈溢出的问题,并且得到了一个解决方案来回答这个问题。结果发现,scipy对我传递的参数进行了不同的解释。以下是答案链接:
isinfmu-error-in-scipy-stats-when-calling-std-for-exponweib
β分布的variance是:
所以标准差就是它的平方根。要获得
^{pr2}$a
和b
:注意,您可以使用
np.std(data)
计算数据的标准偏差(没有任何拟合分布)。在相关问题 更多 >
编程相关推荐