gpt4 book ai didi

python - Python Scipy 中的两个样本 Kolmogorov-Smirnov 测试

转载 作者:IT老高 更新时间:2023-10-28 20:22:18 25 4
gpt4 key购买 nike

我不知道如何在 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)

结果可以解释如下:

  1. 您可以根据您的样本大小将 python 给出的 statistic 值与 KS-test critical value table 进行比较。当statistic值高于临界值时,两种分布不同。

  2. 或者您可以将 p-value 与显着性水平 a 进行比较,通常 a=0.05 或 0.01(您决定,a 越低,越显着)。如果p值低于a,那么这两个分布很可能不同。

关于python - Python Scipy 中的两个样本 Kolmogorov-Smirnov 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10884668/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com