![](/img/trans.png)
[英]Two-sample Kolmogorov-Smirnov Test in Python Scipy on brain data
[英]Two-sample Kolmogorov-Smirnov Test in Python Scipy
我不知道如何在 Scipy 中進行兩樣本 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 時,我們不能拒絕兩個分布相同的原假設。
但是,我想比較兩個分布,看看我是否可以拒絕它們相同的零假設,例如:
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 中進行兩個樣本的 KS 測試? 如果是這樣,我應該怎么做?
先感謝您
您正在使用單樣本 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)
結果可以解釋如下:
您可以根據您的樣本大小將python給出的statistic
值與KS-test臨界值表進行比較。 當statistic
值高於臨界值時,兩種分布不同。
或者您可以將p-value
與顯着性水平a 進行比較,通常是 a=0.05 或 0.01(您決定,a 越低,越顯着)。 如果 p 值低於a ,則兩個分布很可能不同。
這就是 scipy 文檔所說的:
如果 KS 統計量很小或 p 值很高,那么我們不能拒絕兩個樣本的分布相同的假設。
不能拒絕不代表我們確認。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.