跳到主要内容
跳到主要内容

kolmogorovSmirnovTest

将 Kolmogorov-Smirnov 检验应用于来自两个总体的样本。

语法

kolmogorovSmirnovTest([alternative, computation_method])(sample_data, sample_index)

两个样本的值都在 sample_data 列中。如果 sample_index 等于 0,则该行中的值属于来自第一总体的样本。否则,该值属于来自第二总体的样本。 样本必须服从连续的一维概率分布。

参数

设置项

  • alternative — 备择假设。(可选,默认值:'two-sided'。)String。 设 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-value 的方法。(可选,默认值:'auto'。)String
    • 'exact' - 使用检验统计量的精确概率分布进行计算。计算量大,除非样本较小,否则开销较大。
    • 'asymp''asymptotic')- 使用近似方法进行计算。对于大样本量,精确 p-value 与渐近 p-value 非常接近。
    • 'auto' - 当样本数的最大值小于 10'000 时使用 'exact' 方法。

返回值

包含两个元素的 Tuple

  • 计算得到的统计量。Float64
  • 计算得到的 p-value。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)         │
└────────────────────────────────────────────────────┘

注意: 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% 置信水平),因此拒绝原假设。

另请参阅