Как я могу обойти разрыв р-значений по сравнению с KS statisti c, который я нахожу в scipy.statistics.ks_2samp? - PullRequest
0 голосов
/ 27 апреля 2020

Является ли нормальным, что значения p, возвращаемые scipy.statistics.ks_2samp, изменяются так быстро с помощью статистики теста KS c?

В приведенном ниже примере я генерирую 2 случайных равномерных [0-1] распределения разных размеров. Естественно, тест KS не возвращает низкое значение p, но вместо этого p = 1. Я был удивлен p-значением ровно единства.

Итак, я добавил случайное число к первому образцу и повторил свои тесты KS со вторым образцом. И хотя смещение 0,037 к первому образцу все еще приводило к значению p, равному единице, смещение 0,038 приводило к значению p ниже 0,2%. См. Ниже.

Я проверил это на другом компьютерном языке ( SM , он же SuperMon go), используя точно такие же значения для y1 и y2, и он нашел довольно близкое значение p- значение для сдвига 0,038 (0,00172 вместо 0,00183), оно также находит разумную непрерывность в p-значениях для меньших сдвигов, а сдвиг, равный 0,021, дает значение p <0,05. </p>

Может ли это можно обойти разрыв в scipy.statistics.ks_2samp p-значениях?

import numpy as np
from scipy import stats
>>> np.random.seed(123)
>>> y1 = np.random.random(5000)
>>> y2 = np.random.random(1000)
>>> stats.ks_2samp(y1,y2)
Ks_2sampResult(statistic=0.0282, pvalue=1.0)
>>> for n in range(11):
...     fac = 0.03+n/1000
...     s,p = stats.ks_2samp(y1+fac,y2)
...     print(fac,s,p)
...
0.03 0.056 1.0
0.031 0.0568 1.0
0.032 0.0582 1.0
0.033 0.0594 1.0
0.034 0.061 1.0
0.034999999999999996 0.062 1.0
0.036 0.0626 1.0
0.037 0.0632 1.0
0.038 0.0648 0.0018266842876704021
0.039 0.066 0.001406216070724179
0.04 0.0668 0.0011780208595509767
...