如何在 SymPy 中创建一个参数本身就是随机变量的随机变量?

2024-01-03

我有一个随机变量 Y,其分布为泊松分布,参数本身就是随机变量 X,其分布为泊松分布,参数为 10。

如何使用 SymPy 自动计算 X 和 Y 之间的协方差? 代码

from sympy.stats import *
x1 = Poisson("x1", 3)
x2 = Poisson("x2", x1)
print(covariance(x2,x1))

引发错误ValueError: Lambda must be positive 我在这个问题上并不清楚文档,并且正在使用该功能given似乎不起作用。


SymPy 中未实现这种操作。但是您可以传递一个符号(下面的 z1)作为分布的参数。然后在第一步计算后,将z1替换为x1并取期望值。

from sympy import Symbol
from sympy.stats import Poisson, E
z1 = Symbol("z1")
x1 = Poisson("x1", 3)
x2 = Poisson("x2", z1)
Ex2 = E(E(x2).subs(z1, x1))
Vx2 = E(E((x2-Ex2)**2).subs(z1, x1))
cov = E(E((z1-E(x1))*(x2-Ex2)).subs(z1, x1))
print("E(x2) = {}, var(x2) = {}, cov(x1, x2) = {}".format(Ex2, Vx2, cov))

Output:

E(x2) = 3, var(x2) = 6, cov(x1, x2) = 3

注意外观Ex2代替E(x2)在方差和协方差的公式中。使用E(x2)这里会给出不正确的结果,因为E(x2)是涉及 z1 的表达式。出于同样的原因我不使用variance or covariance函数(因为它们涉及变量E(x2)而不是正确的值 3),将所有内容明确表达为期望值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 SymPy 中创建一个参数本身就是随机变量的随机变量? 的相关文章

随机推荐