Python:如何拟合冯米塞斯分布的混合?

cqc*_*991 6 python statistics scipy

我有一个角度分布,我想拟合 von Mises 分布的混合

在此输入图像描述

我怎样才能做到这一点?

我在 R 中找到了一个实现,在 R 中拟合 von Mises 分布的混合

我还发现可以在Python中安装单个von Mises分布,http://docs.scipy.org/doc/scipy/reference/ generated/scipy.stats.vonmises.html

我想也许我可以尝试如何拟合混合分布,因为我已经在scipy?中定义了函数。


最后,我使用 解决了这个问题rpy2。具体来说,我使用Python清理数据,并使用R包训练VMM(因此需要安装R和相关包)。

Fra*_*lle 5

我实现了一个算法来解决类似的问题,请参阅

https://framagit.org/fraschelle/mixture-of-von-mises-distributions

了解完整详情。

从随机样本(一维numpy.array)开始,它应用期望最大化算法根据 von-Mises 分布对数据进行分类。

该算法允许 von-Mises 分布的任何叠加(尽管与该算法相关的数学(链接到 pdf)仅描述了两个分布的叠加,但它很容易推广),并且速度与我所能做到的一样快。它仅依赖 Numpy 和,iv函数scipy.special来调用修改后的贝塞尔函数。

mixes_mises_pdfit 返回每个分布的权重,以及 $\mu$ 和 $\kappa$ 参数,请参阅有关von Mises 分布的维基百科页面

最好添加代码的真实分类结果,以便对周期性数据进行分类。最终,Scikit-learn 的扩展也应该是可行的,尽管它需要更多的时间来实现。

  • @Yashas 抱歉,我更改了我在 framagit 的帐户名。该链接现在可以使用。如果没有请告诉我,并感谢您指出我的错误。 (4认同)
  • 非常感谢你做的这些。我计划使用你的解决方案的一部分写一篇论文,我想知道如何正确引用它。 (2认同)