全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
3646 1
2012-11-23
最近需要用R做贝叶斯先验估计,但看到很多贝叶斯的包,不知哪个是做先验估计的包,
具体来说,先验估计的方法有很多,如最大墒值法,二阶矩法,但不知如何用R来实现,
我知道数据是符合正态分布,也知道它的均值,想问怎么样求出95%分位点值?
(初学贝叶斯,不知哪位大侠可以说的清楚一点,最好可以把代码写一下)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-12-22 15:07:43
贝叶斯先验概率可以这么表示,看这个例子——
  
distinguish.bayes <- function

#多个总体判别的贝叶斯判别程序
(TrnX, TrnG, p = rep(1, length(levels(TrnG))),

#输入 TrnX 表示训练样本 样本输入格式为数据框
#TrnG是因子变量 表示训练样本的分类情况
#输入变量p是先验概率 缺省值为1
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
}



分位点的话,正态分布的分位点是——
下侧:
qnorm(0.025, 10)
上侧:
qnorm(0.025, 10)

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群