Собесов

Сценарий: chi-square тест независимости — где применяется

Статистика и теорверHypothesis testingСредняяMiddle

Условие

Хочу проверить, связаны ли «способ оплаты» (карта/СБП/cash) и «купил повторно в течение 30 дней (да/нет)». Какой тест?

Решение

Chi-square test of independence

Для категориальных переменных. Проверяет:

H_0: переменные независимы (P(A, B) = P(A)·P(B))
H_1: зависимы

Таблица сопряжённости

Купил Не купил
Карта 800 1200
СБП 500 500
Cash 100 900

Вычисление

Expected frequency для ячейки (i, j):

E_ij = row_total_i × col_total_j / grand_total

Например, expected «Карта × Купил»:

E = 2000 × 1400 / 4000 = 700
Observed = 800

Chi-square statistic:

χ² = Σ (O - E)² / E
import numpy as np
from scipy.stats import chi2_contingency
 
table = np.array([[800, 1200], [500, 500], [100, 900]])
chi2, p, dof, expected = chi2_contingency(table)

dof = (rows - 1) × (cols - 1) = 2 × 1 = 2.

Effect size

Cramér's V = sqrt(χ² / (n × min(rows-1, cols-1)))
  • < 0.1 — слабая связь.
  • 0.1-0.3 — средняя.
  • 0.3 — сильная.

Условия применимости

  1. Independent observations.
  2. Expected count ≥ 5 в каждой ячейке. На малых частотах — Fisher exact test.
  3. Categorical data (не ordinal).
from scipy.stats import fisher_exact
# Только для 2×2 таблиц
odds_ratio, p = fisher_exact([[5, 95], [10, 90]])

Goodness-of-fit (отдельный chi²)

Проверка соответствия одной выборки известному распределению:

from scipy.stats import chisquare
chisquare(observed, expected)

Применение: «доли каналов acquisition не сместились с прошлого месяца?»

Post-hoc

Если χ² значимый, не известно какие ячейки отличаются. Standardised residuals:

r_ij = (O_ij - E_ij) / sqrt(E_ij)
|r| > 2  — ячейка «отклонена»

Подводные камни

  1. Большая выборка даёт significant p даже при тривиальной разнице. Effect size (Cramér's V) важнее p.
  2. Expected ≥ 5 — нарушение даёт неверный p. Fisher exact или объединение категорий.
  3. Тест на independence — не тест на «какая категория лучше». Это смежная задача.
  4. Continuity correction Yates для 2×2 — снижает Type I error при малых выборках.
  5. Ordinal data: Mann-Whitney или ordinal logistic, не chi².

Эталонный ответ

Chi-square test independence: χ² = Σ(O−E)²/E, dof=(r-1)(c-1). Применяется для категориальных переменных. Условие: expected ≥ 5. Effect size — Cramér's V. На малых выборках — Fisher exact.

Хочешь увидеть разбор?

Зарегистрируйся бесплатно — откроется развёрнутое решение этой задачи и ещё 4 на выбор.

Зарегистрироваться и увидеть разбор
Уже есть аккаунт? Войти