Чи-квадрат теста в Python

Я хочу запустить chi-squared test в Python. Я создал код, чтобы сделать это, но я не знаю, правильно ли я делаю, потому что scipy docs довольно редки.

Предыстория: у меня две группы пользователей. Моя нулевая гипотеза заключается в том, что нет существенной разницы в том, имеют ли люди в любой группе больше возможностей использовать настольные, мобильные или планшеты.

Это наблюдаемые частоты в двух группах:

[[u'desktop', 14452], [u'mobile', 4073], [u'tablet', 4287]]
[[u'desktop', 30864], [u'mobile', 11439], [u'tablet', 9887]]

Вот мой код, используя scipy.stats.chi2_contingency:

obs = np.array([[14452, 4073, 4287], [30864, 11439, 9887]])
chi2, p, dof, expected = stats.chi2_contingency(obs)
print p

Это дает мне p-значение 2.02258737401e-38, что явно имеет значение.

Мой вопрос: действительно ли этот код действителен? В частности, я не уверен, следует ли использовать scipy.stats.chi2_contingency или scipy.stats.chisquare, учитывая данные, которые у меня есть.

Ответ 1

Вы используете chi2_contingency правильно. Если вы не уверены в правильном использовании теста с квадратным квадратом или как интерпретировать его результат (т.е. Ваш вопрос касается статистического тестирования, а не кодирования), попросите его об этом на сайте "CrossValidated": https://stats.stackexchange.com/

Ответ 2

Я не могу слишком много комментировать использование этой функции. Однако данный вопрос может носить статистический характер. Очень небольшое значение p, которое вы видите, скорее всего является результатом ваших данных, содержащих большие частоты (порядка десяти тысяч). Когда размеры выборки слишком велики, любые различия станут значительными - следовательно, небольшое значение p. Те тесты, которые вы используете, очень чувствительны к размеру выборки. Подробнее см. здесь.