gpt4 book ai didi

python - 直方图上的瑞利分布曲线

转载 作者:行者123 更新时间:2023-12-01 06:27:33 25 4
gpt4 key购买 nike

我有 V_x 和 V_y 方向上的速度数据数组。我使用下面的代码绘制了速度范数的直方图,

plt.hist(V_norm_hist, bins=60, density=True, rwidth=0.95)

给出下图: Histograph for velocity norm

现在我还想在此基础上添加瑞利分布曲线,但我无法让它工作。我一直在使用 scipy.stats.rayleigh 尝试不同的组合,但是 scipy homepage并不是很直观,所以我无法让它正常运行......这些线到底是什么意思

mean, var, skew, kurt = rayleigh.stats(moments='mvsk')

x = np.linspace(rayleigh.ppf(0.01),rayleigh.ppf(0.99), 100)
ax.plot(x, rayleigh.pdf(x),'r-', lw=5, alpha=0.6, label='rayleigh pdf')

做什么?

最佳答案

您可能需要首先点击 rv_continuous 的链接,其中 rayleigh被子类化。从那里到 ppf找出 ppf 是“百分点函数”。 x0 = ppf(0.01) 告诉小于 x0 的所有元素在哪个位置有 accumulated其总“权重”的 1% 以及类似的 x1 = ppf(0.99) 是累积“权重”的 99% 的地方。 np.linspace(x0, x1, 100)将 x0 到 x1 的空间分成 100 个短间隔。由于连续分布可以是无限的,因此需要这些 x0 和 x1 限制来仅显示感兴趣的区间。

rayleigh.pdf(x)给出 pdf在 x。因此,指示每个 x 的概率。

rayleigh.stats(moments='mvsk')其中矩由字母 [‘mvsk’] 组成,定义了要计算的矩:‘m’ = mean , ‘v’ = variance , ‘s’ = (Fisher’s) skew , ‘k’ = (Fisher’s) kurtosis .

要在同一图上绘制直方图和分布,我们需要知道与您的样本相对应的 Raleigh 参数(locscale)。此外,pdf 和直方图都需要相同的 x 和相同的 y。对于x,我们可以采用直方图箱的限制。对于y,我们可以放大 pdf,知道 pdf 的总面积应该为 1。并且直方图箱与条目数量成正比。

如果您确实知道 loc0 但不知道 scalethe wikipedia article给出一个将scale与样本平均值联系起来的公式:

estimated_rayleigh_scale = samples.mean() / np.sqrt(np.pi / 2)

假设 loc0scale0.08,代码将如下所示:

from matplotlib import pyplot as plt
import numpy as np
from scipy.stats import rayleigh

N = 1000
# V = np.random.uniform(0, 0.1, 2*N).reshape((N,2))
# V_norm = (np.linalg.norm(V, axis=1))
scale = 0.08
V_norm_hist = scale * np.sqrt( -2* np.log (np.random.uniform(0, 1, N)))
fig, ax = plt.subplots(1, 1)

num_bins = 60
_binvalues, bins, _patches = plt.hist(V_norm_hist, bins=num_bins, density=False, rwidth=1, ec='white', label='Histogram')
x = np.linspace(bins[0], bins[-1], 100)
binwidth = (bins[-1] - bins[0]) / num_bins

scale = V_norm_hist.mean() / np.sqrt(np.pi / 2)

plt.plot(x, rayleigh(loc=0, scale=scale).pdf(x)*len(V_norm_hist)*binwidth, lw=5, alpha=0.6, label=f'Rayleigh pdf (s={scale:.3f})')
plt.legend()
plt.show()

example plot

关于python - 直方图上的瑞利分布曲线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60061020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com