Sobes.tech
Middle+

Шта је тест G?

sobes.tech АИ

Одговор од АИ

G-test (или G-тест, χ²-тест на съотношение на вероятностите) е статистички тест, използван за проверка на хипотези относно разпределението на честотите в категориални данни. В контекста на QA може да се използва за сравняване на разпределенията на дефекти по категории (например тип, приоритет) в различни версии на продукта, тестови среди или при сравняване на резултатите от два различни подхода към тестването, за да се определи дали съществува статистически значима разлика. Той е алтернатива на теста χ² на Пирсън, особено полезен при работа с малки проби.

Основни стъпки:

  1. Формулиране на нулева ($H_0$) и алтернативна ($H_1$) хипотеза.
    • $H_0$: Няма статистически значима разлика в разпределението на честотите между анализираните групи.
    • $H_1$: Има статистически значима разлика.
  2. Създаване на таблица на съвместната честота с наблюдаваните стойности.
  3. Изчисляване на очакваните честоти за всяка клетка при условие, че $H_0$ е вярна.
  4. Изчисляване на G-статистиката по формулата: $G = 2 \sum_{i} O_i \ln(O_i/E_i)$ където $O_i$ е наблюдаваната честота, а $E_i$ е очакваната честота.
  5. Определяне на броя на степените свобода ($df$). За таблица $R \times C$ ($R$ реда, $C$ колони): $df = (R-1)(C-1)$.
  6. Сравняване на изчислената стойност 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("Резултат: Не отхвърляме нулевата хипотеза - няма статистически значима разлика.")