說明:
用R軟件對多元數據進行Fisher判別時,需要求樣本所服從的分布的方差∑的-1/2次冪
矩陣Σ為p*p的正交陣
求矩陣Σ的逆:solve(Σ)
求矩陣Σ的特征值和特征向量:eigen(Σ)
輸入:eigen(Σ)$values 可得到矩陣A的特征值,
輸入:eigen(Σ)$vectors 可到到一個矩陣,矩陣的列向量為列數所對應的特征值的特征向量;
由於Λ=Q-1ΣQ 即Σ=QΛQ-1,其中Λ=diag{λ1,λ2,......,λp},其中λ1,λ2,......,λ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。