我正在使用具有零均值和单位方差的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
当我绘制距离的直方图时,我希望看到半高斯,众数为零,但我没有。
谁能看到错误或解释结果?
距中心的距离分布不是半高斯分布。例如,在二维中,分布是瑞利分布(莱斯分布的特例)。
这是使用协方差矩阵为恒等的简单情况,对预期分布期望的简要说明。然后高斯的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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句