#图2.1马氏距离例 rm(list=ls()) x=seq(from=-5,to=10,by=0.01) y1=dnorm(x,0,1) #计算密度 y2=dnorm(x,4,2) #计算密度 plot(x,y1,type="l",xlab="", ylab="",axes=F,xlim=c(-5,10), ylim=c(0,0.4)) lines(x,y2,type="l") axis(2) rect(-5.8, 0, 10, 0.4) rect(0, 0, 0, 0.4) rect(1.658, 0, 1.658, 0.1) rect(4, 0, 4, 0.2) text(1.658,-0.01,expression(A),cex=1) text(0,-0.008,expression(0),cex=0.9) text(4,-0.01,expression(4),cex=1) #图2.2聚类方法示意图 #(a) plot(0,0,type="l",xlab="", ylab="",axes=F,xlim=c(-0.3,4), ylim=c(-0.2,3)); points(0.46,1.35);text(0.5,1.25,expression(italic(w)[6]),cex=1.2) points(1.06,1.35);text(1.1,1.25,expression(italic(w)[4]),cex=1.2) points(0.96,1.65);text(1,1.55,expression(italic(w)[5]),cex=1.2) points(0.26,1.95);text(0.3,1.85,expression(italic(w)[7]),cex=1.2) points(2.16,1.15);text(2.2,1.05,expression(italic(w)[3]),cex=1.2) points(2.76,1.15);text(2.8,1.05,expression(italic(w)[2]),cex=1.2) points(2.46,0.755);text(2.5,0.65,expression(italic(w)[1]),cex=1.2) text(1.5,0.35,expression((a)),cex=1) #(b) x=c(0.5,0.5,1.5,1.5,1,1,1.5,1.5,2,2,2,1.75,1.75,1.5,1.5,1,1,3,3,2.5,2.5,2.5,3.5,3.5,3,3) y=c(0,2,2,1.5,1.5,0,0,0.5,0.5,0,0.5,0.5,1.5,1.5,2,2,2.5,2.5,1,1,0,1,1,0,0,1) plot(x,y,type="l",xlab="", ylab="",axes=F,xlim=c(-0.3,4), ylim=c(-0.4,3)); arrows(-0.3,0, 4, 0,length=0.08,lwd=1,angle=13) arrows(0,-0.2, 0, 3,length=0.08,lwd=1,angle=13) text(0.2,3,expression(italic(d)),cex=1.2) text(4,0.2,expression(italic(x)),cex=1.2) text(-0.1,-0.12,expression(0),cex=1) text(0.5,-0.12,expression(italic(w)[7]),cex=1) text(1,-0.12,expression(italic(w)[6]),cex=1) text(1.5,-0.12,expression(italic(w)[5]),cex=1) text(2,-0.12,expression(italic(w)[4]),cex=1) text(2.5,-0.12,expression(italic(w)[3]),cex=1) text(3,-0.12,expression(italic(w)[2]),cex=1) text(3.5,-0.12,expression(italic(w)[1]),cex=1) text(-0.2,0.5,expression(italic(d[1])),cex=1) text(-0.2,1,expression(italic(d[2])),cex=1) text(-0.2,1.5,expression(italic(d[3])),cex=1) text(-0.2,2,expression(italic(d[4])),cex=1) text(-0.2,2.5,expression(italic(d[5])),cex=1) text(2,-0.35,expression((b)),cex=1) rect(0,0.5,1.5,0.5,lty=2) rect(0,1,2.5,1,lty=2) rect(0,1.5,1,1.5,lty=2) rect(0,2,1.5,2,lty=2) rect(0,2.5,1,2.5,lty=2) #图2.3 #(a) x=c(1,1,2,2,2,1.5,1.5,3.5,3.5,3,3,4,4,3.5,3.5,2.5,2.5,5,5) y=c(0,1,1,0,1,1,3,3,2,2,0,0,2,2,3,3,4,4,0) plot(x,y,type="l",xlab="", ylab="",axes=F,xlim=c(-0.3,5.5), ylim=c(-0.6,4.5)); arrows(-0.3,0, 5.5, 0,length=0.08,lwd=1,angle=13) arrows(0,-0.2, 0, 4.5,length=0.08,lwd=1,angle=13) text(0.2,4.4,expression(italic(f)),cex=1.2) text(5.4,0.2,expression(italic(x)),cex=1.2) text(-0.1,-0.2,expression(0),cex=0.8) text(5,-0.2,expression(italic(w)[5]),cex=1) text(4,-0.2,expression(italic(w)[4]),cex=1) text(3,-0.2,expression(italic(w)[3]),cex=1) text(2,-0.2,expression(italic(w)[2]),cex=1) text(1,-0.2,expression(italic(w)[1]),cex=1) text(1.5,0.8,expression(italic(h)[6]),cex=0.9) text(3.5,1.8,expression(italic(h)[7]),cex=0.9) text(2.5,2.8,expression(italic(h)[8]),cex=0.9) text(4,3.8,expression(italic(h)[9]),cex=0.9) text(-0.12,1,expression(1),cex=1) text(-0.12,2,expression(2),cex=1) text(-0.12,3,expression(3),cex=1) text(-0.12,4,expression(4),cex=1) text(2.7,-0.6,expression((a)),cex=1) rect(0,1,1,1,lty=2) rect(0,4,2.5,4,lty=2) rect(0,2,3,2,lty=3) rect(0,3,1.5,3,lty=3) #(b) plot(0,0,type="l",xlab="", ylab="",axes=F,xlim=c(-0.3,5.5), ylim=c(-0.6,4.5)); text(4.5,2.8,expression(italic(w)[5]),cex=1) text(4,0.8,expression(italic(w)[4]),cex=1) text(3,0.8,expression(italic(w)[3]),cex=1) text(2,0.8,expression(italic(w)[2]),cex=1) text(1,0.8,expression(italic(w)[1]),cex=1) text(1.5,1.8,expression(italic(h)[6]),cex=0.9) text(3.5,1.8,expression(italic(h)[7]),cex=0.9) text(2.5,2.8,expression(italic(h)[8]),cex=0.9) text(3.5,3.8,expression(italic(h)[9]),cex=0.9) text(2.7,-0.6,expression((b)),cex=1) segments(1,1,1.5,1.6) segments(2,1,1.5,1.6) segments(3,1,3.5,1.6) segments(4,1,3.5,1.6) segments(1.5,2,2.5,2.6) segments(3.5,2,2.5,2.6) segments(2.5,3,3.5,3.6) segments(4.5,3,3.5,3.6) #图2.4 #(a) x=c(1,1,2,2,3,3,4,4,5,5,3.5,3.5,3.5,4.3,4.3,1.5,1.5) y=c(0,1,1,0,0,2,2,0,0,4,4,2,4,4,6,6,1) plot(x,y,type="l",xlab="", ylab="",axes=F,xlim=c(-0.3,5.5), ylim=c(-0.6,6.5)); arrows(-0.3,0, 5.5, 0,length=0.08,lwd=1,angle=13) arrows(0,-0.2, 0, 6.5,length=0.08,lwd=1,angle=13) text(0.2,6.4,expression(italic(f)),cex=1.2) text(5.4,0.3,expression(italic(x)),cex=1.2) text(-0.1,-0.2,expression(0),cex=0.8) text(5,-0.2,expression(italic(w)[5]),cex=1) text(4,-0.2,expression(italic(w)[4]),cex=1) text(3,-0.2,expression(italic(w)[3]),cex=1) text(2,-0.2,expression(italic(w)[2]),cex=1) text(1,-0.2,expression(italic(w)[1]),cex=1) text(1.5,0.7,expression(italic(h)[6]),cex=0.9) text(3.5,1.7,expression(italic(h)[7]),cex=0.9) text(4.3,3.7,expression(italic(h)[8]),cex=0.9) text(3,5.7,expression(italic(h)[9]),cex=0.9) text(-0.12,1,expression(1),cex=1) text(-0.12,2,expression(2),cex=1) text(-0.12,3,expression(3),cex=1) text(-0.12,4,expression(4),cex=1) text(-0.12,5,expression(5),cex=1) text(-0.12,6,expression(6),cex=1) text(2.7,-0.6,expression((a)),cex=1) rect(0,1,1,1,lty=2) rect(0,2,3,2,lty=2) rect(0,4,3.5,4,lty=3) rect(0,6,1.5,6,lty=3) #(b) plot(0,0,type="l",xlab="", ylab="",axes=F,xlim=c(-0.3,5.5), ylim=c(-0.6,6.5)); text(5,2.2,expression(italic(w)[5]),cex=1) text(4,0.8,expression(italic(w)[4]),cex=1) text(3,0.8,expression(italic(w)[3]),cex=1) text(2,2.2,expression(italic(w)[2]),cex=1) text(1,2.2,expression(italic(w)[1]),cex=1) text(1.5,3.7,expression(italic(h)[6]),cex=0.9) text(3.5,2.2,expression(italic(h)[7]),cex=0.9) text(4.3,3.7,expression(italic(h)[8]),cex=0.9) text(3,5.7,expression(italic(h)[9]),cex=0.9) text(2.7,-0.6,expression((b)),cex=1) segments(3,1,3.5,2) segments(4,1,3.5,2) segments(1,2.5,1.5,3.5) segments(2,2.5,1.5,3.5) segments(3.5,2.5,4.3,3.5) segments(5,2.5,4.3,3.5) segments(1.5,4,3,5.5) segments(4.3,4,3,5.5) #案例2.1 x<-c(1,1,3,4,2,0,1,2,3,5); dim(x)<-c(5,2) d<-dist(x) hc1<-hclust(d, "single"); hc2<-hclust(d, "complete") hc3<-hclust(d, "average"); hc4<-hclust(d, "ward") opar <- par(mfrow = c(2, 2)) plot(hc1,hang=-1); plot(hc2,hang=-1) plot(hc3,hang=-1); plot(hc4,hang=-1) par(opar) 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,NA), cex=0.8, lab.cex = 0.8), type = "t", center=TRUE) plot(dend1, edgePar=list(col = 1:2, lty = 2:3), dLeaf=1, edge.root = TRUE) plot(dend1, nodePar=list(pch = 2:1,cex=.4*2:1, col = 2:3), horiz=TRUE) par(opar) #案例2.2 x<-c(0.974,2.092,3.5,2.291,1.638,1.495,1.24,3.231,3.3,-1.12,-2.83,-1.96,-1.08,-1.92,-1.45,-1.35,0.28,-1.2); dim(x)<-c(9,2) d<-dist(x) hc1<-hclust(d, "single"); hc2<-hclust(d, "complete") hc3<-hclust(d, "average"); hc4<-hclust(d, "ward") opar <- par(mfrow = c(2, 2)) plot(hc1,hang=-1); plot(hc2,hang=-1) plot(hc3,hang=-1); plot(hc4,hang=-1) par(opar) #案例2.3 read.csv("hn.csv",header=F)->DA d<-dist(DA) hc1<-hclust(d, "single") hc2<-hclust(d, "complete") hc3<-hclust(d, "average") hc4<-hclust(d, "ward.D") opar <- par(mfrow = c(2, 2)) plot(hc1,hang=-1); plot(hc2,hang=-1) plot(hc3,hang=-1); plot(hc4,hang=-1) par(opar)