作者:mobiledu2502856097 | 来源:互联网 | 2023-02-01 21:54
我正在使用具有零均值和单位方差的numpy绘制一组3D高斯样本:
cov = np.zeros((3,3), dtype=np.float32)
np.fill_diagonal(cov, 1.0)
data_values = np.random.multivariate_normal([0.,0.,0.], cov, size=5000) # 5000 x 3
我可以绘制每个维度并看到高斯人.
我无法绘制完整的3D高斯,因此要验证我计算了每个样本data_values
距离原点的距离(0,0,0)
.
dist_from_center = np.sqrt(np.sum((data_values)**2, axis=1)) # array of 5000
当我绘制距离的直方图时,我期望看到半高斯,模式为零,但我没有.
任何人都可以看到错误,或解释结果吗?
1> Warren Wecke..:
距离中心的距离分布不是半高斯分布.例如,在二维中,分布是瑞利分布(Rice分布的特例).
下面是使用协方差矩阵为标识的简单情况,快速解释您应该期望分布的内容.然后高斯在3D的PDF样子K*exp(-x.dot(x)/2)
,哪里K
是1/(2*pi)**(1.5)
.重写x.dot(x)
为r**2
; r
是距离原点的距离.所以PDF的行为就像K*exp(-r**2/2)
.
现在想象一下原点周围的薄球壳,半径r
和无穷小的厚度dr
.这个薄壳的"体积"大约是4*pi*r**2*dr
.整个体积必须包含在距离原点的距离分布中.因此,我们将高斯PDF(表示为函数r
)乘以该球壳的体积,然后除以dr
得到密度作为函数r
.这给了(2*r**2)/sqrt(2*pi)*exp(-r**2/2)
.(这种分布称为Maxwell-Boltzmann分布.)
这是一个距离直方图的图表,以及以下函数的函数r
:
直方图是使用生成的
hist(dist_from_center, bins=25, normed=True)