简述
- 主成分分析(Principal Component Analysis,PCA)是一种在损失很少信息的前提下,把多个指标转化为几个综合指标的多元统计分析方法,它的核心是数据降维思想,即通过降维的手段实现多指标向综合指标的转化,而转化后的综合指标,我们称之为主成分。其中,每个主成分都是众多原始变量的线性组合,且每个主成分之间互不相关,这使得主成分比原始变量具有某些更为优越的性能。在实际应用中,如果原始数据集本身较为复杂,那么使用主成分分析可以使我们仅需要考虑几个综合指标,而且又不至于损失太多信息。一方面,它更容易帮助我们抓住问题的主要矛盾;另一方面,它又极大的提高了我们的分析效率。例如,使用PCA可将30个相关(很可能冗余)的环境变量转化为5个无关的成分变量,并且尽可能地保留原始数据集的信息。
- 总结来说:主成分分析(PCA)是一种数据降维技巧,它能将大量相关变量转化为一组很少的不相关变量,这些无关变量称为主成分。
计算步骤
- 对原始数据进行标准化处理,消除量纲
- 计算标准化数据的相关系数矩阵
- 计算标准化数据的相关系数矩阵的特征根及对应的特征向量
- 选出最大的特征根,对应的特征向量等于第一主成分的系数;选出第二大的特征根,对应的特征向量等于第二主成分的系数;以此类推
- 计算累积贡献率,选择恰当的主成分个数;
- 解释主成分:写出前k个主成分的表达式
- 确定各样本的主成分得分
- 根据主成分得分的数据,做进一步的统计分析
R的基础安装包提供了PCA为 princomp()
principal()
含多种可选的方差旋转方法的主成分分析
fa()
可用主轴、最小残差、加权最小平方或最大似然法估计的因子分析
fa.parallel()
含平行分析的碎石图
factor.plot()
绘制因子分析或主成分分析的结果
fa.diagram()
绘制因子分析或主成分的载荷矩阵
scree()
因子分析和主成分分析的碎石图
- 判断主成分的个数
- 根据先验经验和理论知识判断主成分数;
- 根据要解释变量方差的积累值的阈值来判断需要的主成分数;
- 通过检查变量间k×k的相关系数矩阵来判断保留的主成分数。
- 最常见的是基于特征值的方法。每个主成分都与相关系数矩阵的特征值相关联,第一主成分与最大的特征值相关联,第二主成分与第二大的特征值相关联,依此类推。
setwd("E:\\Rwork")
library(psych)
data<-read.csv("2012MLB.csv", header=T, sep=",")
fa.parallel(data[,-1], fa = "pc", n.iter = 100,
show.legend = FALSE, main = "screen plot with parallel analysis")
pc <- principal(data[,-1], nfactors = 2)
plot(pc$values,type = "b")
> pc
Principal Components Analysis
Call: principal(r = data[, -1], nfactors = 2)
Standardized loadings (pattern matrix) based upon correlation matrix
RC1 RC2 h2 u2 com
G -0.08 -0.61 0.374 0.626 1.0
R 0.86 0.44 0.931 0.069 1.5
H 0.98 -0.12 0.966 0.034 1.0
H1B 0.81 -0.49 0.899 0.101 1.7
H2B 0.67 -0.05 0.449 0.551 1.0
H3B 0.20 -0.52 0.312 0.688 1.3
HR 0.23 0.90 0.856 0.144 1.1
RBI 0.85 0.46 0.942 0.058 1.5
BB -0.07 0.26 0.072 0.928 1.2
SO -0.63 0.48 0.624 0.376 1.9
SB -0.05 -0.36 0.131 0.869 1.0
AVG 0.98 -0.09 0.976 0.024 1.0
OBP 0.90 0.09 0.826 0.174 1.0
RC1 RC2
SS loadings 5.81 2.55
Proportion Var 0.45 0.20
Cumulative Var 0.45 0.64
Proportion Explained 0.69 0.31
Cumulative Proportion 0.69 1.00
Mean item complexity = 1.3
Test of the hypothesis that 2 components are sufficient.
The root mean square of the residuals (RMSR) is 0.09
with the empirical chi square 37.9 with prob < 0.94
Fit based upon off diagonal values = 0.96
- 剔除掉与主成分1低相关的变量
data1 <-data[,c(3:5,9,13,14)]
fa.parallel(data1, fa = "pc", n.iter = 100,
show.legend = FALSE, main = "screen plot with parallel analysis")
pc <- principal(data1, nfactors = 1)
Principal Components Analysis
Call: principal(r = data1, nfactors = 1)
Standardized loadings (pattern matrix) based upon correlation matrix
PC1 h2 u2 com
R 0.89 0.79 0.206 1
H 0.96 0.92 0.076 1
H1B 0.79 0.62 0.378 1
RBI 0.88 0.78 0.218 1
AVG 0.97 0.95 0.054 1
OBP 0.92 0.85 0.152 1
PC1
SS loadings 4.92
Proportion Var 0.82
Mean item complexity = 1
Test of the hypothesis that 1 component is sufficient.
The root mean square of the residuals (RMSR) is 0.12
with the empirical chi square 13.66 with prob < 0.13
Fit based upon off diagonal values = 0.98