Sobes.tech
Middle+

Co je to test G?

sobes.tech AI

Odpověď od AI

Test G (nebo G-test, χ²-test pravděpodobnostního poměru) je statistický test používaný k ověření hypotéz o rozdělení frekvencí v kategorických datech. V kontextu QA může být použit pro srovnání rozdělení vad podle kategorií (například typu, priority) v různých sestaveních produktu, testovacích prostředích nebo při srovnání výsledků dvou různých přístupů k testování, aby se zjistilo, zda existuje statisticky významný rozdíl. Je alternativou k Pearsonově χ²-testu, zvláště užitečný při práci s malými vzorky.

Hlavní kroky:

  1. Formulace nulové ($H_0$) a alternativní ($H_1$) hypotézy.
    • $H_0$: Neexistuje statisticky významný rozdíl v rozdělení frekvencí mezi analyzovanými skupinami.
    • $H_1$: Existuje statisticky významný rozdíl.
  2. Vytvoření tabulky kontingence s pozorovanými frekvencemi.
  3. Výpočet očekávaných frekvencí pro každou buňku tabulky za předpokladu platnosti $H_0$.
  4. Výpočet G-statistiky podle vzorce: $G = 2 \sum_{i} O_i \ln(O_i/E_i)$ kde $O_i$ je pozorovaná frekvence, $E_i$ je očekávaná frekvence.
  5. Určení počtu stupňů volnosti ($df$). Pro tabulku kontingence $R \times C$ ($R$ řádků, $C$ sloupců): $df = (R-1)(C-1)$.
  6. Porovnání vypočtené hodnoty G s kritickou hodnotou z tabulky G-distribuce nebo použití p-hodnoty. Pokud G > kritická hodnota nebo p < hladina významnosti ($\alpha$), $H_0$ se zamítá.

Příklad použití v QA:

Porovnání rozdělení typů vad ve dvou různých testovacích prostředích.

Typ vady Prostředí A (Pozorované) Prostředí B (Pozorované)
Funkční 50 30
UI/UX 20 15
Výkon 10 5
Celkem 80 50

Dále se vypočítají očekávané frekvence a hodnota G.

Nástroje pro výpočet:

  • Python: knihovny scipy.stats.
  • R: vestavěné funkce.
  • Statistické balíky: SPSS, R, SAS.
# Příklad použití v Pythonu se scipy
import numpy as np
from scipy.stats import chi2_contingency # G-test je implementován v chi2_contingency v scipy přes parametr lambda='log-likelihood'

# Tabulka pozorovaných frekvencí (příklad dat)
observed = np.array([[50, 30],
                     [20, 15],
                     [10,  5]])

# Provádění G-testu
# lambda='log-likelihood' označuje použití G-testu
g_statistic, p_value, dof, expected = chi2_contingency(observed, lambda_='log-likelihood')

print(f"G-statistika: {g_statistic:.4f}")
print(f"P-hodnota: {p_value:.4f}")
print(f"Stupně volnosti (dof): {dof}")
print("Očekávané frekvence:")
print(expected)

# Testování hypotézy na úrovni významnosti 0.05
alpha = 0.05
if p_value < alpha:
    print("Výsledek: Zamítáme nulovou hypotézu - existuje statisticky významný rozdíl.")
else:
    print("Výsledek: Není důvod zamítnout nulovou hypotézu - není statisticky významný rozdíl.")