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:
- 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.
- Vytvoření tabulky kontingence s pozorovanými frekvencemi.
- Výpočet očekávaných frekvencí pro každou buňku tabulky za předpokladu platnosti $H_0$.
- 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.
- Určení počtu stupňů volnosti ($df$). Pro tabulku kontingence $R \times C$ ($R$ řádků, $C$ sloupců): $df = (R-1)(C-1)$.
- 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.")