我有一个未知分布的概率密度函数,它作为一组元组 (x, f(x)) 给出,其中 x=numpy.arange(0,1,size)
f(x)是对应的概率。
识别相应分布的最佳方法是什么?到目前为止我的想法是根据pdf(通过自己从头编写代码)绘制大量样本,然后使用获得的数据来拟合scipy.stats中实现的所有分布,然后取最佳拟合。
有没有更好的方法来解决这个问题?例如,我缺少的 scipy.stats 中是否有某种实用程序可以帮助我解决这个问题?
最佳答案
从根本上讲,根据经验样本总结分布是不可能的 - 参见 here讨论。
可以做一些更有限的事情,即拒绝/接受假设,即它来自一组有限的(参数)分布之一,基于有点武断的标准。
给定有限的分布集,对于每个分布,您实际上可以执行以下操作:
根据数据拟合分布参数。例如,
scipy.stats.beta.fit
将拟合 Beta 分布的最佳参数(所有scipy
分布都有此方法)。拒绝/接受数据由此分布生成的假设。有不止一种方法可以做到这一点。一个特别简单的方法是使用分布的
rvs()
方法生成另一个样本,然后使用ks_2samp
生成 Kolmogorov-Smirnov 检验。
请注意,某些特定的发行版可能具有更好的临时算法来测试发行版家族的成员是否生成了数据。和往常一样,正态分布有很多特别之处(参见 Normalcy test )。
关于python - 从 python 中的 pdf 识别分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36160138/