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)。Stringcomputation_method— 用于计算 p 值的方法。 (可选,默认值:'auto'。) 'exact':使用检验统计量的精确概率分布进行计算。计算开销较大,除小样本外通常没有必要。'asymp' ('asymptotic') :使用近似方法进行计算。对于大样本,精确 p 值和渐近 p 值非常接近。'auto':当样本数量的最大值小于 10'000 时,使用 'exact' 方法。String
参数
返回值
返回一个包含两个元素的元组:计算得到的统计量和 p 值。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) │
└─────────────────────────────────────────────────────────┘另请参见