Какво е тест G?
sobes.tech AI
Отговор от 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-статистика, p-стойност, dof, очаквани = 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("Резултат: Не отхвърляме нулевата хипотеза - няма статистически значима разлика.")