이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

확률 분포 사용하기

확률 분포는 원천 모집단에 대한 가정을 기반으로 하는 이론적 분포입니다. 이 분포는 확률 변수가 특정 이산 값을 갖거나 지정된 연속된 값 범위에 속하는 사건에 확률을 배정합니다.

Statistics and Machine Learning Toolbox™에서는 다음과 같이 확률 분포를 사용하는 여러 방법을 제공합니다.

Statistics and Machine Learning Toolbox에서 지원하는 분포 목록은 Supported Distributions 항목을 참조하십시오.

사용자 지정 분포에 대한 확률 객체를 정의한 다음 pdf, cdf, icdf, random과 같은 확률 객체 함수나 분포 피팅기 앱을 사용하여 분포를 실행하고 난수를 생성하는 등의 작업을 수행할 수 있습니다. 자세한 내용은 Define Custom Distributions Using the Distribution Fitter App 항목을 참조하십시오. 함수 핸들을 사용하여 사용자 지정 분포를 정의한 다음 mle 함수를 사용하여 최대가능도 추정값을 구할 수도 있습니다. 예제는 중도절단된 데이터에 사용자 지정 분포 피팅하기 항목을 참조하십시오.

확률 분포 객체

확률 분포 객체를 사용하면 확률 분포를 표본 데이터에 피팅하거나 모수 값을 지정하여 분포를 정의할 수 있습니다. 그런 다음 분포 객체에 대해 다양한 분석을 수행할 수 있습니다.

확률 분포 객체 만들기

fitdist를 사용하여 확률 분포 객체를 데이터에 피팅하여 표본 데이터에서 확률 분포 모수를 추정할 수 있습니다. 하나의 지정된 모수 분포 또는 비모수 분포를 표본 데이터에 피팅할 수 있습니다. 또한, 그룹화 변수를 기반으로 하여 동일한 유형의 여러 분포를 표본 데이터에 피팅할 수도 있습니다. 대부분의 분포의 경우, fitdist는 최대가능도 추정(MLE, Maximum Likelihood Estimation)을 사용하여 표본 데이터에서 분포 모수를 추정합니다. 자세한 내용과 추가 구문 옵션은 fitdist를 참조하십시오.

또는, makedist로 모수 값을 지정하여 확률 분포 객체를 만들 수 있습니다.

확률 분포 객체 사용하기

확률 분포 객체를 만들고 나면 객체 함수를 사용하여 다음을 수행할 수 있습니다.

  • 분포 모수에 대한 신뢰구간 계산(paramci).

  • 평균(mean), 중앙값(median), 사분위 범위(iqr), 분산(var), 표준편차(std) 등의 요약 통계량 계산.

  • 확률 밀도 함수(pdf) 계산.

  • 누적 분포 함수(cdf) 또는 역누적 분포 함수(icdf) 계산.

  • 분포에 대한 음의 로그 가능도 함수(negloglik) 및 프로파일 가능도 함수(proflik) 계산.

  • 분포에서 난수 생성(random).

  • 분포를 지정된 하한 및 상한 값으로 자르기(truncate).

확률 분포 객체 저장하기

확률 분포 객체를 .MAT 파일에 저장하려면 다음과 같이 하십시오.

  • 도구 모음에서 작업 공간 저장을 클릭합니다. 이 옵션을 선택하면 확률 분포 객체를 포함하여 작업 공간에 있는 모든 변수가 저장됩니다.

  • 작업 공간 브라우저에서 확률 분포 객체를 마우스 오른쪽 버튼으로 클릭하고 다른 이름으로 저장을 선택합니다. 이 옵션을 선택하면 선택한 확률 분포 객체만 저장되고 작업 공간에 있는 다른 변수는 저장되지 않습니다.

또는, save 함수를 사용하여 명령줄에서 직접 확률 분포 객체를 저장할 수 있습니다. save를 사용하면 파일 이름을 선택할 수 있고 저장하고자 하는 확률 분포 객체를 지정할 수 있습니다. 객체(또는 기타 변수)를 지정하지 않을 경우 MATLAB®은 확률 분포 객체를 포함하여, 작업 공간에 있는 모든 변수를 지정된 파일 이름으로 저장합니다. 자세한 내용과 추가 구문 옵션은 save를 참조하십시오.

확률 분포 객체를 사용하여 분포 분석하기

이 예제에서는 확률 분포 객체를 사용하여 피팅된 분포에 대해 다단계 분석을 수행하는 방법을 보여줍니다.

분석에서는 다음을 수행하는 방법을 보여줍니다.

  • fitdist를 사용하여 120명 학생의 시험 성적을 포함하는 표본 데이터에 확률 분포를 피팅.

  • mean을 사용하여 시험 성적의 평균 계산.

  • plotpdf를 사용하여 시험 성적 데이터의 히스토그램을 피팅된 분포에 대한 pdf 플롯에 겹쳐서 플로팅.

  • icdf를 사용하여 학생들의 상위 10% 성적에 해당하는 경계를 계산.

  • save를 사용하여 피팅된 확률 분포 객체를 저장.

표본 데이터를 불러옵니다.

load examgrades

표본 데이터에는 시험 성적으로 구성된 120x5 행렬이 포함되어 있습니다. 시험 점수는 0부터 100의 척도로 매겨져 있습니다.

시험 성적 데이터의 첫 번째 열을 포함하는 벡터를 만듭니다.

x = grades(:,1);

fitdist를 사용하여 정규분포를 표본 데이터에 피팅하여 확률 분포 객체를 만듭니다.

pd = fitdist(x,'Normal')
pd = 
  NormalDistribution

  Normal distribution
       mu = 75.0083   [73.4321, 76.5846]
    sigma =  8.7202   [7.7391, 9.98843]

fitdistNormalDistribution 유형의 확률 분포 객체 pd를 반환합니다. 이 객체는 피팅된 정규분포에 대해 추정된 모수 값 musigma를 포함합니다. 모수 추정값 다음에 있는 구간은 분포 모수에 대한 95% 신뢰구간입니다.

피팅된 분포 객체 pd를 사용하여 학생들의 시험 성적 평균을 계산합니다.

m = mean(pd)
m = 75.0083

시험 성적 평균은 fitdist로 추정된 mu 모수와 동일합니다.

시험 성적의 히스토그램을 플로팅합니다. 피팅된 pdf의 플롯을 겹쳐 놓아 피팅된 정규분포와 실제 시험 성적을 시각적으로 비교합니다.

x_pdf = [1:0.1:100];
y = pdf(pd,x_pdf);
 
figure
histogram(x,'Normalization','pdf')
line(x_pdf,y)

피팅된 분포의 pdf는 시험 성적 히스토그램과 동일한 형태를 따릅니다.

역누적 분포 함수(icdf)를 사용하여 학생들의 상위 10% 시험 성적에 해당하는 경계를 파악합니다. 이 경계는 확률 분포의 cdf가 0.9이 되는 값과 동일합니다. 즉, 시험 성적의 90%는 이 경계값보다 작거나 같습니다.

A = icdf(pd,0.9)
A = 86.1837

피팅된 분포에 따르면 학생의 10%가 86.1837보다 높은 시험 성적을 받았습니다. 또는, 학생의 90%가 86.1837보다 낮거나 같은 시험 성적을 받았습니다.

피팅된 확률 분포 pdmyobject.mat라는 파일로 저장합니다.

save('myobject.mat','pd')

확률 분포 함수

분포 전용 함수를 사용하여 확률 분포를 다룰 수도 있습니다. 이러한 함수는 루프 또는 스크립트 내에서 난수를 생성하고 요약 통계량을 계산하며 cdf 또는 pdf를 다른 함수에 대한 함수 핸들로 전달하는 데 유용합니다. 단일 모수 세트가 아니라 모수 값으로 구성된 여러 배열에 대해 계산을 수행하는 경우에도 이러한 함수를 사용할 수 있습니다. 지원되는 확률 분포 목록은 Supported Distributions 항목을 참조하십시오.

분포 전용 함수를 사용하여 분포 분석하기

이 예제에서는 분포 전용 함수를 사용하여 피팅된 분포에 대해 다단계 분석을 수행하는 방법을 보여줍니다.

분석에서는 다음을 수행하는 방법을 보여줍니다.

  • normfit를 사용하여 120명 학생의 시험 성적을 포함하는 표본 데이터에 확률 분포를 피팅.

  • plotnormpdf를 사용하여 시험 성적 데이터의 히스토그램을 피팅된 분포에 대한 pdf 플롯에 겹쳐서 플로팅.

  • norminv를 사용하여 학생들의 상위 10% 성적에 해당하는 경계를 계산.

  • save를 사용하여 추정된 분포 모수를 저장.

확률 분포 객체를 사용하여 이와 동일한 분석을 수행할 수 있습니다. 확률 분포 객체를 사용하여 분포 분석하기 항목을 참조하십시오.

표본 데이터를 불러옵니다.

load examgrades

표본 데이터에는 시험 성적으로 구성된 120x5 행렬이 포함되어 있습니다. 시험 점수는 0부터 100의 척도로 매겨져 있습니다.

시험 성적 데이터의 첫 번째 열을 포함하는 벡터를 만듭니다.

x = grades(:,1);

normfit를 사용하여 정규분포를 표본 데이터에 피팅합니다.

[mu,sigma,muCI,sigmaCI] = normfit(x)
mu = 75.0083
sigma = 8.7202
muCI = 2×1

   73.4321
   76.5846

sigmaCI = 2×1

    7.7391
    9.9884

normfit 함수는 정규분포 모수의 추정값과 모수 추정값에 대한 95% 신뢰구간을 반환합니다.

시험 성적의 히스토그램을 플로팅합니다. 피팅된 pdf의 플롯을 겹쳐 놓아 피팅된 정규분포와 실제 시험 성적을 시각적으로 비교합니다.

x_pdf = [1:0.1:100];
y = normpdf(x_pdf,mu,sigma);
 
figure
histogram(x,'Normalization','pdf')
line(x_pdf,y)

피팅된 분포의 pdf는 시험 성적 히스토그램과 동일한 형태를 따릅니다.

정규 역누적 분포 함수를 사용하여 학생들의 상위 10% 시험 성적에 해당하는 경계를 파악합니다. 이 경계는 확률 분포의 cdf가 0.9이 되는 값과 동일합니다. 즉, 시험 성적의 90%는 이 경계값보다 작거나 같습니다.

A = norminv(0.9,mu,sigma)
A = 86.1837

피팅된 분포에 따르면 학생의 10%가 86.1837보다 높은 시험 성적을 받았습니다. 또는, 학생의 90%가 86.1837보다 낮거나 같은 시험 성적을 받았습니다.

추정된 분포 모수를 myparameter.mat라는 파일로 저장합니다.

save('myparameter.mat','mu','sigma')

확률 분포 함수를 함수 핸들로 사용하기

이 예제에서는 카이제곱 적합도 검정(chi2gof)에서 확률 분포 함수 normcdf를 함수 핸들로 사용하는 방법을 보여줍니다.

이 예제에서는 '입력 벡터 x에 포함된 표본 데이터는 모수 µσ가 각각 표본 데이터의 평균(mean) 및 표준편차(std)와 동일한 정규분포에서 추출된다'는 귀무가설을 검정합니다.

rng('default') % For reproducibility
x = normrnd(50,5,100,1);
h = chi2gof(x,'cdf',{@normcdf,mean(x),std(x)})
h = 0

반환된 결과 h = 0chi2gof가 디폴트 5% 유의수준에서 귀무가설을 기각하지 않음을 나타냅니다.

다음 예제에서는 확률 분포 함수를 슬라이스 표집기(slicesample)에서 함수 핸들로 사용하는 방법을 보여줍니다. 이 예제에서는 normpdf를 사용하여 표준 정규분포에서 2,000개의 값으로 구성된 임의 표본을 생성하고 결과로 생성된 값에 대한 히스토그램을 플로팅합니다.

rng('default') % For reproducibility
x = slicesample(1,2000,'pdf',@normpdf,'thin',5,'burnin',1000);
histogram(x)

이 히스토그램에서는 normpdf를 사용할 경우 결과로 생성되는 임의 표본이 표준 정규분포를 갖는다는 것을 보여줍니다.

normpdf 대신 지수 분포 pdf(exppdf)의 확률 분포 함수를 함수 핸들로 전달하면 slicesampleµ의 디폴트 모수 값이 1인 지수 분포에서 2,000개의 임의 표본을 생성합니다.

rng('default') % For reproducibility
x = slicesample(1,2000,'pdf',@exppdf,'thin',5,'burnin',1000);
histogram(x)

이 히스토그램에서는 exppdf를 사용할 경우 결과로 생성되는 임의 표본이 지수 분포를 갖는다는 것을 보여줍니다.

확률 분포 앱과 사용자 인터페이스

앱과 사용자 인터페이스에서는 모수 확률 분포와 비모수 확률 분포를 대화형으로 다루는 접근 방식을 제공합니다.

분포 피팅기 앱

분포 피팅기 앱을 사용하면 확률 분포를 데이터에 대화형 방식으로 피팅할 수 있습니다. 다양한 유형의 플롯을 표시하고, 신뢰한계를 계산하고, 데이터의 피팅 정도를 평가할 수 있습니다. 또한, 피팅에서 데이터를 제외시킬 수도 있습니다. 데이터를 저장하고 추가 분석을 수행하기 위해 피팅을 확률 분포 객체로 작업 공간에 내보낼 수 있습니다.

앱 탭에서 분포 피팅기 앱을 불러오거나 명령 창에 distributionFitter를 입력하여 분포 피팅기 앱을 불러올 수 있습니다. 자세한 내용은 Model Data Using the Distribution Fitter App 항목을 참조하십시오.

확률 분포 함수 툴

확률 분포 함수 사용자 인터페이스는 확률 분포를 시각적으로 탐색합니다. 명령 창에 disttool을 입력하여 확률 분포 함수 사용자 인터페이스를 불러올 수 있습니다.

난수 생성 툴

난수 생성 사용자 인터페이스는 지정된 분포에서 난수 데이터를 생성하고 결과를 작업 공간으로 내보냅니다. 이 툴을 사용하여 모수 및 표본 크기 변경 시 분포에 미치는 영향을 살펴볼 수 있습니다.

난수 생성 사용자 인터페이스를 사용하면 분포에 대한 모수 값을 설정하고 이 모수의 하한 및 상한 값을 변경할 수 있고, 동일한 크기와 모수를 사용하여 동일한 분포에서 다른 표본을 추출할 수 있으며, 추가 분석에 사용할 수 있도록 현재 임의 표본을 작업 공간으로 내보낼 수도 있습니다. 대화 상자에서 표본의 이름을 지정할 수 있습니다.

참고 항목

| | | |

관련 항목