본문으로 바로가기
본문으로 바로가기

kolmogorovSmirnovTest

kolmogorovSmirnovTest

도입된 버전: v23.4

두 모집단에서 추출한 표본에 Kolmogorov-Smirnov 검정을 적용합니다.

두 표본의 값은 모두 sample_data 컬럼에 있습니다. sample_index가 0이면 해당 행의 값은 첫 번째 모집단의 표본에 속합니다. 그렇지 않으면 두 번째 모집단의 표본에 속합니다. 표본은 연속인 1차원 확률 분포에 속해야 합니다.

구문

kolmogorovSmirnovTest([alternative, computation_method])(sample_data, sample_index)

매개변수

  • alternative — 대립가설입니다. (선택 사항, 기본값: 'two-sided'.) F(x) and G(x)를 각각 첫 번째와 두 번째 분포의 CDF(누적분포함수)라고 합니다. 'two-sided': 영가설은 표본들이 동일한 분포에서 나왔다는 것으로, 예를 들어 모든 x에 대해 F(x) = G(x)인 경우입니다. 대립가설은 분포가 동일하지 않다는 것입니다. 'greater': 영가설은 첫 번째 표본의 값들이 두 번째 표본의 값들보다 확률적으로 더 작다는 것으로, 예를 들어 첫 번째 분포의 CDF가 두 번째 분포의 CDF보다 위쪽(그래프 상에서 왼쪽)에 위치하는 경우입니다. 이는 실제로 모든 x에 대해 F(x) >= G(x)라는 의미입니다. 이 경우 대립가설은 적어도 하나의 x에 대해 F(x) < G(x)라는 것입니다. 'less': 영가설은 첫 번째 표본의 값들이 두 번째 표본의 값들보다 확률적으로 더 크다는 것으로, 예를 들어 첫 번째 분포의 CDF가 두 번째 분포의 CDF보다 아래쪽(그래프 상에서 오른쪽)에 위치하는 경우입니다. 이는 실제로 모든 x에 대해 F(x) <= G(x)라는 의미입니다. 이 경우 대립가설은 적어도 하나의 x에 대해 F(x) > G(x)라는 것입니다. String
  • computation_method — p-value를 계산하는 데 사용되는 방법입니다. (선택 사항, 기본값: 'auto'.) 'exact': 검정 통계량의 정확한 확률 분포를 사용하여 계산합니다. 작은 표본에만 적합하며, 그렇지 않은 경우 계산 비용이 많이 들고 비효율적입니다. 'asymp' ('asymptotic'): 근사치를 사용하여 계산합니다. 표본 크기가 클수록 exact 방법과 asymptotic 방법의 p-value는 매우 유사합니다. 'auto': 표본 크기의 최댓값이 10'000보다 작은 경우 'exact' 방법을 사용합니다. String

인수

반환 값

계산된 통계량과 계산된 p-value의 두 요소로 구성된 튜플을 반환합니다. Tuple(Float64, Float64)

예시

동일 분포 검정

SELECT kolmogorovSmirnovTest('less', 'exact')(value, num)
FROM
(
    SELECT
        randNormal(0, 10) AS value,
        0 AS num
    FROM numbers(10000)
    UNION ALL
    SELECT
        randNormal(0, 10) AS value,
        1 AS num
    FROM numbers(10000)
)
┌─kolmogorovSmirnovTest('less', 'exact')(value, num)─┐
│ (0.009899999999999996,0.37528595205132287)         │
└────────────────────────────────────────────────────┘

서로 다른 분포 검정

SELECT kolmogorovSmirnovTest('two-sided', 'exact')(value, num)
FROM
(
    SELECT
        randStudentT(10) AS value,
        0 AS num
    FROM numbers(100)
    UNION ALL
    SELECT
        randNormal(0, 10) AS value,
        1 AS num
    FROM numbers(100)
)
┌─kolmogorovSmirnovTest('two-sided', 'exact')(value, num)─┐
│ (0.4100000000000002,6.61735760482795e-8)                │
└─────────────────────────────────────────────────────────┘

참고