Kas yra G testas?
sobes.tech AI
Atsakymas iš AI
G-testas (arba G-testas, χ²-testas tikėjimo santykio) yra statistinis testas, naudojamas hipotezių patikrinimui apie dažnių pasiskirstymą kategoriniuose duomenyse. QA kontekste jis gali būti naudojamas palyginti defektų pasiskirstymą pagal kategorijas (pvz., tipą, prioritetą) skirtinguose produkto rinkiniuose, testavimo aplinkose arba lyginant dviejų skirtingų testavimo metodų rezultatus, siekiant nustatyti, ar yra statistiškai reikšmingas skirtumas. Jis yra alternatyva Pearson χ²-testui, ypač naudinga mažų imčių atvejais.
Pagrindiniai žingsniai:
- Nulinės ($H_0$) ir alternatyvios ($H_1$) hipotezės formulavimas.
- $H_0$: Nėra statistiškai reikšmingo skirtumo dažnių pasiskirstyme tarp analizuojamų grupių.
- $H_1$: Yra statistiškai reikšmingas skirtumas.
- Sudaromas kryžminis lentelės su stebimomis dažnių reikšmėmis sudarymas.
- Apskaičiuojamos tikėtinos dažnių reikšmės kiekvienai langelio reikšmei, jei $H_0$ yra teisinga.
- Apskaičiuojama G-statistika pagal formulę: $G = 2 \sum_{i} O_i \ln(O_i/E_i)$ kur $O_i$ yra stebima dažnio reikšmė, $E_i$ – tikėtina dažnio reikšmė.
- Nustatomas laisvės laipsnių skaičius ($df$). Už kryžminę lentelę su $R \times C$ ($R$ eilutės, $C$ stulpeliai): $df = (R-1)(C-1)$.
- Lyginama apskaičiuota G reikšmė su kritine reikšme iš G pasiskirstymo lentelės arba naudojama p-vertė. Jei G > kritinė reikšmė arba p < reikšmės lygis ($\alpha$), $H_0$ atmetama.
Pavyzdys taikant QA:
Lyginant defektų tipų pasiskirstymą dviejose skirtingose testavimo aplinkose:
| Defekto tipas | A aplinka (Stebima) | B aplinka (Stebima) |
|---|---|---|
| Funkcinis | 50 | 30 |
| UI/UX | 20 | 15 |
| Veikimo našumas | 10 | 5 |
| Iš viso | 80 | 50 |
Tada skaičiuojamos tikėtinos dažnių reikšmės ir G reikšmė.
Skaičiavimo įrankiai:
- Python:
scipy.statsbibliotekos. - R: įmontuotos funkcijos.
- Statistinės paketai: SPSS, R, SAS.
# Pavyzdys naudojant Python su scipy
import numpy as np
from scipy.stats import chi2_contingency # G-testas įgyvendintas scipy chi2_contingency funkcijoje su parametru lambda='log-likelihood'
# Stebimų dažnių lentelė (pavyzdiniai duomenys)
observed = np.array([[50, 30],
[20, 15],
[10, 5]])
# Vykdyti G-testą
# lambda='log-likelihood' nurodo G-testą
g_statistic, p_value, dof, expected = chi2_contingency(observed, lambda_='log-likelihood')
print(f"G-statistika: {g_statistic:.4f}")
print(f"P-vertė: {p_value:.4f}")
print(f"Laisvės laipsniai (dof): {dof}")
print("Tikėtinos dažnių reikšmės:")
print(expected)
# Hipotezės patikrinimas 0.05 reikšmingumo lygyje
alpha = 0.05
if p_value < alpha:
print("Rezultatas: Atmetame nulines hipotezes - yra statistiškai reikšmingas skirtumas.")
else:
print("Rezultatas: Nenurodome nulines hipotezes - nėra statistiškai reikšmingo skirtumo.")