我正在寻找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行的日期
所以,我以为我可以得到一个功能帮助我!
答案 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