Cos'è il test G?
sobes.tech AI
Risposta dell'AI
Il test G (o test G, test χ² di rapporto di verosimiglianza) è un test statistico utilizzato per verificare ipotesi sulla distribuzione delle frequenze in dati categorici. Nel contesto di QA, può essere applicato per confrontare le distribuzioni di difetti per categorie (ad esempio, tipo, priorità) in diverse compilazioni di prodotto, ambienti di test o confrontando i risultati di due approcci di test diversi, per determinare se esiste una differenza statisticamente significativa. È un'alternativa al test χ² di Pearson, particolarmente utile con campioni di piccole dimensioni.
Passaggi principali:
- Formulazione delle ipotesi nulla ($H_0$) e alternativa ($H_1$).
- $H_0$: Non c'è differenza statisticamente significativa nella distribuzione delle frequenze tra i gruppi analizzati.
- $H_1$: Esiste una differenza statisticamente significativa.
- Costruzione della tabella di contingenza con le frequenze osservate.
- Calcolo delle frequenze attese per ogni cella della tabella sotto l'ipotesi $H_0$.
- Calcolo della statistica G usando la formula: $G = 2 \sum_{i} O_i \ln(O_i/E_i)$ dove $O_i$ è la frequenza osservata, $E_i$ la frequenza attesa.
- Determinazione del numero di gradi di libertà ($df$). Per una tabella di contingenza $R \times C$ ($R$ righe, $C$ colonne): $df = (R-1)(C-1)$.
- Confronto del valore calcolato di G con il valore critico dalla distribuzione G o utilizzo del valore p. Se G > valore critico o p < livello di significatività ($\alpha$), si rifiuta $H_0$.
Esempio di applicazione in QA:
Confronto della distribuzione dei tipi di difetti in due ambienti di test diversi.
| Tipo di difetto | Ambiente A (Osservato) | Ambiente B (Osservato) |
|---|---|---|
| Funzionale | 50 | 30 |
| UI/UX | 20 | 15 |
| Prestazioni | 10 | 5 |
| Totale | 80 | 50 |
Successivamente si calcolano le frequenze attese e il valore G.
Strumenti per il calcolo:
- Python: librerie
scipy.stats. - R: funzioni integrate.
- Pacchetti statistici: SPSS, R, SAS.
# Esempio di utilizzo in Python con scipy
import numpy as np
from scipy.stats import chi2_contingency # Il test G è implementato in chi2_contingency in scipy tramite il parametro lambda='log-likelihood'
# Tabella delle frequenze osservate (dati di esempio)
observed = np.array([[50, 30],
[20, 15],
[10, 5]])
# Esecuzione del test G
# lambda='log-likelihood' indica l'uso del test G
g_statistic, p_value, dof, expected = chi2_contingency(observed, lambda_='log-likelihood')
print(f"Statistica G: {g_statistic:.4f}")
print(f"Valore p: {p_value:.4f}")
print(f"Gradi di libertà (dof): {dof}")
print("Frequenze attese:")
print(expected)
# Verifica dell'ipotesi al livello di significatività 0.05
alpha = 0.05
if p_value < alpha:
print("Risultato: Rifiutiamo l'ipotesi nulla - esiste una differenza statisticamente significativa.")
else:
print("Risultato: Non rifiutiamo l'ipotesi nulla - non c'è differenza statisticamente significativa.")