2012-06-04 9 views
38

Scipyで2サンプルのKSテストを行う方法を理解できません。Pythonでの2サンプルKolmogorov-SmirnovテストScipy

分布は標準正規分布と同一であるscipy kstest

ドキュメントを読んだ後、私は0.76のp値で、我々はヌルを拒否することができないことを意味している

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) 

テストする方法を見ることができます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テストを行う方法はありますか?もしそうなら、私はそれをどのようにすべきですか?

ありがとうございました

+0

回線とトレースバックを送信できますか? – cval

答えて

61

あなたはワンサンプルのKSテストを使用しています。あなたはおそらく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

これはまさに私が探していたものです。どうもありがとうございました! – Akavall

+1

これらの結果をどのように解釈しますか? 'statistic'と' p-value'を見るだけで、サンプルが同じディストリビューションから来たと言うことができますか? – FaCoffee

+1

@FaCoffeeこれはscipyのドキュメントが言っているものです: "_ KS統計量が小さいか、またはP値が高い場合、2つのサンプルの分布が同じであるという仮説を拒否できません。" – user2738815

0

これは、scipyのダウンロードドキュメントの言うことです:

If the K-S statistic is small or the p-value is high, then we cannot reject the hypothesis that the distributions of the two samples are the same.

は、我々は確認して意味するものではありません拒否することはできません。

+0

答えはさらに詳しく?前もって感謝します! –

+0

@KingReloadこれは、* p *値が非常に小さいとき、つまり、これらの2つのサンプルの確率が同じ分布から来ていないということを意味します。言い換えれば、これらの2つのサンプルが同じ分布から来る確率は非常に高い。しかし、あなたはそれについて100%確信することはできないので、* p *値は決してゼロではありません。 (ときには0と表示されることもありますが、実際にはゼロにはなりません)。それで、私たちは帰無仮説*を拒否しなかったと言われています。*帰無仮説*を受け入れています。 null仮説を受け入れる= * 2つのサンプルの分布は同じです。* –

+0

p値が高い可能性が高いのは同じ分布から来る可能性が高いため、p値が小さい可能性が低いです。 @MDAbidHasanはそれを後方に持っています。 '' 'p値が高いので帰無仮説を拒否できません: >>> >>> rvs4 = stats.norm.rvs(size = n2、loc = 0.0、scale = 1.0) >>> stats.ks_2samp(rvs1、rvs4) (0.07999999999999996,0。41126949729859719) '' ' – superhero

関連する問題