Scipyで2サンプルKSテストを行う方法を理解できません。
ドキュメントを読んだ後 scipy kstest
分布が標準正規分布と同一である場所をテストする方法を見ることができます
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テストを行う方法はありますか?その場合、どうすればよいですか?
前もって感謝します
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)
結果は次のように解釈できます。
サンプルサイズに応じて、pythonで指定されたstatistic
の値を KS-test臨界値テーブル と比較できます。statistic
の値が臨界値より大きい場合、 2つの分布は異なります。
または、p-value
を有意水準a、通常a = 0.05または0.01(aが低いほど重要です)。 p値がaよりも低い場合、2つの分布が異なる可能性が非常に高くなります。
これはscipyのドキュメントが言うことです:
K-S統計が小さい場合、またはp値が高い場合、2つのサンプルの分布が同じであるという仮説を棄却できません。
拒否できないということは、確認するという意味ではありません。