SPSS只能完成主成分分析的一部分环节,主成分得分等计算尚需结合其他工具(如Excel)来完成,这对SPSS用户来说,是极不方便的。

小兵建议大家直接采用R语言实现主成分分析,今天先送上一枚案例。

使用R语言自带USJudgeRatings法官综合素质评分数据,每位法官均有12项维度打分,我们觉得用12个指标评价一位法官过于复杂了,现在请对12个维度打分变量进行降维处理,造几个主成分来用于综合评价。

数据如下:

碎石图r语言 r语言绘制碎石图_matlab主成分分析散点图

加载包:

library(psych)

画出含平行分析的碎石图:

fa.parallel(USJudgeRatings, fa = "pc", n.iter = 100, show.legend = TRUE, main = 'Scree plot with parallel analysis')

碎石图r语言 r语言绘制碎石图_特征值_02

此图告诉我们似乎是提取1个主成分。判断主成分个数的经验和方法不只是这一个,我觉得只提取1个主成分的话有些偏执,可以考虑多提1个,共提取2个主成分进行考察。

接下来开始主成分分析,暂不旋转:

USJ.pc

碎石图r语言 r语言绘制碎石图_特征值_03

提取到两个主成分PC1、PC2,特征值分别为10.13、1.10,均大于1,以特征值为参考的话,提取前2个主成分尚可。方差贡献比例分别为84%、9%,累积方差贡献比例94%,一般认为大于80%,即可认为主成分有较大代表性。

从累积方差贡献,特征值的表现来看,提取2个主成分没问题。

12个指标和PC1、PC2交叉的数字即为载荷,从载荷的分布来看,可以比较轻松的划分各指标与主成分的归属,比如PC2在指标“CONT”上的载荷明显大于其他,所以"CONT"是PC2的主要代表变量,而其他变量在PC1的载荷均较大,所以PC1是一个一般性的综合成分。鉴于此,不做旋转处理是可以的,不影响对主成分核心含义的提炼。

和SPSS主成分的结果对比一下,主成分特征值、方差贡献比例完全一致。

碎石图r语言 r语言绘制碎石图_matlab主成分分析散点图_04

再对比一下SPSS输出的载荷矩阵,也是一致。

碎石图r语言 r语言绘制碎石图_特征值_05

如果觉得我表述不清的话,那我们绘制指标变量与主成分载荷图,直观看一下效果。

fa.diagram(USJ.pc,simple=TRUE)

碎石图r语言 r语言绘制碎石图_特征值_06

效果很直观,就不用文字多说了。

执行到此处,我们已经确认12个维度指标变量,提取前2个成分作为主成分是可以的。

接下来,我们需要计算每个主成分的得分了。

USJ.spc

head(USJ.spc$scores)

碎石图r语言 r语言绘制碎石图_碎石图r语言_07

对主成分得分变量的使用,通常是直接用于从高到底排序,排名靠前的法官则在该主成分维度上表现突出。或者综合2个主成分得分变量,构造一个综合得分进行评价。

更多R统计文章

R语言单一样本t检验案例实现 20个R语言小课堂视频教程送给你 R语言的正态密度曲线很美 R自带pairs函数矩阵散点图 car包spm函数矩阵散点图 用R语言pie函数做饼图 ggplot2统计图形:常见的4种箱线图 ggplot2统计图形:常见的4种直方图 按列索引按列名称删除指定的列数据 R语言Levene方差齐次检验 谁说菜鸟不会数据分析(R语言篇) table函数:分类数据的频数与频率统计 jiebaR包中文分词及词云制作 R语言带文字标签的散点图 如何获取R自带数据集与R包数据集说明文档? 如何修改R数据框的列名称? 二元正态分布及双变量相关分析简单案例演示 R语言相关系数、显著性检验及可视化的尝试 用散点图法判断变量之间是否存在线性关系 ggplot2统计图形:常见的4种散点图 R语言scale()函数实现数据标准化 用R语言做单因素方差分析及多重比较 用R语言自动智能化创建时间序列ARIMA模型