Подтвердить что ты не робот

Тест с двумя образцами Колмогорова-Смирнова в Python Scipy

Я не могу понять, как выполнить тест с двумя образцами KS в Scipy.

После прочтения документации 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

Есть ли способ выполнить двухпробочный тест KS в Python? Если да, как мне это сделать?

Благодарим вас в Advance

4b9b3361

Ответ 1

Вы используете однократный тест 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. Вы можете сравнить statistic значение, заданное python, с таблицей критических значений KS-теста в соответствии с размером вашей выборки. Когда statistic значение выше критического значения, эти два распределения различаются.

  2. Или вы можете сравнить значение p-value с уровнем значимости а, обычно а = 0,05 или 0,01 (вы решаете, чем ниже а, тем значительнее). Если значение p меньше, чем a, то весьма вероятно, что эти два распределения различны.

Ответ 2

Это то, что говорят scipy docs:

Если статистика K-S мала или p-значение велико, то мы не можем отвергнуть гипотезу о том, что распределения двух образцов одинаковы.

Нельзя отклонить, это не значит, что мы подтверждаем.