[X,textdata] = xlsread('中国各地区农村居民家庭平均每人现金消费支出 (2011年).xls');
XZ=zscore(X); %数据标准化
%主成分分析
% 调用princomp函数根据标准化后原始样本观测数据作主成分分析
%返回主成分表达式的系数矩阵COEFF,主成分得分数据SCORE
%样本相关系数矩阵的特征值向量latent和每个观测值的霍特林T2统计量
%princomp函数不返回贡献率,需要用协方差矩阵的特征值向量latent来计算
[COEFF,SCORE,latent,tsquare] = princomp(XZ)
explained = 100*latent/sum(latent)%计算贡献率
%result1中第1列的第2行到最后一行存放的数据(latent)特征值
%result1中第2列的第2行到倒数第2行存放的数据(latent的方差,特征值的方差)
%result1中第3列和第4列的第2行到最后一行分别存放主成分的贡献率和累积贡献率
[m, n] = size(X);%求X的行数和列数
result1 = cell(n+1, 4);%定义一个n+1行、4列的元胞数组
result1(1,:) = {'特征值', '差值', '贡献率', '累积贡献率'};
result1(2:end,1) = num2cell(latent);
result1(2:end-1,2) = num2cell(-diff(latent));
result1(2:end,3:4) = num2cell([explained, cumsum(explained)])
PC = COEFF(:,1:2);%保留第一第二个特征
y = X*PC