Что такое тест G?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Тест G (или G-тест, χ²-тест отношения правдоподобия) — это статистический тест, используемый для проверки гипотез о распределении частот в категориальных данных. В контексте QA может применяться для сравнения распределений дефектов по категориям (например, типу, приоритету) в различных сборках продукта, тестовых средах или при сравнении результатов двух различных подходов к тестированию, чтобы определить, существует ли статистически значимое различие. Он является альтернативой тесту хи-квадрат Пирсона, особенно полезен при работе с небольшими выборками.
Основные шаги:
- Формулирование нулевой ($H_0$) и альтернативной ($H_1$) гипотез.
- $H_0$: Нет статистически значимой разницы в распределении частот между анализируемыми группами.
- $H_1$: Существует статистически значимая разница.
- Построение таблицы сопряженности с наблюдаемыми частотами.
- Расчет ожидаемых частот для каждой ячейки таблицы при условии справедливости $H_0$.
- Расчет G-статистики по формуле: $G = 2 \sum_{i} O_i \ln(O_i/E_i)$ где $O_i$ - наблюдаемая частота, $E_i$ - ожидаемая частота.
- Определение числа степеней свободы ($df$). Для таблицы сопряженности $R \times C$ ($R$ строк, $C$ столбцов): $df = (R-1)(C-1)$.
- Сравнение рассчитанного значения G с критическим значением из таблицы G-распределения или использование p-значения. Если G > критического значения или p < уровня значимости ($\alpha$), $H_0$ отвергается.
Пример применения в QA:
Сравнение распределения типов дефектов в двух разных тестовых средах.
| Тип дефекта | Среда А (Наблюдаемое) | Среда Б (Наблюдаемое) |
|---|---|---|
| Функциональный | 50 | 30 |
| UI/UX | 20 | 15 |
| Производительность | 10 | 5 |
| Итого | 80 | 50 |
Далее рассчитываются ожидаемые частоты и значение G.
Инструменты для расчета:
- Python: библиотеки
scipy.stats. - R: встроенные функции.
- Статистические пакеты: SPSS, R, SAS.
# Пример использования в Python с scipy
import numpy as np
from scipy.stats import chi2_contingency # G-тест реализован в chi2_contingency в scipy через параметр lambda='log-likelihood'
# Таблица наблюдаемых частот (пример данных)
observed = np.array([[50, 30],
[20, 15],
[10, 5]])
# Выполнение G-теста
# lambda='log-likelihood' указывает на использование G-теста
g_statistic, p_value, dof, expected = chi2_contingency(observed, lambda_='log-likelihood')
print(f"G-статистика: {g_statistic:.4f}")
print(f"P-значение: {p_value:.4f}")
print(f"Степени свободы (dof): {dof}")
print("Ожидаемые частоты:")
print(expected)
# Проверка гипотезы при уровне значимости 0.05
alpha = 0.05
if p_value < alpha:
print("Результат: Отвергаем нулевую гипотезу - существует статистически значимая разница.")
else:
print("Результат: Не отвергаем нулевую гипотезу - нет статистически значимой разницы.")