我正在使用R中的prob
包来计算条件概率。
我的数据集是
Q1 Q2 Q3 Q4
1 1 0 0
0 0 0 0
0 1 0 1
0 1 0 1
我想计算prob(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时,概率如何变化。
我的想法是两种情况都应该相同。
如何通过其他参数Q1和Q3的变化来改变它。我认为它应该改变,因为P(Q2 = 1 / Q4 = 1)与Q1和Q3无关。
答案 0 :(得分: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行不同。