O que é o teste G?
sobes.tech IA
Resposta da IA
O teste G (ou teste G, teste χ² de relação de verosimilhança) é um teste estatístico utilizado para verificar hipóteses sobre a distribuição de frequências em dados categóricos. No contexto de QA, pode ser aplicado para comparar distribuições de defeitos por categorias (por exemplo, tipo, prioridade) em diferentes compilações de produto, ambientes de teste ou ao comparar resultados de duas abordagens diferentes de teste, para determinar se existe uma diferença estatisticamente significativa. É uma alternativa ao teste χ² de Pearson, especialmente útil com amostras pequenas.
Principais passos:
- Formulação das hipóteses nula ($H_0$) e alternativa ($H_1$).
- $H_0$: Não há diferença estatisticamente significativa na distribuição de frequências entre os grupos analisados.
- $H_1$: Existe uma diferença estatisticamente significativa.
- Construção da tabela de contingência com frequências observadas.
- Cálculo das frequências esperadas para cada célula da tabela sob a hipótese $H_0$.
- Cálculo da estatística G pela fórmula: $G = 2 \sum_{i} O_i \ln(O_i/E_i)$ onde $O_i$ é a frequência observada, $E_i$ a frequência esperada.
- Determinação do número de graus de liberdade ($df$). Para uma tabela de contingência $R \times C$ ($R$ linhas, $C$ colunas): $df = (R-1)(C-1)$.
- Comparação do valor calculado de G com o valor crítico da distribuição G ou uso do valor p. Se G > valor crítico ou p < nível de significância ($\alpha$), $H_0$ é rejeitada.
Exemplo de aplicação em QA:
Comparação da distribuição de tipos de defeitos em dois ambientes de teste diferentes.
| Tipo de defeito | Ambiente A (Observado) | Ambiente B (Observado) |
|---|---|---|
| Funcional | 50 | 30 |
| UI/UX | 20 | 15 |
| Performance | 10 | 5 |
| Total | 80 | 50 |
Depois, calcula-se as frequências esperadas e o valor G.
Ferramentas para cálculo:
- Python: bibliotecas
scipy.stats. - R: funções integradas.
- Pacotes estatísticos: SPSS, R, SAS.
# Exemplo de uso em Python com scipy
import numpy as np
from scipy.stats import chi2_contingency # A prova G está implementada em chi2_contingency no scipy via o parâmetro lambda='log-likelihood'
# Tabela de frequências observadas (dados de exemplo)
observed = np.array([[50, 30],
[20, 15],
[10, 5]])
# Realização do teste G
# lambda='log-likelihood' indica o uso do teste G
g_statistic, p_value, dof, expected = chi2_contingency(observed, lambda_='log-likelihood')
print(f"Estatística G: {g_statistic:.4f}")
print(f"Valor p: {p_value:.4f}")
print(f"Graus de liberdade (dof): {dof}")
print("Frequências esperadas:")
print(expected)
# Verificação da hipótese ao nível de significância 0.05
alpha = 0.05
if p_value < alpha:
print("Resultado: Rejeitamos a hipótese nula - existe uma diferença estatisticamente significativa.")
else:
print("Resultado: Não rejeitamos a hipótese nula - não há diferença estatisticamente significativa.")