A estatística razão de verossimilhança (também conhecida como desvio) e o teste de falta de ajuste (ou qualidade de ajuste) são bastante simples de obter para um modelo de regressão logística (ajuste usando a glm(..., family = binomial)
função) em R. No entanto, pode ser fácil ter algumas contagens de células acaba baixo o suficiente para que o teste não seja confiável. Uma maneira de verificar a confiabilidade do teste da razão de verossimilhança por falta de ajuste é comparar a estatística do teste e o valor P com os do teste de falta de ajuste do qui quadrado (ou ) de Pearson.
Nem o glm
objeto nem seu summary()
método relatam a estatística do teste do qui-quadrado de Pearson por falta de ajuste. Na minha pesquisa, a única coisa que surgiu foi a chisq.test()
função (no stats
pacote): sua documentação diz " chisq.test
executa testes de tabela de contingência qui-quadrado e testes de adequação". No entanto, a documentação é esparsa sobre como executar esses testes:
Se
x
for uma matriz com uma linha ou coluna, ou sex
for um vetor ey
não for fornecido, um teste de qualidade do ajuste é realizado (x
é tratado como uma tabela de contingência unidimensional). As entradas dex
devem ser números inteiros não negativos. Nesse caso, a hipótese testada é se as probabilidades da população são iguais às dep
, ou são iguais sep
não forem dadas.
Eu imagino que você poderia usar o y
componente do glm
objeto para o x
argumento de chisq.test
. No entanto, você não pode usar o fitted.values
componente do glm
objeto para o p
argumento de chisq.test
, porque você receberá um erro: " probabilities must sum to 1.
"
fonte
A estatística Pearson tem uma distribuição degenerada, portanto, não é recomendada em geral para o modelo logístico de ajuste. Prefiro testes estruturados (linearidade, aditividade). Se você deseja um teste geral, consulte o teste de soma de quadrados não ponderada Cessie - van Houwelingen - Copas - Hosmer, conforme implementado na função do
rms
pacote R.residuals.lrm
fonte
ResourceSelection
pacote, e seu resultado é diferente do que recebo executandoresid(lrm_object, 'gof')
depois de ajustar meu modelo de regressão logística comolrm_object <- lrm(...)
. Se eles são realmente diferentes, você pode comentar como o teste de HL se compara ao que você mencionou aqui? Obrigado!Obrigado, eu não sabia que era tão simples quanto: sum (resíduos (f1, tipo = "pearson") ^ 2) No entanto, observe que o resíduo de Pearsons varia dependendo de ser calculado por grupo covariável ou por indivíduo. Um exemplo simples:
m1 é uma matriz (esta é a cabeça de uma matriz maior):
Onde x1-3 são preditores, obs é não. observações em cada grupo, pi é a probabilidade de pertencer ao grupo (previsto a partir da equação de regressão), lev é alavancagem, a diagonal da matriz do chapéu, e o previsto não. (de y = 1) no grupo e no número real.
Isso lhe dará o grupo de Pearson. Observe como é diferente se y == 0: ' 'fun1 <- function(j){
if (m1[j,"y"] ==0){ # y=0 for this covariate pattern
Pr1 <- sqrt( m1[i,"pi"] / (1-m1[i,"pi"]))
Pr2 <- -sqrt (m1[i,"obs"])
res <- round( Pr1 * Pr2, 3)
return(res)
} else {
Pr1 <- m1[j,"y"] - m1[j,"yhat"]
Pr2 <- sqrt( m1[j,"yhat"] * ( 1-(m1[j,"pi"]) ) )
res <- round( Pr1/Pr2, 3)
return(res)
}
}
portanto
Se houver um grande número de sujeitos com padrões covariáveis de y = 0, o resíduo de Pearons será muito maior quando calculado usando o método 'por grupo' em vez do método 'por indivíduo'.
Ver, por exemplo, Hosmer & Lemeshow "Regressão logística aplicada", Wiley, 200.
fonte
Você também pode usar
c_hat(mod)
isso dará a mesma saída quesum(residuals(mod, type = "pearson")^2)
.fonte
c_hat
encontrado?