Я пытаюсь выполнить тест Колмогорова-Смирнова с двумя выборками, чтобы проверить, происходят ли две выборки из одной и той же популяции. Вот код для воспроизведения моей проблемы:
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)
С scipy версиями старше 1.3 я получаю следующие результаты: d_statisti c = 0.67317 и p_value = 0.0
Однако с scipy версии> = 1.3: d_statisti c = 0.6705 и p_value = 0.9904774590824749
Оба дают почти одинаковый d_statisti c, но самые последние версии scipy, похоже, дают мне неправильное p_value, и я не понимаю, почему . Действительно, x и y - это две выборки, которые не принадлежат одной и той же совокупности.
Я провел небольшое исследование, и, поскольку scipy == 1.3 был выпущен «точный» режим, он является режимом по умолчанию для небольших выборок (len (x), len (y) <= 10000, что и в моем случае). Однако, если я изменю режим с «точного» на «асимптотический», я получу те же результаты, что и в самых старых версиях scipy. </p>
d_statistic, p_value = ks_2samp(x, y, mode='asymp')
Есть ли проблема с «точным» режимом при вычислении p_value или я что-то упустил?
Спасибо за вашу помощь, h1t5uj1