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

fitdist

데이터에 확률 분포 객체 피팅하기

설명

예제

pd = fitdist(x,distname)distname으로 지정된 분포를 열 벡터 x의 데이터에 피팅하여 확률 분포 객체를 생성합니다.

예제

pd = fitdist(x,distname,Name,Value)는 하나 이상의 이름-값 쌍의 인수로 지정된 추가 옵션을 사용하여 확률 분포 객체를 생성합니다. 예를 들어, 반복 피팅 알고리즘에 사용할 제어 모수를 지정하거나 중도절단된 데이터를 나타낼 수 있습니다.

예제

[pdca,gn,gl] = fitdist(x,distname,'By',groupvar)distname으로 지정된 분포를 그룹화 변수 groupvar을 기반으로 x의 데이터에 피팅하여 확률 분포 객체를 생성합니다. 그런 다음 피팅된 확률 분포 객체로 구성된 셀형 배열 pdca, 그룹 레이블로 구성된 셀형 배열 gn, 그리고 그룹화 변수 레벨로 구성된 셀형 배열 gl을 반환합니다.

예제

[pdca,gn,gl] = fitdist(x,distname,'By',groupvar,Name,Value)는 하나 이상의 이름-값 쌍의 인수로 지정된 추가 옵션을 사용하여 위에 나와 있는 출력 인수를 반환합니다. 예를 들어, 반복 피팅 알고리즘에 사용할 제어 모수를 지정하거나 중도절단된 데이터를 나타낼 수 있습니다.

예제

모두 축소

표본 데이터를 불러옵니다. 환자의 체중 데이터를 포함하는 벡터를 생성합니다.

load hospital
x = hospital.Weight;

이를 데이터에 피팅하여 정규분포 객체를 생성합니다.

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

  Normal distribution
       mu =     154   [148.728, 159.272]
    sigma = 26.5714   [23.3299, 30.8674]

모수 추정값 다음에 있는 구간은 분포 모수에 대한 95% 신뢰구간입니다.

분포의 pdf를 플로팅합니다.

x_values = 50:1:250;
y = pdf(pd,x_values);
plot(x_values,y,'LineWidth',2)

표본 데이터를 불러옵니다. 환자의 체중 데이터를 포함하는 벡터를 생성합니다.

load hospital
x = hospital.Weight;

이를 데이터에 피팅하여 커널 분포 객체를 생성합니다. 에파네츠니코프(Epanechnikov) 커널 함수를 사용합니다.

pd = fitdist(x,'Kernel','Kernel','epanechnikov')
pd = 
  KernelDistribution

    Kernel = epanechnikov
    Bandwidth = 14.3792
    Support = unbounded

분포의 pdf를 플로팅합니다.

x_values = 50:1:250;
y = pdf(pd,x_values);
plot(x_values,y)

표본 데이터를 불러옵니다. 환자의 체중 데이터를 포함하는 벡터를 생성합니다.

load hospital
x = hospital.Weight;

환자 성별로 그룹화된 데이터에 피팅하여 정규분포 객체를 생성합니다.

gender = hospital.Sex;
[pdca,gn,gl] = fitdist(x,'Normal','By',gender)
pdca = 1x2 cell array
    {1x1 prob.NormalDistribution}    {1x1 prob.NormalDistribution}

gn = 2x1 cell array
    {'Female'}
    {'Male'  }

gl = 2x1 cell array
    {'Female'}
    {'Male'  }

셀형 배열 pdca는 각 성별 그룹에 대해 하나씩, 총 두 개의 확률 분포 객체를 포함합니다. 셀형 배열 gn은 두 개의 그룹 레이블을 포함합니다. 셀형 배열 gl은 두 개의 그룹 수준을 포함합니다.

셀형 배열 pdca에 포함된 각 분포를 확인하여 환자 성별로 그룹화된 평균 mu와 표준편차 sigma를 비교합니다.

female = pdca{1}  % Distribution for females
female = 
  NormalDistribution

  Normal distribution
       mu = 130.472   [128.183, 132.76]
    sigma = 8.30339   [6.96947, 10.2736]

male = pdca{2}  % Distribution for males
male = 
  NormalDistribution

  Normal distribution
       mu = 180.532   [177.833, 183.231]
    sigma = 9.19322   [7.63933, 11.5466]

각 분포의 pdf를 계산합니다.

x_values = 50:1:250;
femalepdf = pdf(female,x_values);
malepdf = pdf(male,x_values);

성별을 기준으로 체중 분포를 시각적으로 비교할 수 있도록 pdf를 플로팅합니다.

figure
plot(x_values,femalepdf,'LineWidth',2)
hold on
plot(x_values,malepdf,'Color','r','LineStyle',':','LineWidth',2)
legend(gn,'Location','NorthEast')
hold off

표본 데이터를 불러옵니다. 환자의 체중 데이터를 포함하는 벡터를 생성합니다.

load hospital
x = hospital.Weight;

환자 성별로 그룹화된 데이터에 피팅하여 커널 분포 객체를 생성합니다. 삼각 커널 함수를 사용합니다.

gender = hospital.Sex;
[pdca,gn,gl] = fitdist(x,'Kernel','By',gender,'Kernel','triangle');

셀형 배열 pdca에 포함된 각 분포를 검토하여 각 성별에 대한 커널 분포를 확인합니다.

female = pdca{1}  % Distribution for females
female = 
  KernelDistribution

    Kernel = triangle
    Bandwidth = 4.25894
    Support = unbounded

male = pdca{2}  % Distribution for males
male = 
  KernelDistribution

    Kernel = triangle
    Bandwidth = 5.08961
    Support = unbounded

각 분포의 pdf를 계산합니다.

x_values = 50:1:250;
femalepdf = pdf(female,x_values);
malepdf = pdf(male,x_values);

성별을 기준으로 체중 분포를 시각적으로 비교할 수 있도록 pdf를 플로팅합니다.

figure
plot(x_values,femalepdf,'LineWidth',2)
hold on
plot(x_values,malepdf,'Color','r','LineStyle',':','LineWidth',2)
legend(gn,'Location','NorthEast')
hold off

입력 인수

모두 축소

입력 데이터로, 열 벡터로 지정됩니다. fitdistxNaN 값을 무시합니다. 또한, 중도절단 벡터나 도수 벡터에 NaN 값이 포함되어 있을 경우 fitdistx에서 이에 대응하는 값을 무시합니다.

데이터형: double

분포 이름으로, 다음 문자형 벡터 또는 string형 스칼라 중 하나로 지정됩니다. distname으로 지정된 분포에 따라 반환되는 확률 분포 객체의 유형이 결정됩니다.

분포 이름설명분포 객체
'Beta'베타 분포BetaDistribution
'Binomial'이항분포BinomialDistribution
'BirnbaumSaunders'번바움-손더스(Birnbaum-Saunders) 분포BirnbaumSaundersDistribution
'Burr'버(Burr) 분포BurrDistribution
'Exponential'지수 분포ExponentialDistribution
'ExtremeValue'극값 분포ExtremeValueDistribution
'Gamma'감마 분포GammaDistribution
'GeneralizedExtremeValue'일반화 극값 분포GeneralizedExtremeValueDistribution
'GeneralizedPareto'일반화 파레토 분포GeneralizedParetoDistribution
'HalfNormal'절반 정규분포HalfNormalDistribution
'InverseGaussian'역가우스 분포InverseGaussianDistribution
'Kernel'커널 분포KernelDistribution
'Logistic'로지스틱 분포LogisticDistribution
'Loglogistic'로그-로지스틱 분포LoglogisticDistribution
'Lognormal'로그 정규분포LognormalDistribution
'Nakagami'나카가미(Nakagami) 분포NakagamiDistribution
'NegativeBinomial'음이항분포NegativeBinomialDistribution
'Normal'정규분포NormalDistribution
'Poisson'푸아송 분포PoissonDistribution
'Rayleigh'레일리(Rayleigh) 분포RayleighDistribution
'Rician'라이시안(Rician) 분포RicianDistribution
'Stable'안정분포StableDistribution
'tLocationScale't 위치-척도 분포tLocationScaleDistribution
'Weibull'베이불(Weibull) 분포WeibullDistribution

그룹화 변수로, categorical형 배열, 논리형 벡터 또는 숫자형 벡터, 문자형 배열, string형 배열, 또는 문자형 벡터로 구성된 셀형 배열로 지정됩니다. 그룹화 변수 내 각각의 고유한 값은 그룹을 정의합니다.

예를 들어, Gender가 값 'Male''Female'을 갖는 문자형 벡터로 구성된 셀형 배열이면 Gender를 그룹화 변수로 사용하여 성별을 기준으로 분포를 데이터에 피팅할 수 있습니다.

그룹화 변수로 구성된 셀형 배열을 지정하여 둘 이상의 그룹화 변수를 사용할 수 있습니다. 지정된 모든 그룹화 변수에 대해 공통된 값을 갖는 관측값은 동일한 그룹에 배치됩니다.

예를 들어, Smoker가 금연자에 대해 값 0을 갖고 흡연자에 대해 값 1을 갖는 논리형 벡터이면 셀형 배열 {Gender,Smoker}를 지정하여 관측값을 네 개 그룹, 즉 남성 흡연자, 남성 비흡연자, 여성 흡연자, 여성 비흡연자 그룹으로 분할할 수 있습니다.

예: {Gender,Smoker}

데이터형: categorical | logical | single | double | char | string | cell

이름-값 쌍의 인수

선택적으로 Name,Value 인수가 쉼표로 구분되어 지정할 수 있습니다. 여기서 Name은 인수 이름이고 Value는 이에 대응하는 값입니다. Name은 따옴표로 묶어야 합니다. Name1,Value1,...,NameN,ValueN과 같이 여러 개의 이름-값 쌍의 인수를 원하는 순서로 지정할 수 있습니다.

예: fitdist(x,'Kernel','Kernel','triangle')은 삼각 커널 함수를 사용하여 x의 데이터에 커널 분포 객체를 피팅합니다.

중도절단된 데이터를 나타내는 논리형 플래그로, 'Censoring'과 함께 입력 벡터 x와 크기가 같은 논리값으로 구성된 벡터가 쉼표로 구분되어 지정됩니다. 값은 x에서 대응하는 요소가 우측 중도절단된 관측값인 경우 1이고, 대응하는 요소가 정확한 관측값인 경우 0입니다. 디폴트 값은 0으로 구성된 벡터로, 모든 관측값이 정확한 값임을 나타냅니다.

fitdist는 이러한 중도절단 벡터에 포함된 NaN 값을 모두 무시합니다. 또한, x 또는 도수 벡터에 NaN 값이 하나라도 포함되어 있으면 fitdist가 중도절단 벡터에서 이에 대응되는 값을 무시합니다.

이 인수는 distname'BirnbaumSaunders', 'Burr', 'Exponential', 'ExtremeValue', 'Gamma', 'InverseGaussian', 'Kernel', 'Logistic', 'Loglogistic', 'Lognormal', 'Nakagami', 'Normal', 'Rician', 'tLocationScale' 또는 'Weibull'인 경우에만 유효합니다.

데이터형: logical

관측값 도수로, 'Frequency'와 함께 입력 벡터 x와 크기가 같은 음이 아닌 정수 값으로 구성된 벡터가 쉼표로 구분되어 지정됩니다. 도수 벡터의 각 요소는 x에서 대응되는 요소에 대한 도수를 지정합니다. 디폴트 값은 1로 구성된 벡터로, x에서 각 값이 한 번만 나타난다는 것을 나타냅니다.

fitdist는 이러한 도수 벡터에 포함된 NaN 값을 모두 무시합니다. 또한, x 또는 중도절단 벡터에 NaN 값이 하나라도 포함되어 있으면 fitdist가 도수 벡터에서 이에 대응되는 값을 무시합니다.

데이터형: single | double

반복 피팅 알고리즘에 사용할 제어 모수로, 'Options'와 함께 statset을 사용하여 생성하는 구조체가 쉼표로 구분되어 지정됩니다.

데이터형: struct

이항분포에 사용할 시행 횟수로, 'NTrials'와 함께 양의 정수 값이 쉼표로 구분되어 지정됩니다. 이 옵션을 사용하려면 distname'Binomial'로 지정해야 합니다.

데이터형: single | double

일반화 파레토 분포에 사용할 분계점 모수로, 'Theta'와 함께 스칼라 값이 쉼표로 구분되어 지정됩니다. 이 옵션을 사용하려면 distname'GeneralizedPareto'로 지정해야 합니다.

데이터형: single | double

절반 정규분포에 사용할 위치 모수로, 'mu'와 함께 스칼라 값이 쉼표로 구분되어 지정됩니다. 이 옵션을 사용하려면 distname'HalfNormal'로 지정해야 합니다.

데이터형: single | double

커널 스무딩 방법의 유형으로, 'Kernel'과 함께 다음 중 하나가 쉼표로 구분되어 지정됩니다.

  • 'normal'

  • 'box'

  • 'triangle'

  • 'epanechnikov'

이 옵션을 사용하려면 distname'Kernel'로 지정해야 합니다.

커널 밀도 지지 범위로, 'Support'와 함께 'unbounded', 'positive' 또는 요소를 2개 가진 벡터가 쉼표로 구분되어 지정됩니다.

'unbounded'밀도가 실수 전체 범위로 연장될 수 있습니다.
'positive'밀도가 양의 값으로 제한됩니다.

또는, 밀도 지지 범위에 대해 유한한 하한 및 상한을 제공하는 요소를 2개 가진 벡터를 지정할 수 있습니다.

이 옵션을 사용하려면 distname'Kernel'로 지정해야 합니다.

데이터형: single | double | char | string

커널 스무딩 윈도우의 대역폭으로, 'Width'와 함께 스칼라 값이 쉼표로 구분되어 지정됩니다. fitdist에서 사용하는 디폴트 값은 정규 밀도를 추정하는 데 적합하지만, 여러 개의 최빈값과 같은 특징을 나타내기 위해 더 작은 값을 선택하려는 경우도 있을 수 있습니다. 이 옵션을 사용하려면 distname'Kernel'로 지정해야 합니다.

데이터형: single | double

출력 인수

모두 축소

확률 분포로, 확률 분포 객체로 반환됩니다. distname으로 지정된 분포에 따라 반환되는 확률 분포 객체의 클래스 유형이 결정됩니다.

distname으로 지정된 유형의 확률 분포 객체로, 셀형 배열로 반환됩니다.

그룹 레이블로, 문자형 벡터로 구성된 셀형 배열로 반환됩니다.

그룹화 변수 수준으로, 각 그룹화 변수에 대해 하나의 열을 포함하는 문자형 벡터로 구성된 셀형 배열로 반환됩니다.

알고리즘

fitdist 함수는 최대가능도 추정값을 사용하여 대부분의 분포를 피팅합니다. 이에 두 가지 예외가 있는데 중도절단되지 않은 데이터를 포함하는 정규분포 및 로그 정규분포에 대한 경우입니다.

  • 중도절단되지 않은 정규분포의 경우, 시그마 모수에 대해 추정된 값은 분산의 무편향 추정값에 대한 제곱근입니다.

  • 중도절단되지 않은 로그 정규분포의 경우, 시그마 모수에 대해 추정된 값은 데이터의 로그 분산의 무편향 추정값에 대한 제곱근입니다.

대체 기능

분포 피팅기 앱은 작업 공간에서 데이터를 가져오고 확률 분포를 이 데이터에 대화형 방식으로 피팅할 수 있는 그래픽 사용자 인터페이스(GUI)를 제공합니다. 그러면 분포를 확률 분포 객체로 작업 공간에 저장할 수 있습니다. distributionFitter를 사용하여 분포 피팅기 앱을 열거나 앱 탭에서 분포 피팅기를 클릭합니다.

참고 문헌

[1] Johnson, N. L., S. Kotz, and N. Balakrishnan. Continuous Univariate Distributions. Vol. 1, Hoboken, NJ: Wiley-Interscience, 1993.

[2] Johnson, N. L., S. Kotz, and N. Balakrishnan. Continuous Univariate Distributions. Vol. 2, Hoboken, NJ: Wiley-Interscience, 1994.

[3] Bowman, A. W., and A. Azzalini. Applied Smoothing Techniques for Data Analysis. New York: Oxford University Press, 1997.

R2009a에 개발됨