在给定高斯平均值和标准偏差的情况下,我试图获取两个边界之间的高斯分布的积分。
import numpy as np
import scipy
mu = 5
sigma = 30
lowerbound = 0.5
upperbound = np.inf
# generate Gaussian function
x = np.linspace(mu - 3*sigma, mu + 3*sigma, 100)
gauss = scipy.stats.norm.pdf(x, mu, sigma)
# integrate between bounds
integral = scipy.integrate.quad(gauss, lowerbound, upperbound)
这引起一个ValueError: invalid callable given
,所以我做错了什么,但我不知道它是什么。
答案 0 :(得分:4)
quad
函数将一个函数作为其第一个输入,但是您提供的数据来自x处评估的高斯:
import numpy as np
import scipy
mu = 5
sigma = 30
lowerbound = 0.5
upperbound = np.inf
# generate Gaussian function
def gauss(x):
return scipy.stats.norm.pdf(x, mu, sigma)
# integrate between bounds
integral = scipy.integrate.quad(gauss, lowerbound, upperbound)
print(integral)
(0.5596176923702426, 5.087725389583706e-10)
如果要集成离散数据,scipy.integrate.quad
不是完成任务的工具。请改用scipy.integrate.simps
。