Ich möchte die Hutmatrix direkt in R für ein Logit-Modell berechnen. Nach Long (1997) ist die Hutmatrix für Logit-Modelle definiert als:
X ist der Vektor unabhängiger Variablen und V ist eine Diagonalmatrix mit auf der Diagonale.
Ich benutze die optim
Funktion, um die Wahrscheinlichkeit zu maximieren und den Hessischen abzuleiten. Meine Frage ist also: Wie berechne ich in R?
Hinweis: Meine Wahrscheinlichkeitsfunktion sieht folgendermaßen aus:
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)
}
Und ich füttere dies der Optimierungsfunktion wie folgt:
logit <- optim(c(1,1),loglik, y = y, x = x, hessian = T)
Wobei x eine Matrix unabhängiger Variablen ist und y ein Vektor mit der abhängigen Variablen ist.
Hinweis: Ich weiß, dass es dafür Dosenverfahren gibt, aber ich muss es von Grund auf neu machen
Antworten:
Das Multiplizieren mit der Diagonalmatrix von links bedeutet nun, dass jede Zeile mit dem entsprechenden Element aus der Diagonale multipliziert wird. Was in R durch einfache Multiplikation erreicht werden kann:
Dann
H
kann folgendermaßen berechnet werden:Der Beispielcode funktioniert für diese Formel.
quelle