【问题标题】:How to calculate the Bayes result如何计算贝叶斯结果
【发布时间】:2017-04-24 23:12:37
【问题描述】:

我想计算结果的后验概率,但找不到合适的函数。

这是我的代码,我从here学到的

prior = c(D = .0001, not.D = 1 - .0001)
like.D = c(pos=.99, neg=.01)
like.not.D = c(pos=.01, neg=.99)
likelihood = rbind(D = like.D, not.D = like.not.D)
data="pos"
bayes(prior, likelihood, data)

但我找不到“贝叶斯”的功能,所以我希望有人帮助我。

【问题讨论】:

    标签: r bayesian


    【解决方案1】:

    该功能的链接(在您提供的链接上)似乎已失效,因此您需要联系页面作者。在这种情况下,计算起来并不困难,因为 posterior =似然*先验。所以只需通过乘以表格来计算。似乎您想要的计算是给定 pos 可能性(测试?)的 D(疾病?)的概率

    > joint = likelihood * prior
    > # marginalise to calculate posterior (need to normalise)
    > cs = colSums(joint)
    > joint[,"pos"] / cs["pos"]
              D       not.D 
    0.009803922 0.990196078 
    

    作为替代方案,您可以使用 gRain 包将其构建为贝叶斯网络(疾病 -> 测试)

    > library(gRain)
    > d = cptable(~disease, values = prior, levels=names(prior))
    > tt = cptable(~test+disease, values=t(likelihood), levels=colnames(likelihood))
    > net = grain(compileCPT(list(d, tt)))
    > net2 = setEvi(net, evidence=list(test="pos"))
    > querygrain(net2)
    $disease
    disease
              D       not.D 
    0.009803922 0.990196078
    

    【讨论】:

      猜你喜欢
      • 2019-11-05
      • 1970-01-01
      • 2011-04-08
      • 2014-09-18
      • 2010-10-19
      • 2013-11-27
      • 2012-12-06
      • 2016-02-07
      • 2011-01-09
      相关资源
      最近更新 更多