在python中绘制三维零均值、单位方差高斯会产生意想不到的结果
我正在使用零均值和单位方差的numpy绘制一组3D高斯样本:在python中绘制三维零均值、单位方差高斯会产生意想不到的结果,python,numpy,matplotlib,gaussian,Python,Numpy,Matplotlib,Gaussian,我正在使用零均值和单位方差的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高斯曲线,因此为了验证,我计算了数据值中每个样本与原点的距离(0,0,0)
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高斯曲线,因此为了验证,我计算了数据值中每个样本与原点的距离(0,0,0)
当我绘制距离直方图时,我希望看到半高斯分布,模式为零,但我没有
有人能看到错误,或者解释结果吗?距离中心的分布不是半高斯分布。例如,在二维中,分布是(的一个特例)
这里有一个快速的解释,使用协方差矩阵是恒等式的简单例子,说明您应该期望分布是什么。然后三维高斯分布的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)
。(此分布称为。)
这是距离直方图的图,以及r
的函数:
直方图是使用
hist(dist_from_center, bins=25, normed=True)
hist(dist_from_center, bins=25, normed=True)