Sobes.tech
Middle+

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:

  1. 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.
  2. Tworzenie tabeli kontyngencji z obserwowanymi częstościami.
  3. Obliczanie oczekiwanych częstości dla każdej komórki tabeli na podstawie $H_0$.
  4. 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ść.
  5. Określenie liczby stopni swobody ($df$). Dla tabeli kontyngencji $R \times C$ ($R$ wierszy, $C$ kolumn): $df = (R-1)(C-1)$.
  6. 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.")