多元统计分析及R语言建模-第8章 主成分分析(PCA)

来源:互联网 发布:linux c语言 电池信息 编辑:程序博客网 时间:2024/04/30 22:03

# 第8章 主成分分析
# 主成分分析的核心思想是通过降维的方法,把数据信息的主要成分提取出来,将多个冗余特征简化为一个特征的过程。


# 例8-1
x1 = c(171,175,159,155,152,158,154,164,168,166,159,164)
x2 = c(57,64,41,38,35,44,41,51,57,49,47,46)
plot(x1,x2,xlim=c(145,180),ylim=c(25,75))
lines(c(150,178), c(33,66)); text(180,68,"y1")
lines(c(161,168), c(60,38)); text(161,63,"y2")
# 有几个变量就有几个主成分


# 主成分分析函数princomp()的用法
princomp(x, cor=FALSE, scores=TRUE, ...)
# x为数据矩阵或数据框
# cor为是否用相关阵,默认为协差阵
# scores为是否输出成分得分


# 碎石图函数screeplot()的用法
screeplot(obj, type=c("barplot", "lines", ...))
# obj为主成分分析对象
# type为图形类型


#例8-2   主成分分析案例
# (1)数据标准化
# 本例中数据已经过处理
X = read.table("clipboard", header=T)
attach(X)
# (2)求标准化数据的相关矩阵
cor(X)
# 或协方差矩阵
cov(X)
# 主成分分析,可使用样本协方差矩阵或相关系数矩阵为出发点来进行分析,但大都以相关系数矩阵为主


# (3)求相关系数矩阵的特征值和特征向量
PCA = princomp(X, cor=T); PCA
# (4)计算方差贡献率与累积方差贡献率
summary(PCA,loadings=T)
PCA$loadings  # 主成分负荷
# (5)确定主成分
screeplot(PCA, type="lines")
# (6)主成分得分
PCA$scores
# (7)计算综合得分
# summary(PCA)
Importance of components:
  Comp.1    Comp.2    Comp.3     Comp.4     Comp.5     Comp.6     Comp.7      Comp.8
Standard deviation     2.2787134 1.1227556 0.8044059 0.62313432 0.48439131 0.38235576 0.29649185 0.206836981
Proportion of Variance 0.6490668 0.1575725 0.0808836 0.04853705 0.02932937 0.01827449 0.01098843 0.005347692
Cumulative Proportion  0.6490668 0.8066394 0.8875230 0.93606002 0.96538939 0.98366388 0.99465231 1.000000000

# 综合得分=(Comp.1*0.6490668 + Comp.2*0.1575725)/(0.6490668 + 0.1575725)


0 0