如何从scipy中的拟合分布得到标准偏差?

2024-03-28 23:11:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图拟合多个分布并得到每个分布的标准差。然而,大量的分布会为标准差重新运行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],参数如下:

^{pr2}$

Tags: 方法paramstatsnpargsqrtnanloc
2条回答

我问了另一个关于堆栈溢出的问题,并且得到了一个解决方案来回答这个问题。结果发现,scipy对我传递的参数进行了不同的解释。以下是答案链接:

isinfmu-error-in-scipy-stats-when-calling-std-for-exponweib

β分布的variance是:

a * b / [ (a + b)^2 * (a + b + 1) ]

所以标准差就是它的平方根。要获得ab

^{pr2}$

注意,您可以使用np.std(data)计算数据的标准偏差(没有任何拟合分布)。在

相关问题 更多 >