R软件做判别分析Word格式文档下载.docx

上传人:b****6 文档编号:21726870 上传时间:2023-02-01 格式:DOCX 页数:11 大小:245.01KB
下载 相关 举报
R软件做判别分析Word格式文档下载.docx_第1页
第1页 / 共11页
R软件做判别分析Word格式文档下载.docx_第2页
第2页 / 共11页
R软件做判别分析Word格式文档下载.docx_第3页
第3页 / 共11页
R软件做判别分析Word格式文档下载.docx_第4页
第4页 / 共11页
R软件做判别分析Word格式文档下载.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

R软件做判别分析Word格式文档下载.docx

《R软件做判别分析Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《R软件做判别分析Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。

R软件做判别分析Word格式文档下载.docx

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||var.equal==T){

S<

-var(rbind(TrnX1,TrnX2))

w<

-mahalanobis(TstX,mu2,S)-mahalanobis(TstX,mu1,S)

}

else{

S1<

-var(TrnX1);

S2<

-var(TrnX2)

-mahalanobis(TstX,mu2,S2)-mahalanobis(TstX,mu1,S1)

for(iin1:

nx){

if(w[i]>

0)blong[i]<

-1

else

blong[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.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.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<

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.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.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.15,0.15,0.16,0.25,0.21,0.18),

x7=c(75.00,75.00,75.00,15.0,30.00,30.00,30.00,70.00,70.00,30.0,30.0,30.0,18.00,75.00,75.00,40.00,40.00,180.00,180.00,180.00,180.00,45.00,45.00)

source("

discriminiant.distance.R"

discriminiant.distance(classX1,classX2,var.equal=TRUE)

discriminiant.distance(classX1,classX2)

TrnX1<

X1=c(13.85,22.31,28.82,15.29,28.79),

X2=c(2.79,4.67,4.63,3.54,4.90),

X3=c(7.80,12.31,16.18,7.50,16.12),

X4=c(49.60,47.80,62.15,43.20,58.10)

TrnX2<

X1=c(2.18,3.85,11.40,3.66,12.10),

X2=c(1.06,0.80,0.00,2.42,0.00),

X3=c(1.22,4.06,3.50,2.14,5.68),

X4=c(20.60,47.10,0.00,15.10,0.00)

TrnX<

X1=c(8.85,28.60),

X2=c(3.38,2.40),

X3=c(5.17,1.20),

X4=c(26.10,127.0)

discriminiant.distance(TrnX1,TrnX2)

(2)多样本

distinguish.distance<

-function(TrnX,TrnG,TstX=NULL,var.equal=FALSE){

if(is.factor(TrnG)==FALSE){

mx<

-nrow(TrnX);

mg<

-nrow(TrnG)

TrnX<

-rbind(TrnX,TrnG)

TrnG<

-factor(rep(1:

2,c(mx,mg)))

-TrnX

elseif(is.matrix(TstX)!

if(is.matrix(TrnX)!

=TRUE)TrnX<

-as.matrix(TrnX)

-matrix(rep(0,nx),nrow=1,

dimnames=list("

g<

-length(levels(TrnG))

mu<

-matrix(0,nrow=g,ncol=ncol(TrnX))

g)

mu[i,]<

-colMeans(TrnX[TrnG==i,])

D<

-matrix(0,nrow=g,ncol=nx)

D[i,]<

-mahalanobis(TstX,mu[i,],var(TrnX))

-mahalanobis(TstX,mu[i,],var(TrnX[TrnG==i,]))

for(jin1:

dmin<

-Inf

if(D[i,j]<

dmin){

-D[i,j];

blong[j]<

-i

多总体距离判别:

(要求数据矩阵或数据框)

X<

-matrix(c(34.16,7.44,1.12,7.87,95.19,69.30,33.06,6.34,1.08,6.77,94.08,69.70,36.26,9.24,1.04,8.97,97.30,68.80,40.17,13.45,1.43,13.88,

101.2,66.2,50.06,23.03,2.83,23.74,112.52,63.3,33.24,6.24,1.18,22.9,160.01,65.4,32.22,4.22,1.06,20.7,124.7,68.7,41.15,10.08,2.32,32.84,

172.06,65.85,53.04,25.74,4.06,34.87,152.03,63.5,38.03,11.2,6.07,27.84,146.32,66.8,34.03,5.41,0.07,5.2,90.10,69.5,32.11,3.02,0.09,3.14,85.15,70.8,44.12,15.12,1.08,15.15,103.12,64.8,54.17,25.03,2.11,25.15,110.14,63.7,28.07,2.01,0.07,3.02,81.22,68.3),nrow=15,ncol=6,byrow=TRUE)

G<

-gl(3,5)

Y<

-matrix(c(50.22,6.66,1.08,22.54,170.6,65.2,34.64,7.33,1.11,7.78,95.16,69.3,33.42,6.22,1.12,22.95,160.31,68.3,44.02,15.36,1.07,16.45,105.3,64.2),nrow=4,ncol=6,byrow=TRUE)

distinguish.distance(X,G,Y,var.equal=TRUE)

Bayes判别:

discriminiant.bayes<

-function

(TrnX1,TrnX2,rate=1,TstX=NULL,var.equal=FALSE){

if(is.null(TstX)==TRUE)TstX<

-rbind(TrnX1,TrnX2)

if(is.matrix(TrnX1)!

if(is.matrix(TrnX2)!

-matrix(rep(0,nx),nrow=1,byrow=TRUE,

-var(rbind(TrnX1,TrnX2));

beta<

-2*log(rate)

-var(TrnX1);

beta<

-2*log(rate)+log(det(S1)/det(S2))

-mahalanobis(TstX,mu2,S2)-mahalanobis(TstX,mu1,S2)

beta)

例2:

两样本

-matrix(

c(24.8,24.1,26.6,23.5,25.5,27.4,

-2.0,-2.4,-3.0,-1.9,-2.1,-3.1),

ncol=2)

c(22.1,21.6,22.0,22.8,22.7,21.5,22.1,21.4,

-0.7,-1.4,-0.8,-1.6,-1.5,-1.0,-1.2,-1.3),

discriminiant.bayes.R"

discriminiant.bayes(TrnX1,TrnX2,rate=8/6,var.equal=TRUE)

distinguish.bayes<

-function(TrnX,TrnG,p=rep(1,length(levels(TrnG))),TstX=NULL,var.equal=FALSE){

if(is.matrix(TrnX)!

-matrix(0,nrow=g,ncol=nx)

g){

d2<

-d2-2*log(p[i])

-var(TrnX[TrnG==i,])

-mahalanobis(TstX,mu[i,],S)

-d2-2*log(p[i])-log(det(S))

distinguish.bayes(X,G,p=rep(1,length(levels(G))),Y,var.equal=TRUE)

(3)Fisher判别

discriminiant.fisher<

-function(TrnX1,TrnX2,TstX=NULL){

n1<

-nrow(TrnX1);

n2<

-nrow(TrnX2)

-(n1-1)*var(TrnX1)+(n2-1)*var(TrnX2)

-n1/(n1+n2)*mu1+n2/(n1+n2)*mu2

-(TstX-rep(1,nx)%o%mu)%*%solve(S,mu2-mu1);

if(w[i]<

=0)

多总体Fisher判别:

(要求数据框)

library(MASS)

-data.frame(X,Sp=rep(c("

1"

"

2"

3"

),rep(5,3)))

Train<

-data.frame(matrix(c(50.22,6.66,1.08,22.54,170.6,65.2,34.64,7.33,1.11,7.78,95.16,69.3,33.42,6.22,1.12,22.95,160.31,68.3,44.02,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1