2013-06-22 48 views
-1

我正在尋找R中的一個包,它可以幫助我計算事件的後驗概率。有沒有?在R中使用貝葉斯公式?

好吧,我工作的這樣一組數據

年齡考試成績合格
1組主50沒有
第2組三級20沒有
1組二級70是
組2次級67是
1組二級55是
組1中學49否
組1中學76是

我有一個通過考試的學生的先驗概率是0.6,現在我需要得到考慮到他的年齡,教育程度和等級的學生準證的後驗概率
我知道我應該先得到P(age = group1 | P =(等級> 50 |通過=是)
但是這應該針對每種情況(行)進行,並且我有一個1000行的日期設置
所以,我想我可以得到一個功能幫助我!

+0

撇開,這是一個不可思議的模糊問題。有*許多* R包做各種形式的貝葉斯估計; '庫( 「SOS」); findFn(「貝葉斯」)會給你太多的結果。這個問題可能會很快關閉,但如果你可以提供更多的上下文和細節,有人可能會幫助... –

+0

我編輯了我的問題,希望它是明確 – meme

+3

它好多了。你爲什麼不嘗試'(你的數據,tapply(年齡,教育程度,等級> 50),通過,平均)/平均(通過))'看看這是否給你任何想法? –

回答

-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 
0

有很多可用的軟件包/功能。此外,如果您的先驗分佈不是一個完整的分佈,而只是一個概率的點估計,那麼您可能實際上並沒有進行貝葉斯推斷,只是在頻率主義框架中使用貝葉斯規則。非常不一樣。但現在我們正在進入CrossValidated領域。