kolmogorovSmirnovTest
kolmogorovSmirnovTest
두 모집단의 표본에 Kolmogorov-Smirnov 검정을 적용하는 집계 함수예요. v23.4.0부터 도입되었어요.
출처: 문서
본문
두 모집단의 표본에 Kolmogorov-Smirnov 검정을 적용해요. 두 표본의 값은 모두 sample_data 컬럼에 있어요. sample_index가 0이면 그 행의 값은 첫 번째 모집단의 표본에 속하고, 그 외에는 두 번째 모집단의 표본에 속해요. 표본은 연속적이고 1차원적인 확률 분포에 속해야 해요.
구문 (Syntax)
kolmogorovSmirnovTest([alternative, computation_method])(sample_data, sample_index)
파라미터 (Parameters)
alternative— 대립 가설(Alternative hypothesis)이에요. (선택, 기본값:'two-sided'.)F(x)와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-값을 계산하는 데 사용하는 방법이에요. (선택, 기본값:'auto'.)'exact': 검정 통계량의 정확한 확률 분포를 사용해 계산해요. 작은 표본이 아닌 경우 계산 집약적이고 비효율적이에요.'asymp'(='asymptotic'): 근사(approximation)를 사용해 계산해요. 큰 표본 크기에서는 정확(exact) p-값과 점근(asymptotic) p-값이 매우 유사해요.'auto': 최대 표본 수가 10,000 미만일 때'exact'방법을 사용해요.String
인자 (Arguments)
sample_data— 표본 데이터예요.(U)Int*또는Float*또는Decimalsample_index— 표본 인덱스예요.(U)Int*
반환 값 (Returned value)
두 요소를 가진 튜플을 반환해요: 계산된 통계량과 계산된 p-값. Tuple(Float64, Float64)
예시 (Examples)
같은 분포 검정:
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) │
└─────────────────────────────────────────────────────────┘
참고 (See Also)
- Kolmogorov-Smirnov 검정