統計の一般的な問題は、対称正定行列の逆平方根を計算することです。これを計算する最も効率的な方法は何でしょうか?
私が出会ったいくつかの文献(私はまだ読んでいない)、およびいくつかの偶発Rコードここで私は便宜のためにここに再現されます、
# 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))
}
私はその行を理解しているかどうかはよくわかりませんd = (d+abs(d))/2
。マトリックスの平方根逆関数を計算するより効率的な方法はありますか?R eigen
関数はLAPACKを呼び出します。
d[d<0] = 0
。