说明:
用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。