即当 B=A* 或 bjk=ajk(j =1,2,…,p;k=1,…,m)时,可使回归的残差平方和达最小值.而Xj 回归方程的决定系数 R2(j) =υj(m) (j=1,2,…,p). 主成分的个数及解释
主成分分析的目的之一是简化数据结构,用尽可能少的主成分Z1,…, Zm(m
主成分的个数m如何选取是实际工作者关心的问题.关于主成分的个数如何确定,常用的标准有两个: (1) 按累计贡献率达到一定程度(如70%或80%以上)来确定m; (2) 先计算S或R的p个特征根的均值λ,取大于λ的特征根个数m. 当p<=20 时,大量实践表明,第一个标准容易取太多的主成分,而第二个标准容易取太少的主成分,故最好将两者给合起来应用,同时要考虑m个主成分对Xi的贡献率υi(m). ?
应用例子7.2.1
例7.2.1 学生身体各指标的主成分分析.随机抽取30名某年级中学生,测量其身高(X1)、体重(X2)、胸围(X3)和坐高(X4),数据见书中P277表7.4(或以下SAS程序的数据行). 试对中学生身体指标数据做主成分分析.? 解 (1) 以下SAS程序首先生成包括30名学生身体指标数据的SAS数据集d721(其中变量NUMBER记录识别学生的序号),然后调用SAS/STA软件中的PRINCOMP过程进行主成分分析. 例7.2.1的sas程序 Data d721;
input number x1-x4 @@ ;行指针控指示读完该行
数据行后再跳到下一行。
cards;
1 148 41 72 78 2 139 34 71 76 3 160 49 77 86 4 149 36 67 79 ………………………………... 27 144 36 68 76 28 141 30 67 76 29 139 32 68 73 30 148 38 70 78
; 该选项主成分的前
缀名字为z
proc princomp data=d721 prefix=z out=o721 ; var x1-x4; run;
proc plot data=o721;
plot z2*z1 $ number='*';绘制前二个主成分得分的散点图.作
图符号为'*',并在每散点旁边加上序号,以便识别各个观测.
run;
proc sort data=o721; 把输出集o721按第一主成分
z1的得分值从小 到大排序
by z1; run;
proc print data=o721;
var number z1 z2 x1-x4;输出排序后的数据集o721 run;
例7.2.1的输出结果
学生身体指标数据的描述统计量和相关阵
输出7.2.1 相关阵的特征值和特征向量
例7.2.1的结果分析
PRINCOMP过程由相关阵出发进行主成分分析.由输出7.2.1中相关阵的特征值可以看出,第一主成分的贡献率已高达88.53%;且前二个主成分的累计贡献率已达96.36%.因此只须用两个主成分就能很好地概括这组数据. 另由第三和四个特征值近似为0,可以得出这4个标准化后的身体指标变量(Xi*,i=1,2,3,4)有近似的线性关系(即所谓共线性),如? 0.505747 X1* -0.690844 X2* +0.461488 X3* -0.232343 X4*≈c(常数).
由最大的两个特征值对应的特征向量可以写出第一和第二主成分: Z1=0.4970 X1*+0.5146 X2*+0.4809 X3* +0.5069 X4* Z2= -0.5432 X1* +0.2102 X2* +0.7246 X3* - 0.3683 X4* 第一和第二主成分都是标准化后变量Xi* (i=1,2,3,4)的线性组合,且组合系数就是特征向量的分量.?
利用特征向量各分量的值可以对各主成分进行解释. 第一大特征值对应的第一个特征向量的各个分量值均在0.5附近,且都是正值,它反映学生身材的魁梧程度.身体高大的学生,他的4个部位的尺寸都比较大;而身体矮小的学生,他的4个部位的尺寸都比较小.因此我们称第
一主成分为大小因子.
第二大特征值对应的特征向量中第一(即身高X1的系数)和第四个分量(即坐高X4的系数)为负值,而第二(即体重X2的系数)和第三个分量(即胸围X3的系数)为正值,它反映学生的胖瘦情况,故称第二主成分为胖瘦因子.?
输出7.2.2 第二主成分得分对第一主成分得分的散布图
输出7.2.2是PLOT过程产生的输出图形,从图中可以直观地看出,按学生的身体指标尺寸,这30名学生大约应分成三组(以第一主成分得分值为-1和2为分界点). 每一组包括哪几名学生由每个散点旁边的序号可以得知.更详细的信息可从PRINT过程产生的输出数据列表中得到.?
按第一主成分得分排序后的主成分得分和原始数据