Как рассчитать критическое значение хи-квадрат, используя Python - PullRequest
0 голосов
/ 27 февраля 2020

Я знаю, что есть функция с именем chi2.isf в scipy.stats. Таким образом, мы можем вычислить критический хи-квадрат, вызвав эту функцию с записью параметров степени свободы и уровня значимости.

Пример:

from scipy.stats import chi2

print(chi2.isf(df=15, q=0.05))

Вывод :

24.99579013972863

Однако я хочу вычислить критическое значение хи-квадрат, которое было описано на веб-сайте ниже.

Источник: https://www.danielsoper.com/statcalc/formulas.aspx?id=12

Пока я пытался преобразовать формулы в Python коды, я написал следующие коды:

from numpy import e, inf
from scipy.integrate import quad


def lower_incomplete_gamma_function(s: float = .0, x: float = .0):
    return quad(lambda t: (t ** (s - 1)) * (e ** (-t)), 0, x)[0]


def gamma_function(z: float = .0):
    return quad(lambda t: (t ** (z - 1)) * (e ** (-t)), 0, inf)[0]

Что мне интересно, как я могу преобразовать F(x; k) в Python коды, а затем можно найти критическое значение хи-квадрат? Какому шагу я должен следовать после последнего шага? Можете ли вы помочь мне, пожалуйста?

Заранее спасибо.

1 Ответ

0 голосов
/ 23 марта 2020

Дело в том, что на самом деле это не код chi2.isf. Ссылаясь на документацию scipy, isf является инвертированной версией sf и может быть выражено как ppf(1-alpha), что, в свою очередь, является инвертированной cdf функцией. cdf можно рассматривать как низшую гамму, тогда как в scipy нижняя гамма уже содержит деление по гамме, поэтому ваш вывод выглядит скорее как cdf до 14-го ди git. Следовательно, для вычисления критического значения хи-квадрат вы должны использовать инвертированную нижнюю неполную гамма-функцию, например:

isf = 2 * scipy.special.gammaincinv(k/2, 1-x).

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