在更高的抽象级别上进行概率计算

时间:2011-11-26 22:48:17

标签: wolfram-mathematica mathematica-8

  

对于downvoters:这不是一个关于数学的问题,它是一个问题   关于编程语言的问题 Mathematica

Mathematica的一个主要特征是它可以象征性地处理许多事情。但是如果你想一想,许多象征性的特征实际上只是象征性的一半。

以矢量为例。我们可以有一个像{x,y,z}这样的符号向量,用一个满是符号的矩阵进行矩阵乘法,最后得到一个符号结果,所以我们可以考虑那个符号向量代数。但我们都知道,开箱即用,Mathematica不允许您说符号 x 是一个向量,并且给出一个矩阵 A 一个 x 也是一个矢量。这是一个更高级别的抽象,Mathematica(目前)并不是很好。

类似地,Mathematica知道如何找到函数的第五个导数,这个导数是用符号来定义的,但它并不适合于找到 r 衍生物(参见" How to find a function's rth derivative when r is symbolic in Mathematica?"问题)。

此外,Mathematica有广泛的Boolean algebra capabilities,有些石器时代,但最近很多都是在版本7中获得的。在版本8中我们得到Probability和朋友(例如Conditioned)允许我们用给定分布的随机变量的概率推理。这是一个非常壮观的补充,这有助于我熟悉这个领域,我非常喜欢与它合作。然而,...

我正在与同事讨论某些概率逻辑规则,如熟悉的

enter image description here

即,事件/状态/结果的条件概率 C 给定事件/状态/结果 A 为真。

具体来说,我们正在考虑这个:

enter image description here

虽然在我意识到我不知道如何使用Mathematica立即解决这个问题之前,我已经高度评价了Mathematica的Probability。同样,就像抽象向量和矩阵以及符号导数一样,这似乎是一个过高的抽象层次。或者是吗?我的问题是:

您是否可以使用Mathematica程序找到在上述和类似方程中找到真或假的方法?

2 个答案:

答案 0 :(得分:3)

<强>&GT;&GT; Mathematica不允许您说符号x是向量

确实它确实......无论如何足够近......它是Reals的集合。它被称为假设或条件,取决于你想做什么。

Refine[Sqrt[x]*Sqrt[y]]

上面没有改进,因为它假设X和Y可以是任何符号,但如果缩小范围,就会得到结果:

Assuming[ x > 0 && y > 0, Refine[Sqrt[x]*Sqrt[y]]]

有能力说:Element[x,Reals^2](二维真实矢量),也许在Mathematica 9中会很高兴: - )


至于这个问题:

<强>&GT;&GT;您是否可以使用Mathematica程序找到在上述和类似方程中找到真或假的方法?

请参考我在这个问题上的答案(第一个),看看贝叶斯定理的符号方法: https://stackoverflow.com/questions/8378336/how-do-you-work-out-conditional-probabilities-in-mathematica-is-it-possible

答案 1 :(得分:1)

只是看了一眼,并在Condition的文档中找到了一个例子:

In[1]:= c = x^2 < 30; a = x > 1;

对不起这里的格式......

In[2]:= Probability[c \[Conditioned] a, x \[Distributed] PoissonDistribution[2]] == 
Probability[c && a, x \[Distributed] PoissonDistribution[2]] / Probability[a, x \[Distributed] PoissonDistribution[2]]

评估为True,对应于您提供的第一个示例的不太通用的版本。

如果我有时间的话,今晚我会再次访问。