我正在尝试在Python中对多变量分布进行积分计算。为了测试它,我使用了一个双变量正态分布的玩具例子。我使用nquad()
来扩展到更多的变量。下面是代码:
import numpy as np
from scipy import integrate
from scipy.stats import multivariate_normal
def integrand(x0, x1, mean, cov):
return multivariate_normal.pdf([x0, x1], mean=mean, cov=cov)
mean = np.array([100, 100])
cov = np.array([[20, 0], [0, 20]])
res, err = integrate.nquad(integrand,
[[-np.inf, np.inf], [-np.inf, np.inf]],
args=(mean, cov))
print(res)
我得到的结果是
9.559199162933625e-10
。显然,这是不正确的。它应该接近于1。这里的问题是什么?
scipy.stats.mvn
,它没有文档,不适合公开使用,并且将在Scipy 2.0中被移除:https://github.com/scipy/scipy/blob/main/scipy/stats/mvn.py - undefined