【问题标题】:Expected value with symbolic probabilities in SymPySymPy 中具有符号概率的期望值
【发布时间】:2014-06-06 17:09:51
【问题描述】:

我想在不指定特定分布的情况下找到离散随机变量的期望值,这样我仍然可以象征性地操纵整个表达式。

例如,我如何在 sympy 中使用求和得到以下期望的 rhs?

http://www.texify.com/img/%5CLARGE%5C%21%5Csum_%7Bi%20%3D%201%7D%5E%7Bn%7D%20P%28a_i%29a_i%20%3D%20P%28a_1%29a_1%20%2B%20...%20%2B%20P%28a_n%29a_n%20.gif

【问题讨论】:

  • 为什么不直接将值/概率相乘和相加?
  • 您在使用 sympy.stats 吗?如果是这样,那么请注意,我们在操作中不要使用 this 符号。您需要指定一个分布。如果这对您很重要,请提出问题。但是,如果您可以只使用直接的 sympy 符号,那么请参阅下面的@asmeurer 的答案。

标签: python sympy probability


【解决方案1】:

如果n未知,可以使用summation

In [45]: i, n = symbols('i n', integer=True)

In [46]: p, a = symbols('p a', cls=Function)

In [47]: summation(p(a(i))*a(i), (i, 0, n))
Out[47]:
  n
 ___
 ╲
  ╲   a(i)⋅p(a(i))
  ╱
 ╱
 ‾‾‾
i = 0

如果n 已知,您可能只想表示实际总和:

In [48]: n = 10

In [49]: sum(p(a(i))*a(i) for i in range(1, n+1))
Out[49]: a(1)⋅p(a(1)) + a(2)⋅p(a(2)) + a(3)⋅p(a(3)) + a(4)⋅p(a(4)) + a(5)⋅p(a(5)) + a(6)⋅p(a(6)) + a(7)⋅p(a(7)) + a(8)⋅p(a(8)) + a(9)⋅p(a(9)) + a(10)⋅p(a(10))

【讨论】:

  • 谢谢!我没有考虑过使用函数进行索引,这是一个很好的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-20
  • 1970-01-01
  • 1970-01-01
  • 2018-03-24
  • 2019-05-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多