跳转到主要内容

kolmogorovSmirnovTest

Introduced in:v23.4.0 对来自两个总体的样本执行 Kolmogorov-Smirnov 检验。 两个样本的值都位于 sample_data 列中。如果 sample_index 等于 0,则该行中的值属于第一个总体的样本;否则,属于第二个总体的样本。 样本必须来自连续的一维概率分布。 Syntax
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 值的方法。 (可选,默认值:‘auto’。) ‘exact’:使用检验统计量的精确概率分布进行计算。计算开销较大,除小样本外通常没有必要。‘asymp’ (‘asymptotic’) :使用近似方法进行计算。对于大样本,精确 p 值和渐近 p 值非常接近。‘auto’:当样本数量的最大值小于 10’000 时,使用 ‘exact’ 方法。String
参数 返回值 返回一个包含两个元素的元组:计算得到的统计量和 p 值。Tuple(Float64, Float64) 示例 同分布检验
Query
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)
)
Response
┌─kolmogorovSmirnovTest('less', 'exact')(value, num)─┐
│ (0.009899999999999996,0.37528595205132287)         │
└────────────────────────────────────────────────────┘
不同分布的检验
Query
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)
)
Response
┌─kolmogorovSmirnovTest('two-sided', 'exact')(value, num)─┐
│ (0.4100000000000002,6.61735760482795e-8)                │
└─────────────────────────────────────────────────────────┘
另请参见
最后修改于 2026年6月10日