PythonScipyでの2サンプルのコルモゴロフ-スミルノフ検定


82

Scipyで2サンプルのKSテストを行う方法がわかりません。

ドキュメントを読んだ後scipykstest

分布が標準正規分布と同一である場所をテストする方法がわかります

from scipy.stats import kstest
import numpy as np

x = np.random.normal(0,1,1000)
test_stat = kstest(x, 'norm')
#>>> test_stat
#(0.021080234718821145, 0.76584491300591395)

つまり、p値が0.76の場合、2つの分布が同一であるという帰無仮説を棄却することはできません。

ただし、2つの分布を比較して、次のように、それらが同一であるという帰無仮説を棄却できるかどうかを確認したいと思います。

from scipy.stats import kstest
import numpy as np

x = np.random.normal(0,1,1000)
z = np.random.normal(1.1,0.9, 1000)

xとzが同一かどうかをテストします

私は素朴なものを試しました:

test_stat = kstest(x, z)

次のエラーが発生しました:

TypeError: 'numpy.ndarray' object is not callable

Pythonで2サンプルのKSテストを行う方法はありますか?もしそうなら、私はそれをどのようにすべきですか?

前もって感謝します


ラインとトレースバックを投稿していただけますか?
cval 2012年

回答:


123

1サンプルのKSテストを使用しています。おそらく2サンプルのテストが必要です ks_2samp

>>> from scipy.stats import ks_2samp
>>> import numpy as np
>>> 
>>> np.random.seed(12345678)
>>> x = np.random.normal(0, 1, 1000)
>>> y = np.random.normal(0, 1, 1000)
>>> z = np.random.normal(1.1, 0.9, 1000)
>>> 
>>> ks_2samp(x, y)
Ks_2sampResult(statistic=0.022999999999999909, pvalue=0.95189016804849647)
>>> ks_2samp(x, z)
Ks_2sampResult(statistic=0.41800000000000004, pvalue=3.7081494119242173e-77)

結果は次のように解釈できます。

  1. サンプルサイズに応じて、statisticPythonによって指定された値をKSテストの臨界値テーブルと比較することができます。ときにstatistic値が臨界値以上である、二つの分布が異なっています。

  2. それとも、比較することができp-value、有意のレベルにA、通常= 0.05または0.01(あなたが決める、下より重要、です)。p値がaよりも小さい場合、2つの分布が異なる可能性が非常に高くなります。


1
それがまさに私が探していたものです。どうもありがとうございました!
Akavall 2012年

2
これらの結果をどのように解釈しますか?statisticとを見るだけで、サンプルは同じ分布からのものであると言えp-valueますか?
faCoffee 2017

4
@FaCoffeeこれは、scipyのドキュメントによると次のように述べています。「KS統計が小さいか、p値が高い場合、2つのサンプルの分布が同じであるという仮説を棄却することはできません。
user2738815 2017年

5

これはscipyのドキュメントが言っていることです:

KS統計が小さいか、p値が高い場合、2つのサンプルの分布が同じであるという仮説を棄却することはできません。

拒否できないということは、確認するという意味ではありません。


あなたの答えをさらに詳しく説明していただけますか?前もって感謝します!
キングリロード2017年

@KingReloadこれは、p値が非常に小さい場合、つまり、これら2つのサンプルが同じ分布からのものではない確率が非常に低いことを意味します。言い換えれば、これら2つのサンプルが同じ分布から来る可能性は非常に高いです。しかし、それについて100%確信することはできないため、p値がゼロになることはありません。(0と表示されることもありますが、実際にはゼロになることはありません)。そのため、帰無仮説を受け入れているのではなく、帰無仮説を棄却できなかったと言われています。帰無仮説の受け入れ= 2つのサンプルの分布は同じ
MD Abid Hasan

3
p値が高い場合は同じ分布に由来する可能性が高く、p値が小さい場合はそうではない可能性があります。@MDAbidHasanはそれを後方に持っています。実際、ドキュメントの例は例を示しています For an identical distribution, we cannot reject the null hypothesis since the p-value is high, 41%: >>> >>> rvs4 = stats.norm.rvs(size=n2, loc=0.0, scale=1.0) >>> stats.ks_2samp(rvs1, rvs4) (0.07999999999999996, 0.41126949729859719)
スーパーヒーロー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.