Masalah umum dalam statistik adalah menghitung kebalikan akar kuadrat dari matriks pasti positif simetris. Apa cara komputasi yang paling efisien ini?
Saya menemukan beberapa literatur (yang belum saya baca), dan beberapa kode R insidental di sini , yang saya akan mereproduksi di sini untuk kenyamanan
# function to compute the inverse square root of a matrix
fnMatSqrtInverse = function(mA) {
ei = eigen(mA)
d = ei$values
d = (d+abs(d))/2
d2 = 1/sqrt(d)
d2[d == 0] = 0
return(ei$vectors %*% diag(d2) %*% t(ei$vectors))
}
Saya tidak sepenuhnya yakin saya mengerti garisnya d = (d+abs(d))/2
. Apakah ada cara yang lebih efisien untuk menghitung invers kuadrat matriks kuadrat? Fungsi R eigen
memanggil LAPACK .
d[d<0] = 0
, yang lebih ekspresif.