확률 분포 사용하기
확률 분포는 원천 모집단에 대한 가정을 기반으로 하는 이론적 분포입니다. 이 분포는 확률 변수가 특정 이산 값을 갖거나 지정된 연속된 값 범위에 속하는 사건에 확률을 배정합니다.
Statistics and Machine Learning Toolbox™에서는 다음과 같이 확률 분포를 사용하는 여러 방법을 제공합니다.
확률 분포 객체 — 확률 분포를 표본 데이터에 피팅하거나 모수 값을 지정하여 확률 분포 객체를 생성합니다. 그런 다음 객체 함수를 사용하여 분포를 실행하고, 난수를 생성하는 등의 작업을 수행합니다.
앱 및 대화형 방식 사용자 인터페이스 — 분포 피팅기 앱, 확률 분포 함수 사용자 인터페이스, 난수 생성 툴(
randtool
)을 사용하여 확률 분포를 대화형 방식으로 피팅하고 탐색합니다.분포 전용 함수 및 일반 분포 함수 — 이러한 함수는 루프 또는 스크립트 내에서 난수를 생성하고 요약 통계량을 계산하며 cdf 또는 pdf를 다른 함수에 대한 함수 핸들로 전달하는 데 유용합니다. 단일 모수 세트가 아니라 모수 값으로 구성된 여러 배열에 대해 계산을 수행하는 경우에도 이러한 함수를 사용할 수 있습니다.
Statistics and Machine Learning Toolbox에서 지원하는 분포 목록은 지원되는 분포 항목을 참조하십시오.
확률 분포 객체
확률 분포 객체를 사용하면 확률 분포를 표본 데이터에 피팅하거나 모수 값을 지정하여 분포를 정의할 수 있습니다. 그런 다음 분포 객체에 대해 다양한 분석을 수행할 수 있습니다.
확률 분포 객체 만들기
fitdist
를 사용하여 확률 분포 객체를 데이터에 피팅하여 표본 데이터에서 확률 분포 모수를 추정할 수 있습니다. 하나의 지정된 모수 분포 또는 비모수 분포를 표본 데이터에 피팅할 수 있습니다. 또한, 그룹화 변수를 기반으로 하여 동일한 유형의 여러 분포를 표본 데이터에 피팅할 수도 있습니다. 대부분의 분포의 경우, fitdist
는 최대가능도 추정(MLE, Maximum Likelihood Estimation)을 사용하여 표본 데이터에서 분포 모수를 추정합니다. 자세한 내용과 추가 구문 옵션은 fitdist
를 참조하십시오.
또는, makedist
로 모수 값을 지정하여 확률 분포 객체를 만들 수 있습니다.
확률 분포 객체 사용하기
확률 분포 객체를 만들고 나면 객체 함수를 사용하여 다음을 수행할 수 있습니다.
확률 분포 객체 저장하기
확률 분포 객체를 .MAT 파일에 저장하려면 다음과 같이 하십시오.
도구 모음에서 작업 공간 저장을 클릭합니다. 이 옵션을 선택하면 확률 분포 객체를 포함하여 작업 공간에 있는 모든 변수가 저장됩니다.
작업 공간 브라우저에서 확률 분포 객체를 마우스 오른쪽 버튼으로 클릭하고 다른 이름으로 저장을 선택합니다. 이 옵션을 선택하면 선택한 확률 분포 객체만 저장되고 작업 공간에 있는 다른 변수는 저장되지 않습니다.
또는, save
함수를 사용하여 명령줄에서 직접 확률 분포 객체를 저장할 수 있습니다. save
를 사용하면 파일 이름을 선택할 수 있고 저장하고자 하는 확률 분포 객체를 지정할 수 있습니다. 객체(또는 기타 변수)를 지정하지 않을 경우 MATLAB®은 확률 분포 객체를 포함하여, 작업 공간에 있는 모든 변수를 지정된 파일 이름으로 저장합니다. 자세한 내용과 추가 구문 옵션은 save
를 참조하십시오.
확률 분포 객체를 사용하여 분포 분석하기
이 예제에서는 확률 분포 객체를 사용하여 피팅된 분포에 대해 다단계 분석을 수행하는 방법을 보여줍니다.
분석에서는 다음을 수행하는 방법을 보여줍니다.
표본 데이터를 불러옵니다.
load examgrades
표본 데이터에는 시험 성적으로 구성된 120×5 행렬이 포함되어 있습니다. 시험 점수는 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]
fitdist
는 NormalDistribution
유형의 확률 분포 객체 pd
를 반환합니다. 이 객체는 피팅된 정규분포에 대해 추정된 모수 값 mu
와 sigma
를 포함합니다. 모수 추정값 다음에 있는 구간은 분포 모수에 대한 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보다 낮거나 같은 시험 성적을 받았습니다.
피팅된 확률 분포 pd
를 myobject.mat
라는 파일로 저장합니다.
save('myobject.mat','pd')
앱 및 대화형 방식 사용자 인터페이스
앱과 사용자 인터페이스에서는 모수 확률 분포와 비모수 확률 분포를 대화형으로 다루는 접근 방식을 제공합니다.
분포 피팅기 앱
분포 피팅기 앱을 사용하면 확률 분포를 데이터에 대화형 방식으로 피팅할 수 있습니다. 다양한 유형의 플롯을 표시하고, 신뢰한계를 계산하고, 데이터의 피팅 정도를 평가할 수 있습니다. 또한, 피팅에서 데이터를 제외시킬 수도 있습니다. 데이터를 저장하고 추가 분석을 수행하기 위해 피팅을 확률 분포 객체로 작업 공간에 내보낼 수 있습니다.
앱 탭에서 분포 피팅기 앱을 불러오거나 명령 창에 distributionFitter
를 입력하여 분포 피팅기 앱을 불러올 수 있습니다. 자세한 내용은 Model Data Using the Distribution Fitter App 항목을 참조하십시오.
확률 분포 함수 툴
확률 분포 함수 사용자 인터페이스는 확률 분포를 시각적으로 탐색합니다. 명령 창에 disttool
을 입력하여 확률 분포 함수 사용자 인터페이스를 불러올 수 있습니다.
난수 생성 툴
난수 생성 사용자 인터페이스는 지정된 분포에서 난수 데이터를 생성하고 결과를 작업 공간으로 내보냅니다. 이 툴을 사용하여 모수 및 표본 크기 변경 시 분포에 미치는 영향을 살펴볼 수 있습니다.
난수 생성 사용자 인터페이스를 사용하면 분포에 대한 모수 값을 설정하고 이 모수의 하한 및 상한 값을 변경할 수 있고, 동일한 크기와 모수를 사용하여 동일한 분포에서 다른 표본을 추출할 수 있으며, 추가 분석에 사용할 수 있도록 현재 임의 표본을 작업 공간으로 내보낼 수도 있습니다. 대화 상자에서 표본의 이름을 지정할 수 있습니다.
분포 전용 함수 및 일반 분포 함수
분포 전용 함수 및 일반 분포 함수는 루프 또는 스크립트 내에서 난수를 생성하고 요약 통계량을 계산하며 cdf 또는 pdf를 다른 함수에 대한 함수 핸들로 전달하는 데 유용합니다. 단일 모수 세트가 아니라 모수 값으로 구성된 여러 배열에 대해 계산을 수행하는 경우에도 이러한 함수를 사용할 수 있습니다.
분포 전용 함수를 사용하여 분포 분석하기
이 예제에서는 분포 전용 함수를 사용하여 피팅된 분포에 대해 다단계 분석을 수행하는 방법을 보여줍니다.
분석에서는 다음을 수행하는 방법을 보여줍니다.
확률 분포 객체를 사용하여 이와 동일한 분석을 수행할 수 있습니다. 확률 분포 객체를 사용하여 분포 분석하기 항목을 참조하십시오.
표본 데이터를 불러옵니다.
load examgrades
표본 데이터에는 시험 성적으로 구성된 120×5 행렬이 포함되어 있습니다. 시험 점수는 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 = 0
은 chi2gof
가 디폴트 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
를 사용할 경우 결과로 생성되는 임의 표본이 지수 분포를 갖는다는 것을 보여줍니다.
참고 항목
fitdist
| makedist
| randtool
| 분포 피팅기 | 확률 분포 함수