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'
零假设是样本来自相同的分布,例如 F(x) = G(x) 对所有 x 成立。备择假设是分布不相同。'greater'
零假设是第一个样本中的值**随机小于**第二个样本中的值,例如第一个分布的 CDF 位于第二个分布的 CDF 上方,因此位于左侧。实际上,这意味着 F(x) >= G(x) 对所有 x 成立。在这种情况下,备择假设是 F(x) < G(x) 对至少一个 x 成立。'less'
。零假设是第一个样本中的值**随机大于**第二个样本中的值,例如第一个分布的 CDF 位于第二个分布的 CDF 下方,因此位于右侧。实际上,这意味着 F(x) <= G(x) 对所有 x 成立。在这种情况下,备择假设是 F(x) > G(x) 对至少一个 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%),因此拒绝零假设。
另请参阅