Main Content

다변량 정규분포

개요

다변량 정규분포는 일변량 정규분포를 둘 이상의 변수로 일반화한 것입니다. 이는 상관관계가 있는 변수로 구성된 확률 벡터에 대한 분포이며, 벡터의 각 요소는 일변량 정규분포를 가집니다. 가장 간단한 경우 변수 간에 상관관계가 없으며 벡터의 각 요소는 독립 일변량 정규 확률 변수입니다.

다변량 정규분포는 다루기 쉽기 때문에 다변량 데이터에 대한 모델로 자주 사용됩니다.

Statistics and Machine Learning Toolbox™는 다변량 정규분포와 관련 있는 몇 가지 기능을 제공합니다.

  • mvnrnd를 사용하여 분포에서 난수 생성.

  • mvnpdf를 사용하여 특정 값에서의 확률 밀도 함수(pdf) 계산.

  • mvncdf를 사용하여 특정 값에서의 누적 분포 함수(cdf) 계산.

모수

다변량 정규분포는 다음 표에 있는 모수를 사용합니다.

모수설명일변량 정규분포의 상응하는 값
μ평균 벡터평균 μ(스칼라)
Σ공분산 행렬 — 대각선 요소는 각 변수에 대한 분산을 포함하고, 비대각선 요소는 변수 간 공분산을 포함합니다.분산 σ2(스칼라)

1차원의 경우, Σ는 표준편차가 아니라 분산입니다. 일변량 정규분포의 모수에 대한 자세한 내용은 모수 항목을 참조하십시오.

확률 밀도 함수

d차원 다변량 정규분포의 확률 밀도 함수(pdf)는 다음과 같이 지정됩니다.

y = f(x,μ,Σ) = 1|Σ|(2π)dexp(12(x-μΣ-1(x-μ)')

여기서 x 및 μ는 1×d 벡터이고 Σ는 d×d 양의 정부호 대칭 행렬입니다.

참고로, Statistics and Machine Learning Toolbox는

  • 확률 벡터 생성에 대해서만 특이 행렬 Σ를 지원합니다. Σ가 특이 행렬인 경우에는 pdf를 동일한 형식으로 작성할 수 없습니다.

  • x와 μ를 열 벡터가 아닌 행 벡터로 방향을 지정하여 사용합니다.

예제는 이변량 정규분포 pdf 항목을 참조하십시오.

누적 분포 함수

x에서 계산한 다변량 정규 누적 분포 함수(cdf)는 다변량 정규분포를 따르는 확률 벡터 v가 상한이 x로 정의된 반무한 사각형 안에 존재할 확률로 정의됩니다.

Pr{v(1)x(1),v(2)x(2),...,v(d)x(d)}.

다변량 정규 cdf는 닫힌 형식을 갖지 않지만, mvncdf는 cdf 값을 수치적으로 계산할 수 있습니다.

예제는 이변량 정규분포 cdf 항목을 참조하십시오.

예제

이변량 정규분포 pdf

모수 mu = [0 0]Sigma = [0.25 0.3; 0.3 1]을 갖는 이변량 정규분포의 pdf를 계산하고 플로팅합니다.

모수 muSigma를 정의합니다.

mu = [0 0];
Sigma = [0.25 0.3; 0.3 1];

2차원 공간에서 균일한 간격을 갖는 점의 그리드를 만듭니다.

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

그리드 점에서 정규분포의 pdf를 계산합니다.

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

pdf 값을 플로팅합니다.

surf(x1,x2,y)
axis([-3 3 -3 3 0 0.4])
xlabel('x1')
ylabel('x2')
zlabel('Probability Density')

Figure contains an axes object. The axes object with xlabel x1, ylabel x2 contains an object of type surface.

이변량 정규분포 cdf

이변량 정규분포의 cdf를 계산하고 플로팅합니다.

평균 벡터 mu와 공분산 행렬 Sigma를 정의합니다.

mu = [1 -1];
Sigma = [.9 .4; .4 .3];

2차원 공간에서 균일한 간격을 갖는 625개 점의 그리드를 만듭니다.

[X1,X2] = meshgrid(linspace(-1,3,25)',linspace(-3,1,25)');
X = [X1(:) X2(:)];

그리드 점에서 정규분포의 cdf를 계산합니다.

p = mvncdf(X,mu,Sigma);

cdf 값을 플로팅합니다.

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

Figure contains an axes object. The axes object contains an object of type surface.

사각형 영역에 대한 확률

이변량 정규분포의 단위 정사각형에 대한 확률을 계산하고 그 결과에 대한 등고선 플롯을 생성합니다.

이변량 정규분포 모수 muSigma를 정의합니다.

mu = [0 0];
Sigma = [0.25 0.3; 0.3 1];

단위 정사각형에 대한 확률을 계산합니다.

p = mvncdf([0 0],[1 1],mu,Sigma)
p = 0.2097

결과를 시각화하기 위해 먼저 2차원 공간에서 균일한 간격을 갖는 점의 그리드를 만듭니다.

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

그런 다음 그리드 점에서 정규분포의 pdf를 계산합니다.

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

마지막으로, 단위 정사각형을 포함하는 다변량 정규분포의 등고선 플롯을 생성합니다.

contour(x1,x2,y,[0.0001 0.001 0.01 0.05 0.15 0.25 0.35])
xlabel('x')
ylabel('y')
line([0 0 1 1 0],[1 0 0 1 1],'Linestyle','--','Color','k')

Figure contains an axes object. The axes object with xlabel x, ylabel y contains 2 objects of type contour, line.

다변량 누적 확률을 계산하려면 일변량 확률을 계산할 때보다 상당히 더 많은 작업이 필요합니다. 기본적으로, mvncdf 함수는 최대 기계 정밀도보다 작은 정밀도로 값을 계산하고 두 번째 선택적 출력값으로 오차에 대한 추정값을 반환합니다. 이 경우의 오차 추정값을 확인합니다.

[p,err] = mvncdf([0 0],[1 1],mu,Sigma)
p = 0.2097
err = 1.0000e-08

참고 문헌

[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.

참고 항목

| | |

관련 항목