Помогите, пожалуйста, отладить мою библиотеку scipy для теста Колмогорова-Смирнова - PullRequest
0 голосов
/ 10 июня 2019

Я выполняю задание, но не могу получить правильные результаты теста Колмогорова-Смирнова для небольшой выборки наблюдений с нормальным распределением.

Я установил минимальную выборку в блокноте Юпитера сожидал результатов kstest, пытался запустить его в нескольких средах и часами проверял вызов.Ключ ответа говорит, что мои ks_value и p_value совершенно неверны.

Но я не вижу свою ошибку.

  • образец, который я получил, взят из тестового прогона в ключе ответа,это массив 1d, допустимая опция ввода.

  • среднее значение выборки и стандартное отклонение, которое я вычисляю, выглядело правильно

  • если я изменяю ddof, то это делаетнебольшая разница (намек на использование ddof = 0)

  • норма - допустимый дистрибутив для библиотеки kstest

  • Документация находится на https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.stats.kstest.html#scipy-stats-kstest

Есть идеи или комментарии?Ожидаете ли вы, что выборка = [0,37, 0,27, 0,69, 0,56, 0,26] по сравнению с нормальным распределением будет иметь

  • 'KS test статистику' 0,64 или 0,24

и

  • p-значение 0,02 или 0,94

TIA

import pandas as pd
import numpy as np
from scipy.stats import kstest

sample = [0.37, 0.27, 0.69, 0.56, 0.26]
normal_args = (np.mean(sample), np.std(sample, ddof=0))
print('mean', normal_args[0])
print('std', normal_args[1])

ks_value, p_value = kstest(sample, 'norm', normal_args )

print('ks_value', ks_value)
print('p_value', p_value)
print('')
print('#####posted solution')
print('expected ks_value = 0.63919407')
print('expected p_value =  0.01650327')

mean 0.43000000000000005
std 0.1688786546606764
ks_value 0.23881183701141995
p_value 0.9379686201081335

####posted solution
expected ks_value = 0.63919407
expected p_value =  0.01650327

1 Ответ

0 голосов
/ 11 июня 2019

Мой плохой.Ошибка нового парня.

Вызов функции определяет третий аргумент как "args = ()".Я поставил 3-й аргумент, рассматривая ввод как позиционный.Изменение вызова на

ks_value, p_value = kstest(sample, 'norm', args=(normal_args) )  

дает правильный ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...