Quiero calcular la matriz de sombreros directamente en R para un modelo logit. Según Long (1997), la matriz de sombreros para los modelos logit se define como:
X es el vector de variables independientes, y V es una matriz diagonal con en la diagonal.
Utilizo la optim
función para maximizar la probabilidad y derivar la arpillera. Así que supongo que mi pregunta es: ¿cómo calculo en R?
Nota: Mi función de probabilidad se ve así:
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)
}
Y paso esto a la función de optimización de la siguiente manera:
logit <- optim(c(1,1),loglik, y = y, x = x, hessian = T)
Donde x es una matriz de variables independientes, e y es un vector con la variable dependiente.
Nota: Sé que existen procedimientos fijos para hacer esto, pero necesito hacerlo desde cero
Respuestas:
Para regresión logística se calcula usando la fórmulaπ
Por lo tanto, los valores diagonales de se pueden calcular de la siguiente manera:V
Ahora, multiplicar por la matriz diagonal desde la izquierda significa que cada fila se multiplica por el elemento correspondiente desde la diagonal. Lo cual en R se puede lograr usando la multiplicación simple:
Luego
H
se puede calcular de la siguiente manera:Nota Dado que contiene desviaciones estándar, sospecho que la fórmula correcta para esHV H
El código de ejemplo funciona para esta fórmula.
fuente