是否有计算不同类型概率密度函数积分的捷径?
Is there a shortcut to calculate integrals for different types of probability density functions?
在这种情况下,
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)
您可以使用 scipy.stats
中已定义的发行版来满足大多数目的。对于指数分布的情况,您可以创建一个具有冻结参数的分布实例(即 lam
)。该对象具有您可以调用的方法来管理集成,例如 cdf
,指数分布的累积分布函数。
x0 to x1
的积分就是 cdf
在这两个点的值之间的差异。对于 expon
class,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
在这种情况下,
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)
您可以使用 scipy.stats
中已定义的发行版来满足大多数目的。对于指数分布的情况,您可以创建一个具有冻结参数的分布实例(即 lam
)。该对象具有您可以调用的方法来管理集成,例如 cdf
,指数分布的累积分布函数。
x0 to x1
的积分就是 cdf
在这两个点的值之间的差异。对于 expon
class,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