用于计算 scipy stats 中可用分布的 E(X) 的 Scipy 集成

问题描述

嗨,谁能帮我修复这个代码,提前致谢

from scipy.integrate import quad
import math
import numpy as np
from scipy import stats

lognorm_mu = 17.79
lognorm_sigma = 0.81

def integrand(x):
    return stats.lognorm.pdf(x,s= lognorm_sigma,scale=math.exp(lognorm_mu)) * x

我期待的结果是:

print(math.exp(lognorm_mu + lognorm_sigma ** 2 / 2)) ==> 73887187.89137973

但是我得到了这个输出

print(quad(integrand2,-np.inf,np.inf)[0]) =-> 8.373817736767941e-43

我如何编辑我的被积函数以进行积分(xf(x)dx,-inf,+inf)?如果我要做积分(x^2f(x)dx,-inf,+inf) 呢?

解决方法

您可能正在寻找 .expect 方法:norm.expect(lambda x : x**2)