主成分分析(Principal component analysis,PCA)
主成分分析是一种通过降维技术把多个变量化为少数几个主成分(即综合变量)的多元统计方法。
1 原理
1.1 主成分分析的几何意义
2 主成分分析的MATLAB函数
与主成分分析的MATLAB函数主要有pcacov、princomp和pcares函数。
2.1 pcacov函数
pcacov函数用来根据协方差矩阵或相关系数矩阵进行主成分分析,其调用格式如下:
COEFF = pcacov(V)
[COEFF,latent] = pcacov(V)
[COEFF,latent,explained] = pcacov(V)
输入参数: V——总体或样本的协方差矩阵或相关系数矩阵,对于p维总体,V是p×p的矩阵。 输出参数: COEFF——p个主成分的系数矩阵,其为p×p的矩阵,第i列是第i个主成分的系数向量。 latent——p个主成分的方差构成的列向量,即V的p个特征值(从大到小)构成的向量。 explained——p个主成分的贡献率向量,已经转化为百分比。
2.2 princomp函数
princomp函数用来根据样本观测值矩阵进行主成分分析,其调用格式如下:
[COEFF,SCORE] = princomp(X)
[COEFF,SCORE,latent] = princomp(X)
[COEFF,SCORE,latent,tsquare] = princomp(X)
输入参数: X——n行p列的矩阵,每一行对应一个观测(样品),每一列对应一个变量。 输出参数: COEFF——p个主成分的系数矩阵,其为p×p的矩阵,第i列是第i个主成分的系数向量。 SCORE——n个样品的p个主成分得分矩阵,其为n行p列的矩阵,每一行对应一个观测(样品),每一列对应一个主成分。第i行第j列元素是第i个样品的第j个主成分得分。 latent——样本协方差矩阵的特征值向量,由p个特征值构成的列向量,其中特征值按降序排列。 tsquare——包含n个元素的列向量。其第i个元素是第i个观测对应的霍特林(Hotelling)T^2统计量,描述了第i个观测与数据集(样本观测矩阵)的中心之间的距离,可以用来寻找远离中心的极端数据。
2.3 pcares函数
pcares函数用来重建数据,并求样本观测值矩阵中的每个观测的每一个分量所对应的残差,其调用格式如下:
residuals = pcares(X,ndim)
[residuals,reconstructed] = pcares(X,ndim)
输入参数: X——n行p列的样本观测值矩阵,其每一行对应一个观测(样品),每一列对应一个变量。 ndim——用来指定所用的主成分的个数,其是一个小于或等于p的正标量,最好取为正整数。 输出参数: residuals——与X同样大小的矩阵,其元素为X中相应元素对应的残差。 reconstructed——用前ndim个主成分的得分重建的观测数据,为X的近似。 注意: pcares调用了princomp函数,其只能接受原始样本数据作为它的输入,并且不会自动对数据作标准化变换,若需要对数据做标准化变换,可以先用zscore函数将数据标准化,然后调用pcares函数重建观测数据并求残差。 若从协方差矩阵或相关系数矩阵出发求解主成分,请用pcacov函数,此时无法重建观测数据和误差。
3 MATLAB实现代码
3.1 调用pcacov函数做主成分分析
3.2 调用princomp函数做主成分分析
3.3 调用pcares函数重建观测数据
|