Соотношение между непредвиденными значениями критерия хи-квадрат с различными значениями p в Python - PullRequest
0 голосов
/ 19 февраля 2020

Я нашел различные методы проведения теста хи-квадрат для A / B-тестирования, сравнивая пользователей с коэффициентом конверсии контрольной и тестовой группы.

Первый метод использует statsmodels и использует proportions_chisquare

Второй метод использует scipy и chi2_contingency

Кажется, что chi2_contingency всегда имеет более высокое значение, чем пропорции. Любая идея для различия и какой тест более применим для простого A / B теста?

Я прошу прощения за то, что не включил пример, приведенный ниже:

Example1 (p-value = 0.037 ):

import statsmodels.stats.proportion as proportion
import numpy as np

conv_a = 20
conv_b = 35
clicks_a = 500
clicks_b = 500
converted = np.array([conv_a, conv_b])
clicks = np.array([clicks_a,clicks_b])

chisq, pvalue, table = proportion.proportions_chisquare(converted, clicks)
print('Results are ','chisq =%.3f, pvalue = %.3f'%(chisq, pvalue))

Пример 2 (значение p = 0,0521):

import numpy
import scipy.stats

control_size = 500
A_CONVERSIONS = 20
A_NO_CONVERSIONS= control_size - A_CONVERSIONS
test_size = 500
B_CONVERSIONS = 35
B_NO_CONVERSIONS = test_size - B_CONVERSIONS

data = numpy.array([[A_NO_CONVERSIONS, A_CONVERSIONS],
                    [B_NO_CONVERSIONS, B_CONVERSIONS]])

chi_square, p_value = scipy.stats.chi2_contingency(data)[:2]

print('χ²: %.4f' % chi_square)
print('p-value: %.4f' % p_value)

1 Ответ

1 голос
/ 19 февраля 2020

В дополнение к моему комментарию выше приведен воспроизводимый минимальный пример, показывающий использование proportions_chisquare из statsmodels и chi2_contingency из scipy. Как и ожидалось, результаты совпадают.

Давайте сгенерируем некоторые данные образца; данные взяты из Fleiss JL, Статистические методы для норм и пропорций, Нью-Йорк: John Wiley & Sons (1981).

import pandas as pd
data = pd.DataFrame({
    "Smokers": [83, 90, 129, 70],
    "Patients": [86, 93, 136, 82]
})

Результаты обоих тестов приведены ниже

import statsmodels.stats.proportion as ssp
(chi2, p, arr) = ssp.proportions_chisquare(count = data.Smokers, nobs = data.sum(axis = 1))
"chi2 = %4.2f, p-value = %4.3f" % (chi2, p)
#'chi2 = 0.42, p-value = 0.936'


import scipy.stats as ss
(chi2, p, df, arr) = ss.chi2_contingency(data, correction = False)
"chi2 = %4.2f, p-value = %4.3f" % (chi2, p)
#'chi2 = 0.42, p-value = 0.936'

Что касается разницы между тестом хи-квадрат и z-тестом (тестом равных пропорций), я имею в виду превосходный пост о перекрестной проверке .

...