python - 如何计算Python中两个二项分布变量的联合概率分布?

标签 python scipy probability

是否有一个现有的公式,也许在 scipy.stats 中,可以让我计算两个二项式变量的联合概率,如下图所示?

enter image description here

我想做的是检验联合概率与 1 相比是否在统计上显着。

我不太确定要使用哪个测试(binom.pmf、binom.sf、binom.cdf)来执行此操作。

编辑 1:

举例说明我想如何应用它。考虑在上升趋势和下降趋势市场中进行交易的交易者。交易者可以购买 Assets 或卖空 Assets 。因此,如果交易者在市场处于上升趋势(下降趋势)时买入(卖出) Assets ,他将获利 $\pi$,而如果他在市场处于上升趋势(下降趋势)时买入(卖出) Assets ,他将亏损处于下降趋势(上升趋势)。因此,我有兴趣计算联合概率,使得交易者在上升趋势和下降趋势市场中超过 50% 的随机概率。换句话说:

$$\text{H$_0$ : Pr}(i\in Buy | profit >0) +\text{Pr}(i\in Sell| profit >0 ) =1 $$

如果交易者能够在上升趋势和下降趋势市场中获利,并且在显着性检验中概率之和超过 1,则该交易者被认为是熟练的。

编辑 2

也许第一个表有点困惑。如果我要画一个前面例子的列联表,它会是这样的:

        Uptrend             Downtrend
Buy     profit>0 (Success)  profit<0 (Failure)
Sell    profit<0 (Failure)  profit>0 (Success)

我对在上升趋势和下降趋势市场中成功的联合概率感兴趣。

最佳答案

您给出的公式表明,任何特定 y_1 和 y_2 的联合概率密度只是 y_1 的概率与 y_2 的概率的乘积(即事件是独立的)。如果您想以编程方式实现此功能以获得二维概率矩阵,则需要两个向量的外积,这两个向量给出了 y_1 和 y_2 的概率分布。 例如:

from scipy.stats import binom
import numpy
n1, p1 = 10, 0.3
n2, p2 = 15, 0.8
pdf1 = binom(n1, p1).pmf(numpy.arange(0, n1+1))
pdf2 = binom(n2, p2).pmf(numpy.arange(0, n2+1))
joint_pdf = numpy.outer(pdf1, pdf2)

关于python - 如何计算Python中两个二项分布变量的联合概率分布?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30675447/

相关文章:

Python/Pandas - 用另一个数据框中的值替换一个数据框中的元素

python - 如何使用 plotly 绘制梯度下降

Python - ip <-> 子网匹配?

r - 如何计算分位数中观察值的数量?

python - 识别一个数据集中的单独正态分布

python - 编程语言如何调用用另一种语言编写的代码?

python - PIL属性错误: Shape when creating an array

python - 为什么 Scipy 的 KDTree 这么慢?

python - 如何检查 scipy 分布是否离散?

c++ - 解决 "Theater Row"脑筋急转弯的代码