python - 从 python 中的 pdf 识别分布

标签 python scipy statistics

我有一个未知分布的概率密度函数,它作为一组元组 (x, f(x)) 给出,其中 x=numpy.arange(0,1,size) f(x)是对应的概率。

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

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

最佳答案

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

可以做一些更有限的事情,即拒绝/接受假设,即它来自一组有限的(参数)分布之一,基于有点武断的标准。

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

  1. 根据数据拟合分布参数。例如,scipy.stats.beta.fit将拟合 Beta 分布的最佳参数(所有 scipy 分布都有此方法)。

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

请注意,某些特定的发行版可能具有更好的临时算法来测试发行版家族的成员是否生成了数据。和往常一样,正态分布有很多特别之处(参见 Normalcy test )。

关于python - 从 python 中的 pdf 识别分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36160138/

相关文章:

python - 将此函数绘制为累积分布图

c++ - 从文件描述符实例化套接字对象的非侵入式方法

python - 如何解决 pandas 的内存分配问题?

python - scipy.optimize.basinhopping 不调用accept_test。为什么?

python - 如何让odeint成功?

python - 如何在 Pandas 数据框中创建倾斜列?

java - Java获取MQ队列统计信息

python - 如何使用 asyncio 进行基本文件 IO

python - 如何从列表中提取项目并将它们用作新列表集的名称?

python - 如何使用 "scipy.optimize.curve_fit"平滑地拟合我的数据点?