Main Content

kstest

1-표본 콜모고로프-스미르노프(Kolmogorov-Smirnov) 검정

설명

예제

h = kstest(x)1-표본 콜모고로프-스미르노프 검정을 사용하여 '표준 정규분포에서 벡터 x의 데이터가 추출되지 않는다'는 대립가설에 대해 '이러한 분포에서 데이터가 추출된다'는 귀무가설에 대한 검정 결과를 반환합니다. 검정이 5% 유의수준에서 귀무가설을 기각한 경우 결과 h1이고, 그렇지 않은 경우 0입니다.

예제

h = kstest(x,Name,Value)는 하나 이상의 이름-값 쌍의 인수로 지정된 추가 옵션을 사용하여 1-표본 콜모고로프-스미르노프 검정에 대한 검정 결과를 반환합니다. 예를 들어, 표준 정규분포 이외의 분포를 검정하거나, 유의수준을 변경하거나, 단측 검정을 수행할 수 있습니다.

예제

[h,p] = kstest(___)는 위에 열거된 구문의 입력 인수 중 하나를 사용하여 가설검정의 p-값 p도 반환합니다.

예제

[h,p,ksstat,cv] = kstest(___)는 검정 통계량 ksstat의 값과 검정에 대한 근사 임계값 cv도 반환합니다.

예제

모두 축소

kstest를 사용하여 1-표본 콜모고로프-스미르노프 검정을 수행합니다. 경험적 누적 분포 함수(cdf)를 표준 정규 cdf와 시각적으로 비교하여 검정 결과를 확인합니다.

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

load examgrades
test1 = grades(:,1);

'평균이 75이고 표준편차가 10인 정규분포에서 데이터가 추출된다'는 귀무가설을 검정합니다. 이 모수를 사용하여 데이터 벡터의 각 요소를 정규화합니다. 기본적으로 kstest는 표준 정규분포를 검정하기 때문입니다.

x = (test1-75)/10;
h = kstest(x)
h = logical
   0

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

시각적으로 비교할 수 있도록 경험적 cdf와 표준 정규 cdf를 플로팅합니다.

cdfplot(x)
hold on
x_values = linspace(min(x),max(x));
plot(x_values,normcdf(x_values,0,1),'r-')
legend('Empirical CDF','Standard Normal CDF','Location','best')

Figure contains an axes object. The axes object with title Empirical CDF, xlabel x, ylabel F(x) contains 2 objects of type line. These objects represent Empirical CDF, Standard Normal CDF.

이 그림은 정규화된 데이터 벡터의 경험적 cdf와 표준 정규분포의 cdf 간의 유사성을 보여줍니다.

표본 데이터를 불러옵니다. 학생들의 시험 성적 데이터의 첫 번째 열을 포함하는 벡터를 만듭니다.

load examgrades;
x = grades(:,1);

가정된 분포를 2열 행렬로 지정합니다. 1열은 데이터 벡터 x를 포함합니다. 2열은 위치 모수 75, 스케일 모수 10, 자유도 1로 가정된 스튜던트 t 분포에 대해 x의 각 값에서 계산된 cdf 값을 포함합니다.

test_cdf = [x,cdf('tlocationscale',x,75,10,1)];

데이터가 가정된 분포에서 추출되는지 여부를 검정합니다.

h = kstest(x,'CDF',test_cdf)
h = logical
   1

반환된 값 h = 1kstest가 디폴트 5% 유의수준에서 귀무가설을 기각함을 나타냅니다.

표본 데이터를 불러옵니다. 학생들의 시험 성적 데이터의 첫 번째 열을 포함하는 벡터를 만듭니다.

load examgrades;
x = grades(:,1);

확률 분포 객체를 생성하여 위치 모수가 75이고, 스케일 모수가 10이며, 자유도가 1인 스튜던트 t 분포에서 데이터가 추출되는지 여부를 검정합니다.

test_cdf = makedist('tlocationscale','mu',75,'sigma',10,'nu',1);

'데이터가 가정된 분포에서 추출된다'는 귀무가설을 검정합니다.

h = kstest(x,'CDF',test_cdf)
h = logical
   1

반환된 값 h = 1kstest가 디폴트 5% 유의수준에서 귀무가설을 기각함을 나타냅니다.

표본 데이터를 불러옵니다. 학생들의 시험 성적의 첫 번째 열을 포함하는 벡터를 만듭니다.

load examgrades;
x = grades(:,1);

확률 분포 객체를 생성하여 위치 모수가 75이고, 스케일 모수가 10이며, 자유도가 1인 스튜던트 t 분포에서 데이터가 추출되는지 여부를 검정합니다.

test_cdf = makedist('tlocationscale','mu',75,'sigma',10,'nu',1);

1% 유의수준에서 '데이터가 가정된 분포에서 추출된다'는 귀무가설을 검정합니다.

[h,p] = kstest(x,'CDF',test_cdf,'Alpha',0.01)
h = logical
   1

p = 0.0021

반환된 값 h = 1kstest가 1% 유의수준에서 귀무가설을 기각함을 나타냅니다.

표본 데이터를 불러옵니다. 주식 수익 데이터 행렬의 세 번째 열을 포함하는 벡터를 만듭니다.

load stockreturns;
x = stocks(:,3);

'데이터의 모집단 cdf가 표준 정규 cdf보다 크다'는 대립가설에 대해 '데이터가 표준 정규분포에서 추출된다'는 귀무가설을 검정합니다.

[h,p,k,c] = kstest(x,'Tail','larger')
h = logical
   1

p = 5.0854e-05
k = 0.2197
c = 0.1207

반환된 값 h = 1kstest가 디폴트 5% 유의수준에서 귀무가설을 기각하고 대립가설을 채택함을 나타냅니다.

시각적으로 비교할 수 있도록 경험적 cdf와 표준 정규 cdf를 플로팅합니다.

[f,x_values] = ecdf(x);
J = plot(x_values,f);
hold on;
K = plot(x_values,normcdf(x_values),'r--');
set(J,'LineWidth',2);
set(K,'LineWidth',2);
legend([J K],'Empirical CDF','Standard Normal CDF','Location','SE');

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Empirical CDF, Standard Normal CDF.

이 플롯은 데이터 벡터 x의 경험적 cdf와 표준 정규분포의 cdf 간의 차이를 보여줍니다.

입력 인수

모두 축소

표본 데이터로, 벡터로 지정됩니다.

데이터형: single | double

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

예: 'Tail','larger','Alpha',0.01은 '표본 데이터가 추출되는 모집단의 cdf가 가정된 분포의 cdf보다 크다'는 대립가설을 사용하여 1% 유의수준으로 수행되는 검정을 지정합니다.

가설검정의 유의수준으로, 'Alpha'와 함께 (0,1) 범위의 스칼라 값이 쉼표로 구분되어 지정됩니다.

예: 'Alpha',0.01

데이터형: single | double

가정된 연속 분포의 cdf로, 'CDF'와 함께 2열 행렬 또는 연속 확률 분포 객체가 쉼표로 구분되어 지정됩니다. CDF가 행렬이면 1열이 가능한 x 값 세트를 포함하고, 2열이 이에 대응되는 가정된 누적 분포 함수 값 G(x)를 포함합니다. 1열이 데이터 벡터 x의 값을 포함하도록 CDF가 지정된 경우 계산이 가장 효율적입니다. x의 값이 CDF의 1열에 없는 경우, kstest가 보간을 통해 G(x)의 근삿값을 구합니다. x의 모든 값은 CDF의 첫 번째 열에서 가장 작은 값과 가장 큰 값 사이의 구간에 있어야 합니다. 기본적으로, kstest는 표준 정규분포를 검정합니다.

1-표본 콜모고로프-스미르노프 검정은 연속 누적 분포 함수에만 유효하며, 이를 수행하려면 CDF를 미리 지정해야 합니다. CDF가 데이터에서 추정된 경우 결과가 정확하지 않습니다. 분포 모수를 지정하지 않고 정규분포, 로그정규분포, 극값 분포, 베이불(Weibull) 분포 또는 지수 분포에 대해 x를 검정하려면 lillietest를 대신 사용하십시오.

데이터형: single | double

평가할 대립가설 유형으로, 'Tail'과 함께 다음 중 하나가 쉼표로 구분되어 지정됩니다.

'unequal''x가 추출되는 모집단의 cdf가 가정된 분포의 cdf와 일치하지 않는다'는 대립가설을 검정합니다.
'larger''x가 추출되는 모집단의 cdf가 가정된 분포의 cdf보다 크다'는 대립가설을 검정합니다.
'smaller''x가 추출되는 모집단의 cdf가 가정된 분포의 cdf보다 작다'는 대립가설을 검정합니다.

데이터 벡터 x의 값이 가정된 분포에서 예상되는 값보다 큰 경향이 있는 경우, x의 경험적 분포 함수가 상대적으로 작아지는 경향이 있으며, 그 반대의 경우는 커지는 경향이 있습니다.

예: 'Tail','larger'

출력 인수

모두 축소

가설검정 결과로, 논리값으로 반환됩니다.

  • h = 1이면 Alpha 유의수준에서 귀무가설이 기각됨을 나타냅니다.

  • h = 0이면 Alpha 유의수준에서 귀무가설이 기각되지 않음을 나타냅니다.

검정의 p-값으로, [0,1] 범위의 스칼라 값으로 반환됩니다. p는 귀무가설 하의 관측값과 같거나 그보다 더 극단적인 검정 통계량이 관측될 확률입니다. p의 값이 작을 경우 귀무가설의 타당성에 의문이 제기됩니다.

가설검정에 대한 검정 통계량으로, 음이 아닌 스칼라 값으로 반환됩니다.

임계값으로, 음이 아닌 스칼라 값으로 반환됩니다.

세부 정보

모두 축소

1-표본 콜모고로프-스미르노프(Kolmogorov-Smirnov) 검정

1-표본 콜모고로프-스미르노프 검정은 '데이터의 모집단 cdf가 가정된 cdf와 일치한다'는 귀무가설에 대한 비모수적 검정입니다.

“일치하지 않은” cdf 함수에 대한 양측 검정은 '데이터의 모집단 cdf가 가정된 cdf와 같지 않다'는 대립가설에 대해 귀무가설을 검정합니다. 검정 통계량은 x에서 계산된 경험적 cdf와 가정된 cdf 간의 최대절대차이입니다.

D*=maxx(|F^(x)G(x)|),

여기서 F^(x)는 경험적 cdf이고 G(x)는 가정된 분포의 cdf입니다.

“더 큰” cdf 함수에 대한 단측 검정은 '데이터의 모집단 cdf가 가정된 cdf보다 크다'는 대립가설에 대해 귀무가설을 검정합니다. 검정 통계량은 x에서 계산된 경험적 cdf가 가정된 cdf를 초과하는 최대 양입니다.

D*=maxx(F^(x)G(x)).

“더 작은” cdf 함수에 대한 단측 검정은 '데이터의 모집단 cdf가 가정된 cdf보다 작다'는 대립가설에 대해 귀무가설을 검정합니다. 검정 통계량은 가정된 cdf가 x에서 계산된 경험적 cdf를 초과하는 최대 양입니다.

D*=maxx(G(x)F^(x)).

kstest는 근사식을 사용하거나 테이블에서 보간을 사용하여 임계값 cv를 계산합니다. 공식과 테이블은 양측 검정에 대해 0.01alpha0.2 범위를 포괄하고 단측 검정에 대해 0.005alpha0.1 범위를 포괄합니다. cvalpha가 이 범위 밖에 있는 경우 NaN으로 반환됩니다.

알고리즘

kstest는 검정 통계량 ksstat을 임계값 cv와 비교하지 않고 p-값 p를 유의수준 Alpha와 비교하여 귀무가설을 기각할지를 결정합니다. cv는 근삿값이므로 ksstatcv와 비교하면 경우에 따라 pAlpha와 비교하는 것과 다른 결론이 도출됩니다.

참고 문헌

[1] Massey, F. J. “The Kolmogorov-Smirnov Test for Goodness of Fit.” Journal of the American Statistical Association. Vol. 46, No. 253, 1951, pp. 68–78.

[2] Miller, L. H. “Table of Percentage Points of Kolmogorov Statistics.” Journal of the American Statistical Association. Vol. 51, No. 273, 1956, pp. 111–121.

[3] Marsaglia, G., W. Tsang, and J. Wang. “Evaluating Kolmogorov’s Distribution.” Journal of Statistical Software. Vol. 8, Issue 18, 2003.

버전 내역

R2006a 이전에 개발됨

참고 항목

| |