数据价值-DataValues

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 326|回复: 0

[R语言] R语言之判别分析、贝叶斯判别分析_ r语言贝叶斯判别

[复制链接]

1万

主题

1万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
39029
发表于 2017-1-5 13:56:40 | 显示全部楼层 |阅读模式
R语言之判别分析、贝叶斯判别分析,
关键词: r语言贝叶斯判别、spss贝叶斯判别分析、贝叶斯判别分析,
#判别分析 用以判别个体所属群体的一种统计方法 判别分析重点是两类群体的判别方法,
#主要判别分析方法 有距离判别 贝叶斯判别 费歇判别法,
1、关键点:,
#贝叶斯判别 贝叶斯判别式假定对研究对象已有一定的认识 这种认识常用先验概率来描述
#当取得样本后 就可以用样本来修正已经有的先验概率分布 得出后验概率分布
#然后通过后验概率分布 进行各种统计推断,
#实际上就是使平均误判损失(误判概率与误判损失的结合)ECM达到极小的过程,
2、案例分析
(一)两个总体的贝叶斯判别分析
#1.载入数据
TrnX1 beta)
     blong <- 1
   else
     blong <- 2
}
blong
}
(二)多个总体贝叶斯判别
X<-iris[,1:4]
G<-gl(3,50)
source(“E:/R/distinguish.bayes.R”)
distinguish.bayes(X,G),
PS:=============distinguish.bayes.R====================,
#多个总体判别的贝叶斯判别程序
#输入 TrnX 表示训练样本 样本输入格式为数据框
#TrnG是因子变量 表示训练样本的分类情况
#输入变量p是先验概率 缺省值为1
#Tst为待测样本 其输入格式是数据框
#var.equal是逻辑变量 当其值为TRUE是表示认为两个总体的协方差相同 否则不同
#输出 函数的输出是数字构成的一维矩阵 1表示待测样本属于X1类
distinguish.bayes <- function
(TrnX, TrnG, p = rep(1, length(levels(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)))
}
if (is.null(TstX) == TRUE) TstX <- TrnX
if (is.vector(TstX) == TRUE) TstX <- t(as.matrix(TstX))
else if (is.matrix(TstX) != TRUE)
   TstX <- as.matrix(TstX)
if (is.matrix(TrnX) != TRUE) TrnX <- as.matrix(TrnX)
nx <- nrow(TstX)
blong <- matrix(rep(0, nx), nrow=1,
                 dimnames=list(“blong”, 1:nx))
g <- length(levels(TrnG))
mu <- matrix(0, nrow=g, ncol=ncol(TrnX))
for (i in 1:g)
   mu[i,] <- colMeans(TrnX[TrnG==i,])
D <- matrix(0, nrow=g, ncol=nx)
if (var.equal == TRUE || var.equal == T){
   for (i in 1:g){
     d2 <- mahalanobis(TstX, mu[i,], var(TrnX))
     D[i,] <- d2 – 2*log(p)
   }
}
else{
   for (i in 1:g){
     S <- var(TrnX[TrnG==i,])
     d2 <- mahalanobis(TstX, mu[i,], S)
     D[i,] <- d2 – 2*log(p)-log(det(S))
   }
}
for (j in 1:nx){
   dmin <- Inf
   for (i in 1:g)
     if (D[i,j] < dmin){
       dmin <- D[i,j]; blong[j] <- i
     }
}
blong
},
转载请注明:数据分析 » R语言之判别分析、贝叶斯判别分析_ r语言贝叶斯判别
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|DataValues ( 赣ICP备16006919号 ) DataValues

GMT+8, 2019-8-24 19:33 , Processed in 0.117322 second(s), 29 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表