R語言:計算矩陣的-1/2次冪


說明:

用R軟件對多元數據進行Fisher判別時,需要求樣本所服從的分布的方差∑的-1/2次冪

矩陣Σ為p*p的正交陣

求矩陣Σ的逆:solve(Σ)

求矩陣Σ的特征值和特征向量:eigen(Σ)

輸入:eigen(Σ)$values 可得到矩陣A的特征值,

輸入:eigen(Σ)$vectors 可到到一個矩陣,矩陣的列向量為列數所對應的特征值的特征向量;

由於Λ=Q-1ΣQ 即Σ=QΛQ-1,其中Λ=diag{λ12,......,λp},其中λ12,......,λp為Σ的特征值,

程序:

在這里以2*2的矩陣為例,Σ為矩陣:

226.96104,44.75779
44.75779,155.91916

> lamda
             [,1]         [,2]
[1,] 2.485803e+02 1.421085e-14
[2,] 7.105427e-15 1.342999e+02

 

R代碼為:

 

1 lamda <- solve(eigen(Sigma)$vectors)%*%Sigma%*%(eigen(Sigma)$vectors)
2 sqrt(diag(lamda))
3 lamda_sqrt <- matrix(c(sqrt(diag(lamda))[1],0,0,sqrt(diag(lamda)[2])),nrow = 2,ncol = 2)
4 Sigma_sqrt <- (eigen(Sigma)$vectors)%*%lamda_sqrt%*%solve(eigen(Sigma)$vectors)
5 solve(Sigma_sqrt)

 

可以得到Σ的-1/2次冪:

> solve(Sigma_sqrt)
            [,1]        [,2]
[1,]  0.06775133 -0.00895483
[2,] -0.00895483  0.08196490

 

與此同時,如果用matlab,可直接輸入A^(-1/2)即可,其中A為上文所述Sigma。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM