我正在尝试执行两个样本的 Kolmogorov-Smirnov 检验,以检查两个样本是否来自同一群体。这是重现我的问题的代码:
from scipy.stats import ks_2samp
import numpy as np
x = list(np.random.normal(10, 1, 3000))
y = list(np.random.normal(12, 1, 2000))
d_statistic, p_value = ks_2samp(x, y)
使用 1.3 之前的 scipy 版本,我得到以下结果: d_statistic = 0.67317 和 p_value = 0.0
但是对于 scipy 版本 >= 1.3:d_statistic = 0.6705 和 p_value = 0.9904774590824749
两者都给出几乎相同的 d_statistic 但最新版本的 scipy 似乎给了我一个错误的 p_value 我不明白为什么。实际上,x 和 y 显然是两个样本,它们并非来自同一群体。
我做了一些研究,因为 scipy==1.3 发布了“精确”模式,并且是小样本的默认模式(len(x), len(y) <= 10000 这是我的情况)。但是,如果我将模式从 'exact' 更改为 'asymp',我得到的结果与我从最旧的 scipy 版本中得到的结果相同。
d_statistic, p_value = ks_2samp(x, y, mode='asymp')
计算 p_value 时“精确”模式是否存在问题,还是我遗漏了什么?
感谢您的帮助,h1t5uj1