欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

R语言 Kmeans聚类法 主成分分析

程序员文章站 2022-07-14 20:59:47
...

eg
set.seed(123)
x1=matrix(rnorm(1000,0,0.3),ncol = 10)#均值0,标准差为0.3的10010正态随机矩阵
x2=matrix(rnorm(1000,1,0.3),ncol = 10)#均值1,标准差为0.3的100
10正态随机矩阵
X=rbind(x1,x2)#形成200*10的随机矩阵
H=hclust(dist(X))
plot(H)
rect.hclust(H,2)
R语言 Kmeans聚类法 主成分分析
cutree(H,2)#系统聚类结果
R语言 Kmeans聚类法 主成分分析
km=kmeans(X,2)#kmeans聚类
km$cluster#分类结果
plot(X,pch=km $cluster)
R语言 Kmeans聚类法 主成分分析
eg模拟10个变量2000个样品的正态随机矩阵

set.seed(123)
x1=matrix(rnorm(10000,0,0.2),ncol = 10)
x2=matrix(rnorm(10000,1,0.2),ncol = 10)
km=kmeans(X,2)
kc=km$cluster
table(km)
plot(X,pch=kc,col=kc)

R语言 Kmeans聚类法 主成分分析
主成分分析
主成分分析是将多个指标化为少数几个综合指标的一种统计分析方法,即通过降维技术把多个变量化为几个少数主成分的方法。
eg
14名学生的身高与体重数据,做相关图以显示变量间的关系

x1=c(147,171,175,159,155,152,158,154,164,168,166,159,164,177)
x2=c(32,57,64,41,38,35,44,41,54,57,49,47,46,63)
cor(x1,x2)

R语言 Kmeans聚类法 主成分分析

plot(x1,x2,xlim = c(145,180),ylim = c(25,75))

R语言 Kmeans聚类法 主成分分析

lines(c(146,178),c(30,66),lwd=2)
lines(c(163,166),c(54,47))
library(shape)
lines(getellipse(24,3,mid = c(162,48),angle = 48),lty=3)

R语言 Kmeans聚类法 主成分分析
上图将坐标旋转。
主成分的一些说明:主成分分析的主要目的是用较少的变量去解释原资料中的大部分变异,即期望能将手中许多相关性很高的变量转化成互相独立的变量,并能解释大部分资料之变异的几个新变量,也就是所谓的主成分。

X=data.frame(x1,x2)
R=cor(X)#相关系数阵(统计学)
R
S=cov(X)#协方差阵(数学)
S

R语言 Kmeans聚类法 主成分分析
后面计算基于相关系数矩阵。
求主成分就是寻找线性函数,使相应的方差达到最大。

svd(S)#协差阵的奇异值分解
svd(R)#相关阵的奇异值分解

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

pc=princomp(X)
pc
pc$sdev^2#主成分方差

R语言 Kmeans聚类法 主成分分析
主成分载荷(主成分R语言 Kmeans聚类法 主成分分析

pc$loadings

R语言 Kmeans聚类法 主成分分析
将主成分系数带入R语言 Kmeans聚类法 主成分分析
中即可得主成分得分

pc$loadings
pc$scores

R语言 Kmeans聚类法 主成分分析

pc$scores
plot(pc$scores,asp=1)
abline(h=0,v=0,lty=3)

R语言 Kmeans聚类法 主成分分析
信息量基本在成分1上,很少在成分2上,进一步做看的更清晰

biplot(pc$scores,pc$loadings)
abline(h=0,v=0,lty=3)

R语言 Kmeans聚类法 主成分分析
(biplot(scores,loading…) scores是因子得分,loadings因子载荷)
用综合统计量评估主成分:

summary(pc)

R语言 Kmeans聚类法 主成分分析
方差贡献(standard deviation),方差贡献率(proportion of variance),方差累计贡献率(cumulative proportion)
主成分分析步骤:
1.将原始数据标准化,得标准数据矩阵
2.建立相关系数矩阵
3.求特征值及特征向量
4.获得主成分
主成分注意事项
1.主成分分析,最好以相关系数矩阵为主
2.为使方差达到最大,通常主成分分析是不加以转轴
3.通常将特征值小于1的成分放弃,只保留大于1的成分
4.在实际研究里,若用3或5个成分,就能解释变异80%也行
5.使用主成分,会使各变量方差为最大,且成分间彼此独立
R语言 Kmeans聚类法 主成分分析