【发布时间】:2012-12-12 05:03:14
【问题描述】:
我正在寻找一种在 python 中存储和使用条件概率的好方法。
我正在考虑使用 pandas 数据框。如果某些X 的条件概率是P(X=A|P1=1, P2=1) = 0.2、P(X=B|P1=2, P2=1) = 0.9 等,我会使用数据框
A B
P1 P2
1 1 0.2 0.8
2 0.5 0.5
2 1 0.9 0.1
2 0.9 0.1
并给定 P1 和 P2 作为系列的边际概率
1 0.4
2 0.6
Name: P1
1 0.7
2 0.3
Name: P2
我想得到X的边际概率系列,即系列
A 0.602
B 0.398
Name: X
我可以得到我想要的东西
X = sum(
sum(
X.xs(i, level="P1")*P1[i]
for i in P1.index
).xs(j)*P2[j]
for j in P2.index
)
X.name="X"
但这并不容易推广到更多的依赖项,第一个 xs 与 level 和第二个没有之间的不对称看起来很奇怪,并且在使用 pandas 时像往常一样我很确定有一个使用它的技巧和方法更好的解决方案。
pandas 是一个很好的工具吗,我应该用另一种方式表示我的数据吗?在pandas 中进行这个计算的最佳方式是什么,这本质上是一个索引张量积?
【问题讨论】:
标签: python statistics pandas probability matrix-multiplication