Я пытаюсь запустить тест KS на некоторых данных.Теперь у меня есть работающий код, но я не уверен, что понял, что происходит, и я также получаю сообщение об ошибке при попытке установить loc.По сути, я получаю значение KS и P-test.Но я не уверен, что полностью понял, достаточно, чтобы использовать результат.
Я использую найденный модуль scipy.stats.ks_2samp здесь .
Этоэто код, который я запускаю
from scipy import stats
np.random.seed(12345678) #fix random seed to get the same result
n1 = len(low_ni_sample) # size of first sample
n2 = len(high_ni_sample) # size of second sample
# Scale is standard deviation
scale = 3
rvs1 = stats.norm.rvs(low_ni_sample[:,0], size=n1, scale=scale)
rvs2 = stats.norm.rvs(high_ni_sample[:,0], size=n2, scale=scale)
ksresult = stats.ks_2samp(rvs1, rvs2)
ks_val = ksresult[0]
p_val = ksresult[1]
print('K-S Statistics ' + str(ks_val))
print('P-value ' + str(p_val))
, который дает это:
K-S Statistics 0.04507948306145837
P-value 0.8362207851676332
Теперь для тех примеров, которые я видел, loc добавляется как:
rvs1 = stats.norm.rvs(low_ni_sample[:,0], size=n1, loc=0., scale=scale)
rvs2 = stats.norm.rvs(high_ni_sample[:,0], size=n2, loc=0.5, scale=scale)
Однако, если я сделаю это, я получу эту ошибку:
Traceback (most recent call last):
File "<ipython-input-342-aa890a947919>", line 13, in <module>
rvs1 = stats.norm.rvs(low_ni_sample[:,0], size=n1, loc=0., scale=scale)
File "/home/kongstad/anaconda3/envs/tensorflow/lib/python3.6/site-packages/scipy/stats/_distn_infrastructure.py", line 937, in rvs
args, loc, scale, size = self._parse_args_rvs(*args, **kwds)
TypeError: _parse_args_rvs() got multiple values for argument 'loc'
Вот снимок, показывающий содержимое двух используемых наборов данных.low_ni_sample, high_ni_sample.![enter image description here](https://i.stack.imgur.com/Urw7V.png)
Итак, мои вопросы:
- Почему я не могу добавить значение loc и что оно представляет?
- Изменениемасштаб значительно меняет результат, почему и что делать?
- Как бы я изобразил это так, чтобы это имело смысл?
После запуска предложения Сильмы я наткнулся на новую ошибку.
from scipy import stats
np.random.seed(12345678) #fix random seed to get the same result
n1 = len(low_ni_sample) # size of first sample
n2 = len(high_ni_sample) # size of second sample
# Scale is standard deviation
scale = 3
ndist = stats.norm(loc=0., scale=scale)
rvs1 = ndist.rvs(low_ni_sample[:,0],size=n1)
rvs2 = ndist.rvs(high_ni_sample[:,0],size=n2)
#rvs1 = stats.norm.rvs(low_ni_sample[:,2], size=n1, scale=scale)
#rvs2 = stats.norm.rvs(high_ni_sample[:,2], size=n2, scale=scale)
ksresult = stats.ks_2samp(rvs1, rvs2)
ks_val = ksresult[0]
p_val = ksresult[1]
print('K-S Statistics ' + str(ks_val))
print('P-value ' + str(p_val))
Сэто сообщение об ошибке
rvs1 = ndist.rvs(low_ni_sample[:,0],size=n1)
TypeError: rvs() got multiple values for argument 'size'