Czym jest test G?
sobes.tech AI
Odpowiedź od AI
Test G (lub G-test, test χ² stosunku wiarygodności) jest statystycznym testem używanym do sprawdzania hipotez dotyczących rozkładu częstości w danych kategorialnych. W kontekście QA może być stosowany do porównywania rozkładów defektów według kategorii (np. typ, priorytet) w różnych wersjach produktu, środowiskach testowych lub przy porównywaniu wyników dwóch różnych podejść do testowania, aby ustalić, czy istnieje statystycznie istotna różnica. Jest to alternatywa dla testu χ² Pearsona, szczególnie przydatna przy małych próbkach.
Główne kroki:
- Formułowanie hipotez zerowej ($H_0$) i alternatywnej ($H_1$).
- $H_0$: Nie ma statystycznie istotnej różnicy w rozkładzie częstości między analizowanymi grupami.
- $H_1$: Istnieje statystycznie istotna różnica.
- Tworzenie tabeli kontyngencji z obserwowanymi częstościami.
- Obliczanie oczekiwanych częstości dla każdej komórki tabeli na podstawie $H_0$.
- Obliczanie statystyki G według wzoru: $G = 2 \sum_{i} O_i \ln(O_i/E_i)$ gdzie $O_i$ to obserwowana częstość, a $E_i$ oczekiwana częstość.
- Określenie liczby stopni swobody ($df$). Dla tabeli kontyngencji $R \times C$ ($R$ wierszy, $C$ kolumn): $df = (R-1)(C-1)$.
- Porównanie obliczonej wartości G z wartością krytyczną z rozkładu G lub użycie wartości p. Jeśli G > wartość krytyczna lub p < poziom istotności ($\alpha$), odrzuca się $H_0$.
Przykład zastosowania w QA:
Porównanie rozkładu typów defektów w dwóch różnych środowiskach testowych.
| Typ defektu | Środowisko A (Obserwowane) | Środowisko B (Obserwowane) |
|---|---|---|
| Funkcjonalny | 50 | 30 |
| UI/UX | 20 | 15 |
| Wydajność | 10 | 5 |
| Razem | 80 | 50 |
Następnie oblicza się oczekiwane częstości i wartość G.
Narzędzia do obliczeń:
- Python: biblioteki
scipy.stats. - R: funkcje wbudowane.
- Pakiety statystyczne: SPSS, R, SAS.
# Przykład użycia w Pythonie z scipy
import numpy as np
from scipy.stats import chi2_contingency # Test G jest zaimplementowany w chi2_contingency w scipy z parametrem lambda='log-likelihood'
# Tabela obserwowanych częstości (dane przykładowe)
observed = np.array([[50, 30],
[20, 15],
[10, 5]])
# Wykonanie testu G
# lambda='log-likelihood' wskazuje na użycie testu G
g_statistic, p_value, dof, expected = chi2_contingency(observed, lambda_='log-likelihood')
print(f"Statystyka G: {g_statistic:.4f}")
print(f"Wartość p: {p_value:.4f}")
print(f"Stopnie swobody (dof): {dof}")
print("Oczekiwane częstości:")
print(expected)
# Sprawdzenie hipotezy na poziomie istotności 0.05
alpha = 0.05
if p_value < alpha:
print("Wynik: Odmów hipotezy zerowej - istnieje statystycznie istotna różnica.")
else:
print("Wynik: Nie odrzucamy hipotezy zerowej - nie ma statystycznie istotnej różnicy.")