0

我搜索了一段时间,找不到任何适合我需要的概率分布。Distribution 应该看起来像 function c1 * x^2 + c2。我在 numpy 中能找到的最接近的是 alpha=0.5 和 beta=0.5 的 Beta Distribution。但我不喜欢它中间的平原区域。有人有什么想法吗?

4

1 回答 1

1

您可以使用scipy.stats.rv_continous创建自己的发行版

如何使用它的示例:

from scipy.stats import rv_continuous

def my_pdf_function(x, c1, c2):
    return (x**2 * c1 + c2)

class cuadratic_distribution(rv_continuous):
    def _pdf(self, x):
        # For example: c1=1, c2=2/3 (normalized between x=0 and x=1)
        return my_pdf_function(x, c1=1, c2=2/3)

my_pdf = cuadratic_distribution(a=0, b=1, name='my_pdf')

my_pdf.cdf([-1, 0.4, 2])
>>> array([0.   , 0.316, 1.   ])

请注意,您应该适当设置分布的边界 (ab),以及 c1 和 c2 的对应值,以确保 0 < P(x) < 1 并且 P(x) 的积分产生 1

于 2018-11-20T16:35:32.213 回答