2017-04-14 143 views
1

我使用R中的prob包來計算條件概率。概率包似乎計算錯誤條件概率?

我的數據集是

Q1 Q2 Q3 Q4 

    1 1 0 0 
    0 0 0 0 
    0 1 0 1 
    0 1 0 1 

我想計算概率(Q2 = 1個給出Q4 = 1),按我所知,這應該是1,但是當我在R中,使用下面的命令

Prob(a,Q2==1,Q4==1)它返回0.5

它怎麼迴歸0.5?是0.5,對嗎?我懷疑我的答案。

第二個問題是,如果我改變數據設置爲

Q1 Q2 Q3 Q4 
    1 1 0 0 
    1 0 1 0 
    0 1 0 1 
    1 1 1 1 

當我使用上面的數據,計算上述概率則返回1 怎麼來的概率變化,當我不改變Q2和Q4。
我的想法是它應該是相同的1在這兩種情況下。

它是如何通過改變其他參數Q1和Q3而改變的。我認爲它應該隨着P(Q2 = 1/Q4 = 1)獨立於Q1和Q3而改變。

+1

請更新您的問題以使其具有可重現性,也就是包含我們可以在R終端中運行的數據和代碼,以複製您從prob包獲得的結果。 – josliber

+0

我有0.25,在probs – user395882

+0

@ Marat:根據您的意見,正確的答案是什麼。這迫使我懷疑我的答案。 – user395882

回答

2

問題是Prob使用intersect排除重複。所以它的計算是sum(intersect(A, B)$probs)/sum(B$probs),它是0.25/0.5 = 0.5。

如果你想正確的計算,你必須使用專屬概率像這樣(3號線有50%的概率):

a <-read.table(text="Q1 Q2 Q3 Q4 
    1 1 0 0 
    0 0 0 0 
    0 1 0 1",header=TRUE,stringsAsFactors=FALSE) 
a$probs <-c(0.25,0.25,0.5) 

Prob(a,event=Q2==1,given=Q4==1) 
[1] 1 

關於你的第二個問題,Prob工作正常,因爲intersect不會刪除重複項,因爲第3行和第4行是不同的。

+0

我想我們在'Prob'中發現了一個錯誤。爲了解決這個問題,我們應該用p < - sum(x $ probs [g&r])/ sum來代替'p < - sum(intersect(A,B)$ probs)/ sum(B $ probs) (x $ probs [g])'在函數源中。 –

+1

@MaratTalipov在我看來,不是一個錯誤,雖然也許他們可以添加功能或警告錯誤指定的示例空間。 – Frank

+0

@Frank,類似於重複測試的初始測試?也許你是對的。 –