有没有办法计算参数的估计值来自 von Mises 分布的数据?
在 R 中似乎很容易做到,http: //rgm2.lab.nig.ac.jp/RGM2/func.php?rd_id=CircStats:A1inv,但是 python 没有 A1inv 函数来计算第一类和零阶贝塞尔函数。
有没有办法计算参数的估计值来自 von Mises 分布的数据?
在 R 中似乎很容易做到,http: //rgm2.lab.nig.ac.jp/RGM2/func.php?rd_id=CircStats:A1inv,但是 python 没有 A1inv 函数来计算第一类和零阶贝塞尔函数。
根据 Banerjee等人的说法。,使用 von Mises-Fisher Distributions (J. Mach. Learning Res. 6 (2005)) 在 Unit Hypersphere 上聚类,您可以估计 von Mises-Fisher 参数和以最大的可能性。
让成为维度上的点从您的样品中。
让.
让(从重心到原点的欧几里得距离)。然后
(重心方向的单位向量)和
近似于最大似然估计,要准确找到的估计是(数字上)作为解
是第一类阶的修正贝塞尔函数. 该近似值可以用作 Newton-Raphson 迭代的起点——但作者指出,与仅计算近似值的成本相比,对于“高维”数据,这可能“相当慢”。
查看R 的CircStats 包est.kappa()中的函数:
在给定一组角度测量值的情况下,计算 kappa 的最大似然估计值,即 von Mises 分布的浓度参数。
是的,Von-Mises 分布族是指数族,因此您可以像对任何指数族一样找到其参数的最大似然估计:将期望参数设置为充分统计量的平均值我们将调用它的大小. 您必须将这些参数转换为您的参数化后才能获得. 请参阅@mic 的等式答案。
以防万一您想知道如何在 Python 中实现 @mic 的解决方案:我会使用scipy.optimize 来查找函数的根:Bessel 函数的比率减去.