Sobes.tech
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:

  1. 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.
  2. Vytvorenie tabuľky kontingenčných s pozorovanými frekvenciami.
  3. Výpočet očakávaných frekvencií pre každú bunku tabuľky za predpokladu platnosti $H_0$.
  4. 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.
  5. 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)$.
  6. 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.")