在Python Scipy中的双样本Kolmogorov-Smirnovtesting

我无法弄清楚如何在Scipy中进行双样本KStesting。

在阅读文档scipy kstest之后

我可以看到如何testing分布与标准正态分布相同的情况

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) 

并testingx和z是否相同

我试过这个天真的人:

 test_stat = kstest(x, z) 

并得到以下错误:

 TypeError: 'numpy.ndarray' object is not callable 

有没有办法在Python中做两样本KStesting? 如果是的话,我该怎么做呢?

先谢谢你

你正在使用单样本KStesting。 你可能想要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) 

这是scipy文档说:

如果KS统计量小或p值高,那么我们不能拒绝两个样本分布相同的假设。

不能拒绝并不意味着我们确认。