Saya ingin menghitung matriks topi langsung di R untuk model logit. Menurut Long (1997) matriks topi untuk model logit didefinisikan sebagai:
X adalah vektor variabel independen, dan V adalah matriks diagonal dengan pada diagonal.
Saya menggunakan optim
fungsi ini untuk memaksimalkan kemungkinan dan menurunkan hessian. Jadi saya kira pertanyaan saya adalah: bagaimana saya menghitung dalam R?
Catatan: Fungsi kemungkinan saya terlihat seperti ini:
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)
}
Dan saya memasukkan ini ke fungsi optimal sebagai berikut:
logit <- optim(c(1,1),loglik, y = y, x = x, hessian = T)
Di mana x adalah matriks variabel independen, dan y adalah vektor dengan variabel dependen.
Catatan: Saya tahu bahwa ada prosedur kalengan untuk melakukan ini, tetapi saya harus melakukannya dari awal
Jawaban:
Untuk regresi logistik dihitung menggunakan rumusπ
Jadi nilai diagonal dapat dihitung dengan cara berikut:V
Sekarang mengalikan dengan matriks diagonal dari kiri berarti bahwa setiap baris dikalikan dengan elemen yang sesuai dari diagonal. Yang mana dalam R dapat dicapai menggunakan perkalian sederhana:
Kemudian
H
dapat dihitung dengan cara berikut:Catatan Karena berisi standar deviasi saya menduga bahwa rumus yang tepat untuk adalahV H
Kode contoh berfungsi untuk rumus ini.
sumber