Прежде всего, позвольте мне заметить, что предоставленный вами фрагмент исходного кода не включает в себя тест Колмогорова-Смирнова, вместо этого он выполняет параметрическую оценку MLE, а затем вычисляет сумму квадратов ошибок для выбора наилучшего соответствия.
Чтобы ответить на ваш первый вопрос, я приведу пример критерия пригодности по Колмогорову-Смирнову для нормального распределения в scipy.stats:
stats.kstest(samples, 'norm', args=(0, 1))
, где
- образцы - собранные / наблюдаемые экспериментальные данные
- 'норма' - предварительно определенное название теоретического непрерывного распределения
- args - параметры теоретического распределения, в примере среднее = 0и std = 1
Таким образом, чтобы выполнить тест с другими дистрибутивами, нужно просто перебрать требуемые теоретические имена и их параметры так же, как для нормального распределения в приведенном выше примере.
Функция stats.kstest возвращает два значения:
- D - статистика KS
- pvalue - p-значение для нулевой гипотезы о том, что выборки были взяты из предоставленного теоретического распределения
Таким образом, чтобы ответить на ваш второй вопрос, вам следует отказаться от теста, если p-значение меньше вашегозначение значимости.В случае, если нулевая гипотеза не может быть отвергнута, вы можете сравнить значения D и выбрать распределение с наименьшим значением D, поскольку оно означает соответствие качества: чем меньше значение D, тем лучше оно соответствует данным.