Wolfram mathematica 在Mathematica中,你是如何计算条件概率的。可能吗?

Wolfram mathematica 在Mathematica中,你是如何计算条件概率的。可能吗?,wolfram-mathematica,mathematica-8,Wolfram Mathematica,Mathematica 8,Mathematica是否可以进行贝叶斯规则条件概率计算,而不必手动进行计算?如果是,怎么做 我一直在搜索Mathemtaica doco和web以获取提示,但找不到任何东西。我不想知道如何通过Mathematica手动执行Bayes规则,我想知道是否有一种方法可以定义条件概率并自动计算其他概率 因此,使用假设伯努利分布的玩具示例 P(Cancer+) = 0.01 P(Cancer-) = 0.99 P(Test+|Cancer+) = 0.9 P(Test-|Cancer+) = 0.1

Mathematica是否可以进行贝叶斯规则条件概率计算,而不必手动进行计算?如果是,怎么做

我一直在搜索Mathemtaica doco和web以获取提示,但找不到任何东西。我不想知道如何通过Mathematica手动执行Bayes规则,我想知道是否有一种方法可以定义条件概率并自动计算其他概率

因此,使用假设伯努利分布的玩具示例

P(Cancer+) = 0.01
P(Cancer-) = 0.99

P(Test+|Cancer+) = 0.9
P(Test-|Cancer+) = 0.1
P(Test+|Cancer-) = 0.2
P(Test-|Cancer-) = 0.8
有可能解决这个问题吗

P(Cancer+|Test+) = 0.0434
因此,使用下面的方法

Print["P(C+) = ", PCancerT=BernoulliDistribution[0.01]];
Print["P(C-) = ", PCancerF=BernoulliDistribution[0.99]];
Print[]
Print["P(T+|C+) = ", PTestTGivenCancerT=BernoulliDistribution[0.9]];
Print["P(T-|C+) = ", PTestFGivenCancerT=BernoulliDistribution[0.1]];
Print["P(T+|C-) = ", PTestTGivenCancerF=BernoulliDistribution[0.2]];
Print["P(T-|C-) = ", PTestFGivenCancerF=BernoulliDistribution[0.8]];
Print[]
Print["P(T+,C+) = ", PTestTAndCancerT = Probability[vCT&&vTTCT,{vCT\[Distributed]PCancerT,vTTCT\[Distributed]PTestTGivenCancerT}]];
Print["P(T-,C+) = ", PTestFAndCancerT = Probability[vCT&&vTFCF,{vCT\[Distributed]PCancerT,vTFCF\[Distributed]PTestFGivenCancerT}]];
Print["P(T+,C-) = ", PTestTAndCancerF = Probability[vCF&&vTTCF,{vCF\[Distributed]PCancerF,vTTCF\[Distributed]PTestTGivenCancerF}]];
Print["P(T-,C-) = ", PTestFAndCancerF = Probability[vCF&&vTTCF,{vCF\[Distributed]PCancerF,vTTCF\[Distributed]PTestFGivenCancerF}]];
Print[]
Print["P(C+|T+) = ?"];
Print["P(C+|T-) = ?"];
Print["P(C-|T+) = ?"];
Print["P(C-|T-) = ?"];
我可以通过手工定义所有的概率表来计算出联合概率,但是有没有办法让Mathematica来做这项繁重的工作呢? 有没有办法定义和计算这些条件概率

非常感谢您的帮助,即使是“您不能……停止尝试”:


PS:这是不是在试图按照这些思路做一些事情

我不会用
Print
语句和
BernoulliDistribution
s使问题复杂化。你知道概率,所以最简单的方法是直接计算它们,但也许可以使用向量得到P(B),并使用pr(癌症)=1-pr(非癌症)这一事实,依此类推

Bayes定理表明p(A | B)=(p(A⋂ B) )/(P(B))

交叉点计算为条件概率(测试给定癌症)乘以癌症概率

因此,类似于以下内容的内容应该会起作用:

conditionalProb[pC_, pTC_, pTNC_] /; 
 (0 < pC < 1) && (0 < pTC < 1) && (0 < pTNC < 1) :=
 (pTC * pC)/({pTC, pTNC}.{pC, 1 - pC})

conditionalProb[0.01, 0.9, 0.2]

0.0434783
conditionalProb[pC,pTC,pTNC]/;
(0

是的,版本8中的功能确实允许您“自动”计算条件概率,但对于贝努利分布式事件这样的问题,这是一个过火的问题。

实际上。。。我在过去以象征性的方式解决了这个问题,它涵盖了很多简单的(未限制的)概率。我想添加链接并不难(见下文)。欢迎你补充回答。符号方法比使用伯努利分布、创建贝叶斯定理的过程以及每次都考虑应用它的正确方法要灵活得多

注意:函数没有绑定,就像上面的帖子
((0
,因为有时候你想要“未加权”的结果,它会产生0-1范围之外的数字,然后你可以通过除以一些标准化概率或概率乘积将其带回到范围内。如果确实要为错误检查添加边界,请执行以下操作:

P[A_u/;0谢谢,当在mma中执行时,这篇文章只是一次尝试,希望能让人更清楚地理解我试图实现的目标,可能会适得其反。正如我所知道的答案,我可以用一个简单的Bayws规则函数轻松地得出这个特定的答案。我想我问的是mma是否有能力进行更复杂的推理t不必明确定义计算。例如,能够计算出P(癌症-|测试+,测试-,测试-)。其中癌症的概率+/-随每个连续测试结果略有变化。也可能使用不同的分布。是的,我知道概率函数,但无法计算出如何使其进行上述计算。我可能遗漏了一些非常基本的内容。@Bart,
概率
函数应该对其他分布执行您想要的操作,但对于值本质上是布尔值的两个事件,我的函数中更直接的方法更清晰。更改癌症概率与我的函数配合得很好:只需更改第一个参数,例如
conditionalProb[0.03,0.9,0.2]
。谢谢。我以前在这里有另一个帐户,但现在已经记不起它是什么了。我开始从头开始建立声誉。谢谢你的鼓励@Mr.Wizard如果我记得你的名字,我深表歉意。如果你找到了旧帐户,你应该能够通过为diamond modera标记你的一篇帖子来获得帐户合并请注意并请求。这是Gr3gK1,看看你是否能做点什么,我真的很感激!Gregory,我相信你可以自己做,除非新的用户权限发生了变化。你应该在你的帖子下方看到一个灰色链接,上面写着“flag”——点击它,然后选择“它需要”♦ 版主注意“然后是“其他”。在框中,请求帐户合并并包括上面的“users/959803/gr3gk1”。如果你有问题,我会为你做这件事,但这对你来说更有意义。请求!谢谢你的帮助!你是这个网站的真正资产!
Remove[P];
Unprotect@Intersection;
Intersection[A_Symbol, B_Symbol] := {A, B}
Intersection[A_Not, B_Symbol] := {A, B}
Intersection[A_Symbol, B_Not] := {A, B}
P[Int_List/; Length@Int == 2] := P[Int[[2]] \[Conditioned] Int[[1]]] P[Int[[1]]]
   (*//  P(B) given knowledge of P(A)  //*)
P[B_, A_] := If[NumericQ@B, B, 
                P[B \[Conditioned] A] P[A] + P[B \[Conditioned] Not@A] P[Not@A]]
P[Not@B_, A_: 1] := If[NumericQ@A, 1 - P[B], 1 - P[B, A]]
P[A_ \[Conditioned] B_] := P[A \[Intersection] B]/P[B, A]
P[Not@A_ \[Conditioned] B_] := 1 - P[A \[Conditioned] B];
P[Cancer]=0.01;
P[Test \[Conditioned] Cancer] = 0.9
P[Test \[Conditioned] ! Cancer] = 0.2
P[Test, Cancer]
P[!Test, Cancer]
0.207
0.793
P[Cancer \[Conditioned] Test]
P[!Cancer \[Conditioned] Test]
P[Cancer \[Conditioned] !Test]
P[!Cancer \[Conditioned] !Test]
0.0434783
0.956522
0.00126103
0.998739