Main Content

mvnpdf

다변량 정규 확률 밀도 함수

설명

예제

y = mvnpdf(X)는 평균 0과 단위 공분산 행렬을 갖는 d차원 다변량 정규분포에 대한 확률 밀도 함수(pdf)의 값을 n×d 행렬 X의 각 행에서 계산하여 n×1 벡터 y로 반환합니다. 자세한 내용은 다변량 정규분포 항목을 참조하십시오.

예제

y = mvnpdf(X,mu)X에 있는 점의 pdf 값을 반환합니다. 여기서 mu는 각 관련 다변량 정규분포의 평균을 결정합니다.

예제

y = mvnpdf(X,mu,Sigma)X에 있는 점의 pdf 값을 반환합니다. 여기서 Sigma는 각 관련 다변량 정규분포의 공분산을 결정합니다.

Sigma만 지정하려는 경우 mu[]을 지정하여 디폴트 평균(0)을 사용하십시오.

예제

모두 축소

임의의 점 집합에서 표준 5차원 정규분포의 pdf를 계산합니다.

표준 5차원 정규분포에서 8개의 점을 무작위로 추출합니다.

mu = zeros(1,5);
Sigma = eye(5);
rng('default')  % For reproducibility
X = mvnrnd(mu,Sigma,8)
X = 8×5

    0.5377    3.5784   -0.1241    0.4889   -1.0689
    1.8339    2.7694    1.4897    1.0347   -0.8095
   -2.2588   -1.3499    1.4090    0.7269   -2.9443
    0.8622    3.0349    1.4172   -0.3034    1.4384
    0.3188    0.7254    0.6715    0.2939    0.3252
   -1.3077   -0.0631   -1.2075   -0.7873   -0.7549
   -0.4336    0.7147    0.7172    0.8884    1.3703
    0.3426   -0.2050    1.6302   -1.1471   -1.7115

X에 있는 점에서 분포의 pdf를 계산합니다.

y = mvnpdf(X)
y = 8×1

    0.0000
    0.0000
    0.0000
    0.0000
    0.0054
    0.0011
    0.0015
    0.0003

X에서 가장 큰 pdf 값을 갖는 점을 찾습니다.

[maxpdf,idx] = max(y)
maxpdf = 0.0054
idx = 5
maxPoint = X(idx,:)
maxPoint = 1×5

    0.3188    0.7254    0.6715    0.2939    0.3252

X의 다섯 번째 점이 무작위로 선택된 점 중에서 가장 큰 pdf 값을 갖습니다.

각각 서로 다른 평균을 갖는 6개의 3차원 정규분포를 만듭니다. 서로 다른 임의의 점에서 각 분포의 pdf를 계산합니다.

분포의 평균 mu와 공분산 Sigma를 지정합니다. 각 분포는 동일한 공분산 행렬인 단위 행렬을 갖습니다.

firstDim = (1:6)';
mu = repmat(firstDim,1,3)
mu = 6×3

     1     1     1
     2     2     2
     3     3     3
     4     4     4
     5     5     5
     6     6     6

Sigma = eye(3)
Sigma = 3×3

     1     0     0
     0     1     0
     0     0     1

6개의 분포에서 각각 한 번씩 무작위로 추출합니다.

rng('default')  % For reproducibility
X = mvnrnd(mu,Sigma)
X = 6×3

    1.5377    0.5664    1.7254
    3.8339    2.3426    1.9369
    0.7412    6.5784    3.7147
    4.8622    6.7694    3.7950
    5.3188    3.6501    4.8759
    4.6923    9.0349    7.4897

X에 있는 점에서 분포의 pdf를 계산합니다. 첫 번째 분포의 pdf는 점 X(1,:)에서 계산되고, 두 번째 분포의 pdf는 점 X(2,:)에서 계산되는 식입니다.

y = mvnpdf(X,mu)
y = 6×1

    0.0384
    0.0111
    0.0000
    0.0009
    0.0241
    0.0001

주어진 점 집합에서 2차원 정규분포의 pdf를 계산합니다.

분포의 평균 mu와 공분산 Sigma를 지정합니다.

mu = [1 -1];
Sigma = [0.9 0.4; 0.4 0.3];

분포에서 무작위로 100회 추출합니다. X를 추출한 점으로 구성된 행렬로 지정합니다.

rng('default')  % For reproducibility
X = mvnrnd(mu,Sigma,100);

X에 있는 점에서 분포의 pdf를 계산합니다.

y = mvnpdf(X,mu,Sigma);

확률 밀도 값을 플로팅합니다.

scatter3(X(:,1),X(:,2),y)
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 scatter.

10개의 서로 다른 5차원 정규분포를 만들고, 지정된 점에서 각 pdf의 값을 비교합니다.

차원 n을 10으로 지정하고 d를 5로 지정합니다.

n = 10;
d = 5;

다변량 정규분포의 평균 mu와 공분산 Sigma를 지정합니다. 모든 분포가 동일한 평균 벡터와 서로 다른 공분산 행렬을 갖도록 합니다.

mu = ones(1,d)
mu = 1×5

     1     1     1     1     1

mat = eye(d);
nMat = repmat(mat,1,1,n);
var = reshape(1:n,1,1,n);
Sigma = nMat.*var;

Sigma에 있는 처음 두 개의 공분산 행렬을 표시합니다.

Sigma(:,:,1:2)
ans = 
ans(:,:,1) =

     1     0     0     0     0
     0     1     0     0     0
     0     0     1     0     0
     0     0     0     1     0
     0     0     0     0     1


ans(:,:,2) =

     2     0     0     0     0
     0     2     0     0     0
     0     0     2     0     0
     0     0     0     2     0
     0     0     0     0     2

x가 5차원 공간에 있는 임의의 점이 되도록 설정합니다.

rng('default')  % For reproducibility
x = normrnd(0,1,1,5)
x = 1×5

    0.5377    1.8339   -2.2588    0.8622    0.3188

10개의 분산 각각에 대해 x에서 pdf를 계산합니다.

y = mvnpdf(x,mu,Sigma)
y = 10×1
10-4 ×

    0.2490
    0.8867
    0.8755
    0.7035
    0.5438
    0.4211
    0.3305
    0.2635
    0.2134
    0.1753

결과를 플로팅합니다.

scatter(1:n,y,'filled')
xlabel('Distribution Index')
ylabel('Probability Density at x')

Figure contains an axes object. The axes object with xlabel Distribution Index, ylabel Probability Density at x contains an object of type scatter.

입력 인수

모두 축소

계산 지점으로, 1×d 숫자형 벡터 또는 n×d 숫자형 행렬로 지정됩니다. 여기서 n은 양의 스칼라 정수이고 d는 하나의 다변량 정규분포의 차원입니다. X의 행은 관측값(또는 점)에 대응되고, 열은 변수(또는 좌표)에 대응됩니다.

X가 벡터이면 mvnpdfmu의 선행 차원 또는 Sigma의 후행 차원과 일치하도록 이를 복제합니다.

데이터형: single | double

다변량 정규분포의 평균으로, 1×d 숫자형 벡터 또는 n×d 숫자형 행렬로 지정됩니다.

  • mu가 벡터이면 mvnpdfSigma의 후행 차원과 일치하도록 벡터를 복제합니다.

  • mu가 행렬이면 mu의 각 행은 하나의 다변량 정규분포의 평균으로 구성된 벡터입니다.

데이터형: single | double

다변량 정규분포의 공분산으로, d×d 양의 정부호 대칭 행렬 또는 d×d×n 숫자형 배열로 지정됩니다.

  • Sigma가 행렬이면 mvnpdfmu의 행 개수와 일치하도록 행렬을 복제합니다.

  • Sigma가 배열이면 Sigma의 각 페이지 Sigma(:,:,i)는 하나의 다변량 정규분포의 공분산 행렬이고, 따라서 양의 정부호 대칭 행렬입니다.

공분산 행렬이 대각 행렬이고 대각선 을 따라 분산을 포함하고 있고 대각선 밖에는 공분산 0을 포함하고 있다면, Sigma를 대각선 요소만 포함하는 1×d 벡터 또는 1×d×n 배열로 지정할 수도 있습니다.

데이터형: single | double

출력 인수

모두 축소

pdf 값으로, n×1 숫자형 벡터로 반환됩니다. 여기서 n은 다음 중 하나입니다.

  • X가 행렬인 경우 X의 행 개수

  • X가 벡터인 경우 X가 복제된 횟수

X가 행렬이고 mu가 행렬이고 Sigma가 배열이면 mvnpdfX(i,:), mu(i,:), Sigma(:,:,i)를 사용하여 y(i)를 계산합니다.

세부 정보

모두 축소

다변량 정규분포

다변량 정규분포는 일변량 정규분포를 둘 이상의 변수로 일반화한 것입니다. 다변량 정규분포는 두 개의 모수, 평균 벡터 μ와 공분산 행렬 Σ를 갖습니다. 이는 일변량 정규분포의 모수인 평균, 분산과 비슷합니다. Σ의 대각선 요소는 각 변수에 대한 분산을 포함하고, Σ의 비대각선 요소는 변수 간 공분산을 포함합니다.

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

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

여기서 x 및 μ는 1×d 벡터이고 Σ는 d×d 양의 정부호 대칭 행렬입니다. mvnrnd에만 양의 준정부호 Σ 행렬을 사용할 수 있으며, 이는 특이 행렬일 수 있습니다. Σ가 특이 행렬인 경우에는 pdf가 동일한 형식을 가질 수 없습니다.

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

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

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

  • 1차원의 경우, Sigma는 표준편차가 아닌 분산입니다. 예를 들어, mvnpdf(1,0,4)normpdf(1,0,2)와 동일합니다. 여기서 4는 분산이고 2는 표준편차입니다.

참고 문헌

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

확장 기능

C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.

버전 내역

R2006a 이전에 개발됨

참고 항목

| |

도움말 항목