从python中的pdf中识别分布

时间:2016-03-22 16:34:55

标签: python scipy statistics

我有一个未知分布的概率密度函数,它是一组元组(x,f(x)),其中Map(function(a,b) sapply(1:ncol(b), function(x) {a[which(b[,x]==1),]}, simplify=FALSE), a,b) 和f(x)是相应的概率。

识别相应分布的最佳方法是什么?到目前为止,我的想法是基于pdf绘制大量样本(通过自己编写代码)然后使用获得的数据来适应scipy.stats中实现的所有分布,然后采用最佳拟合。 / p>

有没有更好的方法来解决这个问题?例如,scipy.stats中是否有某种实用程序可以帮助我解决这个问题?

1 个答案:

答案 0 :(得分:3)

从根本上说,根据经验样本总结一个分布是不可能的 - 参见here讨论。

有可能做一些更有限的事情,即拒绝/接受一个假设,即它是基于一个有些任意的标准,来自一组有限的(参数)分布。

鉴于有限的分布集,对于每个分布,您可能实际上可以执行以下操作:

  1. 使分布参数适合数据。例如,scipy.stats.beta.fit将符合Beta分布的最佳参数(所有scipy分布均采用此方法)。

  2. 拒绝/接受数据由此分布生成的假设。这样做的方法不止一种。一种特别简单的方法是使用分布的rvs()方法生成另一个样本,然后使用ks_2samp生成Kolmogorov-Smirnov检验。

  3. 请注意,某些特定的发行版可能有更好的ad-hoc算法,用于测试发行版系列的成员是否生成了数据。像往常一样,正态分布特别有许多(见Normalcy test)。