使用Python进行概率分布

时间:2017-06-01 02:55:19

标签: python math probability

我想根据各种类型的连续概率分布函数(PDF)生成用于测试的样本。例如,我有一个超过24小时的PDF,我想知道事件发生的概率是10分钟,20分钟,30分钟......等等。

因此,我想计算P(a< X< a + n),其中n是我选择的时间值。是否存在任何能够使用Python执行此操作的模块?它是否也可用于PDF的总结?

这是我想要实现的一个数字 enter image description here

我想使用蓝色PDF检索红色直方图。我已经能够在这里完成,因为我已经知道每个时间片的事件数,但我想自动完成。这是一个Weibull函数,但它可能是其他任何东西(主要是普通和威布尔)。

在python中有什么东西可以帮助我吗?

感谢。

编辑:威布尔的CDF和PDF代码:

def weibull_pdf(scale, shape, x):
    """
    Determine the probability P(x ).
    :param scale: Scale parameter of Weibull distribution.
    :param shape: Shape parameter of Weibull distribution.
    :param x: Value.
    :return: Value of f(x).
    """
    if x < 0:
        return 0
    return (shape / scale) * ((x / scale) ** (shape - 1)) * np.exp(- (x / scale) ** shape)

def weibull_cdf(scale, shape, x):
    """
    Determine the cumulative distributive function for the Weibull distribution.
    :param scale: Scale parameter of Weibull distribution.
    :param shape: Shape parameter of Weibull distribution.
    :param x: Upper bound of the distribution.
    :return: P(x <= X).
    """
    if x < 0:
        return 0
    return 1 - np.exp(- (x / scale) ** shape)

PDF的确定如下:

# Determination of the PDF function.
for i in range(1, 10):
    cdf = weibull_cdf(SCALE, SHAPE, i) - weibull_cdf(SCALE, SHAPE, i - 1)
    print"CDF for interval [{}, {}]: {}".format(i - 1, i, str(cdf))
x = [i / (INPUTS_NB / 10.0) for i in range(INPUTS_NB)]
results = [weibull_pdf(SCALE, SHAPE, x[j]) for j in range(len(x))]

edit2:好的,所以当我编写代码时我没有注意到这一点,但我已经在上面一批代码中回答了我自己的问题(确定了PDF函数)。但是,感谢DYZ的信息。只需要做P(X

0 个答案:

没有答案