2026a

# 多元正态分布

# 概述

多元正态分布是单变量正态分布对两个或多个变量的推广。 它是相关变量的随机向量的分布,其中每个向量元素都具有单变量正态分布。 在最简单的情况下,变量之间不存在相关性,向量的元素是独立的单变量正态随机变量。

由于易于使用,多元正态分布通常用作多元数据的模型。

统计工具箱提供了多种与多元正态分布相关的功能。

  • 使用 mvnrnd 从分布中生成随机数。

  • 使用 mvnpdf 计算特定值的概率密度函数 (pdf)。

  • 使用 mvncdf 计算特定值的累积分布函数 (cdf)。

# 参数

多元正态分布使用以下参数

参数 描述 单变量正态模拟
均值向量 均值 (标量)
协方差矩阵 - 对角线元素包含每个变量的方差,非对角线元素包含变量之间的协方差 方差 (标量)

请注意,在一维情况下, 是方差,而不是标准差。 有关单变量正态分布参数的详细信息,请参阅参数

# 概率密度函数

d 维多元正态分布的概率密度函数(pdf)为

其中 是 1×d 向量, 是 d×d 对称正定矩阵。

请注意:

  • 仅支持随机向量生成的奇异 。 当 是单数时,pdf 不能写成相同的形式。

有关示例,请参阅双变量正态分布 pdf

# 累积分布函数

在 x 处计算的多元正态累积分布函数 (cdf) 定义为随机向量 v 分布为多元正态,位于上限由 x 定义的半无限矩形内的概率,

尽管多元正态 cdf 没有封闭形式,但 mvncdf 可以计算 cdf 的数值解。

有关示例,请参阅双变量正态分布 cdf

# 示例

双变量正态分布pdf

计算并绘制参数为 mu = [0 0] 且 Sigma = [0.25 0.3; 0.3 1] 的双变量正态分布的 pdf

定义参数 mu 和 Sigma。

using TyPlot
using TyBase
using TyStatistics
mu = [0 0]
Sigma = [0.25 0.3; 0.3 1]

在二维空间中创建一个由均匀分布的点组成的网格。

x1 = -3:0.2:3
x2 = -3:0.2:3
X1,X2 = meshgrid2(x1,x2)
X = [X1[:] X2[:]]

计算网格点处正态分布的 pdf。

y = mvnpdf(X,mu,Sigma)
y = reshape(y,length(x2),length(x1))

绘制pdf图像。

figure()
surf(x1,x2,y)
caxis([minimum(y[:])-0.5*range(y[:]),maximum(y[:])])
axis([-3 3 -3 3 0 0.4])
xlabel("x1")
ylabel("x2")
zlabel("Probability Density")

双变量正态分布cdf

计算并绘制二元正态分布的 cdf。

定义均值向量 mu 和协方差矩阵 Sigma。

using TyPlot
using TyBase
using TyStatistics
mu = [1 -1]
Sigma = [0.9 0.4; 0.4 0.3]

在二维空间中创建一个由 625 个均匀分布的点组成的网格。

X1,X2 = meshgrid2(LinRange(-1,3,25),LinRange(-3,1,25))
X = [X1[:] X2[:]]

计算网格点处正态分布的 cdf。

p, = mvncdf(X,mu,Sigma)

绘制cdf图像。

figure()
Z = reshape(p,25,25)
surf(X1,X2,Z)

矩形区域的概率

计算二元正态分布的单位平方上的概率,并创建结果的等高线图。

定义二元正态分布参数 mu 和 Sigma。

using TyPlot
using TyBase
using TyStatistics
mu = [0 0]
Sigma = [0.25 0.3; 0.3 1]

计算单位正方形上的概率。

p, = mvncdf([0 0],[1 1],mu,Sigma)
p = 1×1 Matrix{Float64}:
 0.20974244047556256

要可视化结果,首先在二维空间中创建一个均匀分布的点网格。

x1 = -3:.2:3
x2 = -3:.2:3
X1,X2 = meshgrid2(x1,x2)
X = [X1[:] X2[:]]

然后,计算网格点处正态分布的 pdf。

y = mvnpdf(X,mu,Sigma)
y = reshape(y,length(x2),length(x1))

最后,创建包含单位正方形的多元正态分布的等值线图。

figure()
contour(x1,x2,y,levels=[0.0001, 0.001, 0.01, 0.05, 0.15, 0.25, 0.35])
xlabel("x")
ylabel("y")
hold("on")
line([0 0 1 1 0],[1 0 0 1 1],linestyle="--",color="k")
hold("off")

计算多元累积概率比计算单变量概率需要更多的工作。 默认情况下,mvncdf 函数计算小于完整机器精度的值,并返回错误估计作为可选的第二个输出。 查看本例中的误差估计。

p,err = mvncdf([0 0],[1 1],mu,Sigma)
p = 1×1 Matrix{Float64}:
 0.20974244047556256
err = 1×1 Matrix{Float64}:
 1.0e-8

# 参考文献

[1] Kotz, S., N. Balakrishnan, and N. L. Johnson. Continuous Multivariate Distributions: Volume 1: Models and Applications. 2nd ed. New York: John Wiley & Sons, Inc., 2000.

# 另请参阅

mvncdf | mvnpdf | mvnrnd | NormalDistribution

# 相关主题

正态分布