Je veux calculer la matrice de chapeau directement dans R pour un modèle logit. Selon Long (1997), la matrice chapeau pour les modèles logit est définie comme suit:
X est le vecteur de variables indépendantes et V est une matrice diagonale avec sur la diagonale.
J'utilise la optim
fonction pour maximiser la probabilité et dériver la toile de jute. Donc je suppose que ma question est: comment puis-je calculer dans R?
Remarque: Ma fonction de vraisemblance ressemble à ceci:
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)
}
Et je nourris ceci à la fonction optim comme suit:
logit <- optim(c(1,1),loglik, y = y, x = x, hessian = T)
Où x est une matrice de variables indépendantes et y est un vecteur avec la variable dépendante.
Remarque: je sais qu'il existe des procédures prédéfinies pour ce faire, mais je dois le faire à partir de zéro
Réponses:
Pour la régression logistique est calculé à l'aide de la formuleπ
Les valeurs diagonales de peuvent donc être calculées de la manière suivante:V
Maintenant, multiplier par la matrice diagonale de gauche signifie que chaque ligne est multipliée par l'élément correspondant de la diagonale. Ce qui dans R peut être réalisé en utilisant une simple multiplication:
Ensuite,
H
peut être calculé de la manière suivante:Remarque Étant donné que contient des écarts-types, je soupçonne que la bonne formule pour estV H
L'exemple de code fonctionne pour cette formule.
la source