资源描述:
《R软件做判别分析.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、R软件做判别分析:1.距离判别(1)两样本discriminiant.distance<-function(TrnX1,TrnX2,TstX=NULL,var.equal=FALSE){if(is.null(TstX)==TRUE)TstX<-rbind(TrnX1,TrnX2)if(is.vector(TstX)==TRUE)TstX<-t(as.matrix(TstX))elseif(is.matrix(TstX)!=TRUE)TstX<-as.matrix(TstX)if(is.matrix(TrnX1)!=TRUE)TrnX1<-as.matr
2、ix(TrnX1)if(is.matrix(TrnX2)!=TRUE)TrnX2<-as.matrix(TrnX2)nx<-nrow(TstX)blong<-matrix(rep(0,nx),nrow=1,byrow=TRUE,dimnames=list("blong",1:nx))mu1<-colMeans(TrnX1);mu2<-colMeans(TrnX2)if(var.equal==TRUE
3、
4、var.equal==T){S<-var(rbind(TrnX1,TrnX2))w<-mahalanobis(TstX,mu2,S)-mahalanob
5、is(TstX,mu1,S)}else{S1<-var(TrnX1);S2<-var(TrnX2)w<-mahalanobis(TstX,mu2,S2)-mahalanobis(TstX,mu1,S1)}for(iin1:nx){if(w[i]>0)blong[i]<-1elseblong[i]<-2}blong}例1:数据classX1<-data.frame(x1=c(6.60,6.60,6.10,6.10,8.40,7.2,8.40,7.50,7.50,8.30,7.80,7.80),x2=c(39.00,39.00,47.00,47.00,32
6、.00,6.0,113.00,52.00,52.00,113.00,172.00,172.00),x3=c(1.00,1.00,1.00,1.00,2.00,1.0,3.50,1.00,3.50,0.00,1.00,1.50),x4=c(6.00,6.00,6.00,6.00,7.50,7.0,6.00,6.00,7.50,7.50,3.50,3.00),x5=c(6.00,12.00,6.00,12.00,19.00,28.0,18.00,12.00,6.00,35.00,14.00,15.00),x6=c(0.12,0.12,0.08,0.08,0
7、.35,0.3,0.15,0.16,0.16,0.12,0.21,0.21),x7=c(20.00,20.00,12.00,12.00,75.00,30.0,75.00,40.00,40.00,180.00,45.00,45.00))classX2<-data.frame(x1=c(8.40,8.40,8.40,6.3,7.00,7.00,7.00,8.30,8.30,7.2,7.2,7.2,5.50,8.40,8.40,7.50,7.50,8.30,8.30,8.30,8.30,7.80,7.80),x2=c(32.0,32.00,32.00,11.
8、0,8.00,8.00,8.00,161.00,161.0,6.0,6.0,6.0,6.00,113.00,113.00,52.00,52.00,97.00,97.00,89.00,56.00,172.00,283.00),x3=c(1.00,2.00,2.50,4.5,4.50,6.00,1.50,1.50,0.50,3.5,1.0,1.0,2.50,3.50,3.50,1.00,1.00,0.00,2.50,0.00,1.50,1.00,1.00),x4=c(5.00,9.00,4.00,7.5,4.50,7.50,6.00,4.00,2.50,4
9、.0,3.0,6.0,3.00,4.50,4.50,6.00,7.50,6.00,6.00,6.00,6.00,3.50,4.50),x5=c(4.00,10.00,10.00,3.0,9.00,4.00,1.00,4.00,1.00,12.0,3.0,5.0,7.00,6.00,8.00,6.00,8.00,5.00,5.00,10.00,13.00,6.00,6.00),x6=c(0.35,0.35,0.35,0.2,0.25,0.25,0.25,0.08,0.08,0.30,0.3,0.3,0.18,0.15,0.15,0.16,0.16,0.1
10、5,0.15,0.16,0.25,0.21,0.18),x7=c(75.00,75.00,75