Teste de Hosmer-Lemeshow
Modelos e regressão · distribuição de referência: χ²(g−2)
Quando usar
Verificar se as probabilidades previstas por uma regressão logística batem com as frequências observadas, agrupando os casos por faixa de risco.
Hipótese nula
O modelo se ajusta bem: as frequências observadas e previstas coincidem.
Pressupostos
- Amostra grande
- O resultado depende do número de grupos g, em geral 10
Estatística
HL = \sum_{j=1}^{g} \dfrac{(O_j - E_j)^2}{E_j\,(1 - E_j / n_j)}Como reportar
χ²(8) = 6,3; p = 0,61: sem evidência de mau ajuste
No R e no Python
R
library(ResourceSelection)
hoslem.test(modelo$y, fitted(modelo), g = 10)
Python
# sem função no statsmodels: agrupe por decis de p_hat
g = pd.qcut(p_hat, 10, labels=False)
t = pd.DataFrame({"y": y, "p": p_hat, "g": g}).groupby("g").agg(o=("y", "sum"), e=("p", "sum"), n=("y", "size"))
HL = ((t.o - t.e)**2 / (t.e * (1 - t.e / t.n))).sum()
p = stats.chi2.sf(HL, 10 - 2)
No Python, stats é scipy.stats e np é numpy.
Variantes e alternativas
- Razão de verossimilhança, para comparar modelos aninhados
Onde fica no catálogo
Modelos e regressão. Testes feitos dentro de um modelo ajustado: se um coeficiente importa, se o modelo explica algo e se os resíduos cumprem os pressupostos.
Na árvore de decisão
- O que você quer fazer? Testar um modelo de regressão
- O que você quer testar? O ajuste de uma regressão logística