- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试找出定义包裹在半圆上的 von-Mises 分布的最佳方法(我用它来绘制不同浓度的无方向线)。我目前正在使用 SciPy 的 vonmises.rvs()。本质上,我希望能够输入 pi/2 的平均方向,并将分布截断到任一侧不超过 pi/2。
我可以使用截断的正态分布,但我会失去 von-mises 的环绕(如果我想要平均方向为 0)
我在研究映射纤维方向的研究论文中看到过这样做,但我不知道如何实现它(在 python 中)。我有点不知道从哪里开始。
如果我的 von Mesis 定义为(来自 numpy.vonmises):
np.exp(kappa*np.cos(x-mu))/(2*np.pi*i0(kappa))
与:
mu, kappa = 0, 4.0
x = np.linspace(-np.pi, np.pi, num=51)
我如何更改它以使用环绕半圆来代替?
有这方面经验的人可以提供一些指导吗?
最佳答案
直接数值逆 CDF 采样很有用,它应该非常适合有界域的分布。这是代码示例,构建 PDF 和 CDF 表并使用逆 CDF 方法进行采样。当然可以优化和矢量化
代码,Python 3.8,x64 Windows 10
import numpy as np
import matplotlib.pyplot as plt
import scipy.integrate as integrate
def PDF(x, μ, κ):
return np.exp(κ*np.cos(x - μ))
N = 201
μ = np.pi/2.0
κ = 4.0
xlo = μ - np.pi/2.0
xhi = μ + np.pi/2.0
# PDF normaliztion
I = integrate.quad(lambda x: PDF(x, μ, κ), xlo, xhi)
print(I)
I = I[0]
x = np.linspace(xlo, xhi, N, dtype=np.float64)
step = (xhi-xlo)/(N-1)
p = PDF(x, μ, κ)/I # PDF table
# making CDF table
c = np.zeros(N, dtype=np.float64)
for k in range(1, N):
c[k] = integrate.quad(lambda x: PDF(x, μ, κ), xlo, x[k])[0] / I
c[N-1] = 1.0 # so random() in [0...1) range would work right
#%%
# sampling from tabular CDF via insverse CDF method
def InvCDFsample(c, x, gen):
r = gen.random()
i = np.searchsorted(c, r, side='right')
q = (r - c[i-1]) / (c[i] - c[i-1])
return (1.0 - q) * x[i-1] + q * x[i]
# sampling test
RNG = np.random.default_rng()
s = np.empty(20000)
for k in range(0, len(s)):
s[k] = InvCDFsample(c, x, RNG)
# plotting PDF, CDF and sampling density
plt.plot(x, p, 'b^') # PDF
plt.plot(x, c, 'r.') # CDF
n, bins, patches = plt.hist(s, x, density = True, color ='green', alpha = 0.7)
plt.show()
以及带有 PDF、CDF 和采样直方图的图形
关于random - SciPy:半圆上的 von Mises 分布?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63449211/
在过去的几天里,我一直在尝试使用 python 绘制圆形数据,方法是构建一个范围从 0 到 2pi 的圆形直方图并拟合 Von Mises 分布。我真正想要实现的是: 具有拟合 Von-Mises 分
我有一个角分布,我想将 von Mises 分布的混合拟合到它 我该怎么做? 我在 R 中找到一个实现,Fit a mixture of von Mises distributions in R 我还
我正在尝试找出定义包裹在半圆上的 von-Mises 分布的最佳方法(我用它来绘制不同浓度的无方向线)。我目前正在使用 SciPy 的 vonmises.rvs()。本质上,我希望能够输入 pi/2
我有一组角度数据,我想将它们拟合到两个冯·米塞斯分布的混合中。如下所示,数据聚集在大约 0 和 ±π 处,因此这种情况需要具有周期性边界。 我尝试使用 movMF 包来拟合这些数据的分布,但它似乎正在
我正在手动计算 Von Mises 分布的参数,并想与 Scipy Von Mises 拟合函数进行比较。 我从拟合函数中得到不一致的结果。 我的两个数据集是 d1 = [0.8pi,0.9pi] 和
我试图找到周期/包裹正态分布 (von Mises) 的均值、方差和置信区间,但在一个时间间隔内(而不是传统的 pi 区间)。我查看了堆栈溢出的解决方案here ,它很接近,但我不确定这正是我正在寻找
我正在尝试拟合 von Mises 分布,来自 scipy ( http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.vonm
迁移到 Rails 3 后,一些 RSpec 测试失败了 例子: Controller : class ProfilesController [:en, :en], :formats=>[:html]
我是一名优秀的程序员,十分优秀!