メインコンテンツへスキップ
メインコンテンツへスキップ

kolmogorovSmirnovTest

kolmogorovSmirnovTest

導入バージョン: v23.4

2つの母集団からのサンプルに Kolmogorov-Smirnov 検定を適用します。

両方のサンプルの値は sample_data カラムにあります。sample_index が 0 の場合、その行の値は第1母集団からのサンプルに属します。0 以外の場合は、第2母集団からのサンプルに属します。 サンプルは連続的な一次元の確率分布に属している必要があります。

構文

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

パラメータ

  • alternative — 代替仮説。(任意、デフォルト: 'two-sided'。)F(x) and G(x) をそれぞれ第1および第2の分布の CDF とする。'two-sided': 帰無仮説は、サンプルが同じ分布に由来するというものであり、例えばすべての x について F(x) = G(x) が成り立つ。これに対する代替仮説は、分布が同一ではないというものである。'greater': 帰無仮説は、第1サンプルの値が第2サンプルの値よりも確率的に小さいというものであり、例えば第1分布の CDF が第2分布の CDF より上、すなわち左側に位置する。このことは実際には、すべての x について F(x) >= G(x) が成り立つことを意味する。この場合の代替仮説は、少なくとも1つの x について F(x) < G(x) が成り立つというものである。'less': 帰無仮説は、第1サンプルの値が第2サンプルの値よりも確率的に大きいというものであり、例えば第1分布の CDF が第2分布の CDF より下、すなわち右側に位置する。このことは実際には、すべての x について F(x) <= G(x) が成り立つことを意味する。この場合の代替仮説は、少なくとも1つの x について F(x) > G(x) が成り立つというものである。String
  • computation_method — p 値を計算する際に使用される手法。(任意、デフォルト: 'auto'。)'exact': 検定統計量の厳密な確率分布を用いて計算を行う。小さいサンプルの場合を除き、計算コストが高く非効率的。'asymp'('asymptotic'): 近似を用いて計算を行う。サンプルサイズが大きい場合、exact と漸近的な p 値は非常に近い値となる。'auto': 最大サンプル数が 10'000 未満の場合に 'exact' 手法を使用する。String

引数

  • sample_data — サンプルデータ。(U)Int* または Float* または Decimal
  • sample_index — サンプルのインデックス。(U)Int*

戻り値

2つの要素からなるタプルを返す。1つ目は計算された統計量、2つ目は計算された 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)                │
└─────────────────────────────────────────────────────────┘

関連項目