Eu quero calcular a matriz de chapéu diretamente em R para um modelo de logit. Segundo Long (1997), a matriz hat para modelos logit é definida como:
X é o vetor de variáveis independentes e V é uma matriz diagonal com na diagonal.
Eu uso a optim
função para maximizar a probabilidade e derivar o hessian. Então, acho que minha pergunta é: como faço para calcular em R?
Nota: Minha função de probabilidade é assim:
loglik <- function(theta,x,y){
y <- y
x <- as.matrix(x)
beta <- theta[1:ncol(x)]
loglik <- sum(-y*log(1 + exp(-(x%*%beta))) - (1-y)*log(1 + exp(x%*%beta)))
return(-loglik)
}
E eu alimento isso com a função otim da seguinte maneira:
logit <- optim(c(1,1),loglik, y = y, x = x, hessian = T)
Onde x é uma matriz de variáveis independentes e y é um vetor com a variável dependente.
Nota: Sei que existem procedimentos fixos para fazer isso, mas preciso fazê-lo do zero
Respostas:
Para a regressão logística é calculado usando a fórmulaπ
Portanto, os valores diagonais de podem ser calculados da seguinte maneira:V
Agora multiplicar pela matriz diagonal da esquerda significa que cada linha é multiplicada pelo elemento correspondente da diagonal. O que em R pode ser alcançado usando multiplicação simples:
Então
H
pode ser calculado da seguinte maneira:Nota Como contém desvios padrão, suspeito que a fórmula correta para sejaHV H
O código de exemplo funciona para esta fórmula.
fonte