Middle+
Čo je test G?
sobes.tech AI
Odpoveď od AI
G-test (alebo G-test, χ²-test pomeru pravdepodobností) je štatistický test používaný na overenie hypotéz o rozdelení frekvencií v kategóriových dátach. V kontexte QA môže byť použitý na porovnanie rozdelení chýb podľa kategórií (napríklad typu, priority) v rôznych verziách produktu, testovacích prostrediach alebo pri porovnaní výsledkov dvoch rôznych prístupov k testovaniu, aby sa zistilo, či existuje štatisticky významný rozdiel. Je alternatívou k Pearsonovmu χ²-testu, obzvlášť užitočný pri práci s malými vzorkami.
Hlavné kroky:
- Formulácia nulovej ($H_0$) a alternatívnej ($H_1$) hypotézy.
- $H_0$: Neexistuje štatisticky významný rozdiel v rozdelení frekvencií medzi analyzovanými skupinami.
- $H_1$: Existuje štatisticky významný rozdiel.
- Vytvorenie tabuľky kontingenčných s pozorovanými frekvenciami.
- Výpočet očakávaných frekvencií pre každú bunku tabuľky za predpokladu platnosti $H_0$.
- Výpočet G-statistiky podľa vzorca: $G = 2 \sum_{i} O_i \ln(O_i/E_i)$ kde $O_i$ je pozorovaná frekvencia, $E_i$ je očakávaná frekvencia.
- Určenie počtu stupňov voľnosti ($df$). Pre tabuľku $R \times C$ ($R$ riadkov, $C$ stĺpcov): $df = (R-1)(C-1)$.
- Porovnanie vypočítanej hodnoty G s kritickou hodnotou z tabuľky G-distribúcie alebo použitie p-hodnoty. Ak G > kritická hodnota alebo p < hladina významnosti ($\alpha$), $H_0$ sa zamieta.
Príklad použitia v QA:
Porovnanie rozdelenia typov chýb v dvoch rôznych testovacích prostrediach.
| Typ chyby | Prostredie A (Pozorované) | Prostredie B (Pozorované) |
|---|---|---|
| Funkčné | 50 | 30 |
| UI/UX | 20 | 15 |
| Výkon | 10 | 5 |
| Spolu | 80 | 50 |
Následne sa vypočítajú očakávané frekvencie a hodnota G.
Nástroje na výpočet:
- Python: knižnice
scipy.stats. - R: zabudované funkcie.
- Štatistické balíky: SPSS, R, SAS.
# Príklad použitia v Pythone so scipy
import numpy as np
from scipy.stats import chi2_contingency # G-test je implementovaný v chi2_contingency v scipy cez parameter lambda='log-likelihood'
# Tabuľka pozorovaných frekvencií (príkladové údaje)
observed = np.array([[50, 30],
[20, 15],
[10, 5]])
# Vykonanie G-testu
# lambda='log-likelihood' označuje použitie 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"Stupne voľnosti (dof): {dof}")
print("Očakávané frekvencie:")
print(expected)
# Testovanie hypotézy na úrovni významnosti 0.05
alpha = 0.05
if p_value < alpha:
print("Výsledok: Zamietame nulovú hypotézu - existuje štatisticky významný rozdiel.")
else:
print("Výsledok: Nezamietame nulovú hypotézu - nie je štatisticky významný rozdiel.")