Wat is de G-test?
sobes.tech AI
Antwoord van AI
De G-test (of G-test, χ²-test van de likelihood-ratio) is een statistische test die wordt gebruikt om hypothesen over de verdeling van frequenties in categorische gegevens te controleren. In de context van QA kan het worden toegepast om de verdelingen van defecten per categorie (bijvoorbeeld type, prioriteit) te vergelijken in verschillende productbuilds, testomgevingen of bij het vergelijken van resultaten van twee verschillende testbenaderingen, om te bepalen of er een statistisch significant verschil bestaat. Het is een alternatief voor de Pearson χ²-test, vooral nuttig bij kleine steekproeven.
Belangrijkste stappen:
- Formulering van de nul ($H_0$) en alternatieve ($H_1$) hypothesen.
- $H_0$: Er is geen statistisch significant verschil in de verdeling van frequenties tussen de onderzochte groepen.
- $H_1$: Er is een statistisch significant verschil.
- Opstellen van een kruistabel met de waargenomen frequenties.
- Berekening van de verwachte frequenties voor elke cel onder de hypothese $H_0$.
- Berekening van de G-waarde volgens de formule: $G = 2 \sum_{i} O_i \ln(O_i/E_i)$ waarbij $O_i$ de waargenomen frequentie is en $E_i$ de verwachte frequentie.
- Bepaling van het aantal vrijheidsgraden ($df$). Voor een kruistabel $R \times C$ ($R$ rijen, $C$ kolommen): $df = (R-1)(C-1)$.
- Vergelijking van de berekende G-waarde met de kritieke waarde uit de G-verdeling of gebruik van de p-waarde. Als G > kritieke waarde of p < significantieniveau ($\alpha$), wordt $H_0$ verworpen.
Voorbeeld van toepassing in QA:
Vergelijking van de verdeling van defecttypes in twee verschillende testomgevingen.
| Defecttype | Omgeving A (Waargenomen) | Omgeving B (Waargenomen) |
|---|---|---|
| Functioneel | 50 | 30 |
| UI/UX | 20 | 15 |
| Prestaties | 10 | 5 |
| Totaal | 80 | 50 |
Vervolgens worden de verwachte frequenties en de G-waarde berekend.
Tools voor berekeningen:
- Python: bibliotheken
scipy.stats. - R: ingebouwde functies.
- Statistische pakketten: SPSS, R, SAS.
# Voorbeeld van gebruik in Python met scipy
import numpy as np
from scipy.stats import chi2_contingency # De G-test is geïmplementeerd in chi2_contingency in scipy via de parameter lambda='log-likelihood'
# Tabel met waargenomen frequenties (voorbeeldgegevens)
observed = np.array([[50, 30],
[20, 15],
[10, 5]])
# Uitvoeren van de G-test
# lambda='log-likelihood' geeft aan dat de G-test wordt gebruikt
g_statistic, p_value, dof, expected = chi2_contingency(observed, lambda_='log-likelihood')
print(f"G-statistiek: {g_statistic:.4f}")
print(f"p-waarde: {p_value:.4f}")
print(f"Vrijheidsgraden (dof): {dof}")
print("Verwachte frequenties:")
print(expected)
# Hypothese testen op significantieniveau 0.05
alpha = 0.05
if p_value < alpha:
print("Resultaat: We verwerpen de nulhypothese - er is een statistisch significant verschil.")
else:
print("Resultaat: We verwerpen de nulhypothese niet - er is geen statistisch significant verschil.")