在R中使用贝叶斯公式?

时间:2013-06-22 13:04:54

标签: r bayesian

我正在寻找R中的一个包,它可以帮助我计算事件的后验概率。有没有?

好的,我正在处理这样的数据集

年龄教育等级通过
group1 primary 50 no
group2 tertiary 20 no
group1 secondary 70是的 group2 secondary 67是的 group1 secondary 55是的 group1 secondary 49没有
group1 secondary 76是的

我之前通过考试的概率是0.6,现在我需要根据他的年龄,教育程度和成绩来获得学生通过的后验概率 我知道我应该得到第一个P(年龄= group1 | pass = yes)* P(education = primary | pass = yes)* P(等级> 50 | pass = yes)
但是这应该针对每个案例(行)进行,并且我有一个1000行的日期 所以,我以为我可以得到一个功能帮助我!

2 个答案:

答案 0 :(得分:1)

有许多包/功能可用。你应该看看Bayesian inference Task View

此外,如果您的先验不是完整分布并且只是概率的一个点估计,那么您可能实际上并没有进行贝叶斯推理,只是在频率框架中使用贝叶斯规则。非常不一样。但现在我们进入了CrossValidated领域。

答案 1 :(得分:-1)

这只是一个变量(教育)和变量(传递)的答案:

# get the prior probabilities  
prior<- c(prior_no, prior_yes)

# get contingency table of values for mydata
edu_table<- with(mydata,table(mydata$pass, mydata$education))

# get the sum across (pass)
tots<- apply(edu_table,1,sum)

# create matrix of 0's
ppn<- edu_table*0  
post<- edu_table*0  

# use a loop to get the prior probabilities& posterior probabilities
for(i in 1:length(tots)){
  for( j in 1: 4){

    ppn[i,j]=edu_table[i,j]/tots[i]
    post[i,j]=prior[i]*ppn[i,j]/(prior[1]*ppn[1,j]+prior[2]*ppn[2,j])

  }
} 

ppn # probability of education=j given y=i
post # posterior probability of y=i given education=j