【问题标题】:Is there a shortcut to calculate integrals for different types of probability density functions?是否有计算不同类型概率密度函数积分的捷径?
【发布时间】:2019-12-15 14:32:29
【问题描述】:

在这种情况下,

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】:

    您可以将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
    

    【讨论】:

    • 我主要关心的是不必自己输入公式。问题已解决,非常感谢。
    猜你喜欢
    • 2018-06-25
    • 2017-09-20
    • 2019-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多