R语言主成分PCA题目

12.3
对下表的50名学生成绩进行主成分分析,可以选择几个综合变量来表示这些学生的6门课程成绩?

数据如下:
R语言主成分PCA题目_第1张图片R语言主成分PCA题目_第2张图片R语言主成分PCA题目_第3张图片

1. 数据导入与数据标准化

> data=read.csv('D:/R languaga_main factors_analysis.csv',head=TRUE) 
> View(data)
> std_data=scale(data[1:6]) #数据标准化
> #还可以通过rownames(std_data)=data[[1]]  #数组各行名字定义为数据文件的的第一列 进行进一步标准化
> View(std_data)#查看标准化后数据模样
> class(std_data) #查看数据类型
>  "matrix"
> df=as.data.frame(std_data) 
> class(df)
>  "data.frame"

2.进行PCA(主成分分析)

> df.pr=princomp(df,cor=TRUE) #主成分分析
> summary(df.pr,loadings=TRUE)  #列出结果 包含特征向量
Importance of components: Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 Standard deviation 1.9170867 1.1026637 0.62781730 0.58486784 0.47527712 0.38314243 Proportion of Variance 0.6125369 0.2026445 0.06569243 0.05701173 0.03764806 0.02446635 Cumulative Proportion 0.6125369 0.8151814 0.88087386 0.93788559 0.97553365 1.00000000 Loadings: Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 数学 0.402 0.406 0.207 0.701 0.136 0.347 物理 0.304 0.614 -0.663 -0.279 -0.113 化学 0.415 0.268 0.672 -0.529 -0.137 语文 -0.463 0.278 -0.269 -0.125 0.788 历史 -0.431 0.367 0.214 0.744 -0.283 英语 -0.418 0.417 0.139 0.278 -0.628 -0.401 #载荷矩阵 > cor(df) #输出相关系数矩阵 数学 物理 化学 语文 历史 英语 数学 1.0000000 0.6248332 0.6652483 -0.5716666 -0.4365279 -0.3727902 物理 0.6248332 1.0000000 0.5396874 -0.3024095 -0.2532592 -0.2122329 化学 0.6652483 0.5396874 1.0000000 -0.5651174 -0.4947985 -0.4916407 语文 -0.5716666 -0.3024095 -0.5651174 1.0000000 0.8075182 0.7985865 历史 -0.4365279 -0.2532592 -0.4947985 0.8075182 1.0000000 0.7670363 英语 -0.3727902 -0.2122329 -0.4916407 0.7985865 0.7670363 1.0000000 > y=eigen(cor(df)) #求特征值和特征向量 > y$values #输出特征值 [1] 3.6752214 1.2158672 0.3941546 0.3420704 0.2258883 0.1467981 #输出的是六个主成分分别的特征值,前两个是主成分的特征值;

特征值对应的特征向量就是理想中想取得正确的坐标轴,而特征值就等于数据在旋转之后的坐标上对应维度上的方差。 求出矩阵A的特征向量得出对应的特征向量。我们就能找到旋转后正确的坐标轴,“得出使数据在各个维度区分度达到最大的坐标轴。”此外,某一特征值除以所有特征值的和的值就为:该特征向量的方差贡献率(方差贡献率代表了该维度下蕴含的信息量的比例),利用这一过程可以在EXCEL中算出每个主成分在每个分类上的得分从而得到SPSS中的得分矩阵表。

可以通过软件输出的载荷矩阵来计算得分系数矩阵R语言主成分PCA题目_第4张图片R语言主成分PCA题目_第5张图片
一般来说经过特征向量变换下的数据就被称作变量的主成分,在spss的总方差解释表中会列出所有主成分的方差贡献率和累计方差贡献率,一般来说,主成分的累计方差贡献率达到80%以上的前几个主成分,都可以选作最后的主成分,实现对数据进行降维的目的。(当特征根小于1时,就不再选作主成分了,因为该主成分的解释力度还不如1个原始变量解释力度大,例如只选择了特征值为3.6752214 1.2158672的两个主成分。)

> sum(y$values[1:6])/sum(y$values) #求前6个主成分的累计方差贡献率,所有的主成分累计的方差贡献率应该正好是1的,这时正好证明了我们没有漏掉任何一个主成分。
[1] 1
#传统的主成分分析主成分个数与原始变量数(这里是六个)相同,写数学模型时老师也建议我们写完所有的六个主成分(如果只写提取的主成分,特征向量方差或长度不是1)
> df.pr$loadings[,1:6] #输出前6个主成分的载荷矩阵
         Comp.1    Comp.2      Comp.3      Comp.4       Comp.5     Comp.6
数学  0.4015600 0.4058115  0.20738435  0.70142207  0.136499735  0.3470349
物理  0.3037728 0.6144972 -0.66286300 -0.27925871  0.007852544 -0.1126090
化学  0.4152894 0.2679773  0.67231227 -0.52884389 -0.136820503 -0.0729615
语文 -0.4625867 0.2781553  0.02373273 -0.26858310 -0.124567353  0.7876713
历史 -0.4305473 0.3668097  0.21382904 -0.03382354  0.743825599 -0.2827300
英语 -0.4179102 0.4171075  0.13897656  0.27760560 -0.627529094 -0.4014976
> screeplot(df.pr,type='lines')  	#画出碎石图
> biplot(df.pr)  					#画出主成分散点图

R语言主成分PCA题目_第6张图片R语言主成分PCA题目_第7张图片R语言主成分PCA题目_第8张图片从另一道相似的R语言 统计学题目学到的,详见

R语言主成分分析(PCA)

主成分分析的计算步骤:
假设样本观测数据矩阵为:
X=(x1,x2,x3,…xp),xi为n个样本在第i个属性上的观测值,是一个列向量
1.对原始数据标准化处理(0均值化处理)
2.计算样本相关系数矩阵
3.计算协方差矩阵的特征值和特征向量
4.选择重要的主成分,并写出主成分表达式
5.计算主成分得分(矩阵)
6.进一步统计分析

你可能感兴趣的:(统计学)