是否存在为不同类型的概率密度函数计算积分的捷径?

问题描述 投票:1回答:1

在这种情况下,

from scipy.integrate import quad
import numpy as np

exponential_distribution = lambda x, lam: lam*np.exp(-lam*x)
result = quad(exponential_distribution, 0.25, 0.75, args=0.1)[0]

我正在想像这样的东西

from magic_library import integrate_distribution

result = integrate_distribution(distribution='exponential', parameter=[0.1], a=0.25, b=0.75)
python python-3.x integral probability-density
1个回答
3
投票

您可以将scipy.stats中已经定义的分布用于大多数用途。对于指数分布,您可以使用冻结参数(即lam)创建该分布的实例。该对象具有可以调用的方法来管理集成,例如cdf,即指数分布的累积分布函数。

x0 to x1的积分就是这两点cdf的值之差。对于expon类,scale参数等效于示例函数中的1/lam

from scipy import stats

lam = 0.1
exponential_distribution = stats.expon(scale=1/lam)

exponential_distribution.cdf(0.75) - exponential_distribution.cdf(0.25)
# returns:
0.04756642569977977

我们可以将其与您用于集成的方法进行比较,并看到相同的答案。

from scipy.integrate import quad
import numpy as np

exponential_distribution = lambda x, lam: lam*np.exp(-lam*x)
quad(exponential_distribution, 0.25, 0.75, args=0.1)[0]
# returns:
0.04756642569977978
© www.soinside.com 2019 - 2024. All rights reserved.