##了解基础知识
聚类分析与判别分析都是研究分类问题,但两者有本质的区别。聚类分析一般是寻求客观分析的方法,事先对总体的几种类型无从知道,而判别分析则是在总体类型划分已知,各总体分布或来自各个总体训练样本的基础上,对当前的新样本用统计分析的方法判定它们属于哪个总体。
1.聚类分析基本思想
系统聚类法是将n个样品分成若干类的方法,其基本思想是:先将n个样品各自看成一类,然后根据类与类之间的距离,选择距离最小的一对合成新的一类,计算新类与其他类的距离,再将距离最近的两类合并,直至所有的样品都称为一类。
在R中与距离计算有关的函数dist(),其语法和参数如下:
dist(x,method,diag=FALSE,upper=FALSE,p=2)
说明:
x是样本构成的数据矩阵(样本按行输入)或数据框;method表示计算距离的方法,默认为欧式距离(euclid);
diag(logical)表示是否输出对角线上的元素;upper(logical)当upper=T时,输出上三角矩阵的值(默认输出下三角矩阵的值)
2. 系统聚类法
系统聚类计算的R函数以及系统聚类的树形图(或谱系图dendrogram)函数分别是:
hclust()函数和plot()函数,参数与语法分别如下:
hclust(d,method=”complete”,members=NULL)
说明:
d是由”dist”构成的距离结构,method是系统聚类的方法(默认是最长距离法),其参数有”single”,”median”,
“complete”,”ward”,”average”,”centroid”,”mcquitty”这七种.
plot(x,labels=NULL,hang=-1,axes=T,main=”cluster dendrogram”,xlab=NULL,ylab=”Height”,…)
说明:
x是由hclust()函数生成的对象,hang表明谱系图中各类所在的位置,取负值表示谱系图中的类从底部画.
练习:
设有5个样本,每个样本只有一个指标,分别是1,2,6,8,11,样本间的距离选用Euclid距离,试进行聚类分析
```
R
#####输入数据,生成距离结构
x <- c(1,2,6,8,11);dim(x) <- c(5,1);d <- dist(x)#默认用欧式距离
####生成系统聚类,hclust()函数生成一个列表,组件是谱系树的各个成分
hc1 <- hclust(d,method="single") #最短距离法
hc2 <- hclust(d,method="complete") #最长距离法
hc3 <- hclust(d,method="median") #中间距离法
hc4 <- hclust(d,method="mcquitty") #相似法
####绘出谱系图,并以2*2的形式绘在一张图上
op <- par(mfrow=c(2,2))
plot(hc1,hang=-1)
plot(hc2,hang=-1)
plot(hc3,hang=-1)
plot(hc4,hang=-1)
par(op)
“`
补充:与绘谱系图有关的函数还有 as.dendrogram(),其意思是将系统聚类得到的对象强制为谱系图.使用格式为:
as.dendrogram(object,hang=-1,…),其中,object是由hclust得到的对象,
则对应的plot()函数的用法为:
plot(x,type=c(“rectangle”,”triangle”),center=FALSE,xlab=”“,ylab=”“,horiz=FALSE)
练习:
dend1 <- as.dendrogram(hc1)
opar <- par(mfrow=c(2,2),mar=c(4,3,1,2))
plot(dend1) plot(dend1,nodePar=list(pch=c(1:2