# 多元正态分布
# 概述
多元正态分布是单变量正态分布对两个或多个变量的推广。 它是相关变量的随机向量的分布,其中每个向量元素都具有单变量正态分布。 在最简单的情况下,变量之间不存在相关性,向量的元素是独立的单变量正态随机变量。
由于易于使用,多元正态分布通常用作多元数据的模型。
统计工具箱提供了多种与多元正态分布相关的功能。
使用 mvnrnd 从分布中生成随机数。
使用 mvnpdf 计算特定值的概率密度函数 (pdf)。
使用 mvncdf 计算特定值的累积分布函数 (cdf)。
# 参数
多元正态分布使用以下参数
| 参数 | 描述 | 单变量正态模拟 |
|---|---|---|
| 均值向量 | 均值 | |
| 协方差矩阵 - 对角线元素包含每个变量的方差,非对角线元素包含变量之间的协方差 | 方差 |
请注意,在一维情况下,
# 概率密度函数
d 维多元正态分布的概率密度函数(pdf)为
其中
请注意:
- 仅支持随机向量生成的奇异
。 当 是单数时,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