kolmogorovSmirnovTest
将 Kolmogorov-Smirnov 检验应用于来自两个总体的样本。
语法
kolmogorovSmirnovTest([alternative, computation_method])(sample_data, sample_index)
两个样本的值都在 sample_data
列中。如果 sample_index
等于 0,则该行中的值属于来自第一个总体的样本。否则,它属于来自第二个总体的样本。样本必须属于连续的一维概率分布。
参数
参数
alternative
— 备择假设。(可选,默认值:'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)
。
computation_method
— 用于计算 p 值的算法。(可选,默认值:'auto'
。)字符串。'exact'
- 使用检验统计量的精确概率分布执行计算。计算密集且浪费资源,除非对于小样本。'asymp'
('asymptotic'
) - 使用近似值执行计算。对于大样本量,精确 p 值和渐近 p 值非常相似。'auto'
- 当最大样本数小于 10'000 时,使用'exact'
算法。
返回值
元组,包含两个元素
示例
查询
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) │
└────────────────────────────────────────────────────┘
注意:P 值大于 0.05(对于 95% 的置信水平),因此不拒绝零假设。
查询
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) │
└─────────────────────────────────────────────────────────┘
注意:P 值小于 0.05(对于 95% 的置信水平),因此拒绝零假设。
参见