我搜索了一段时间,找不到任何适合我需要的概率分布。Distribution 应该看起来像 function c1 * x^2 + c2
。我在 numpy 中能找到的最接近的是 alpha=0.5 和 beta=0.5 的 Beta Distribution。但我不喜欢它中间的平原区域。有人有什么想法吗?
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. ])
请注意,您应该适当设置分布的边界 (a
和b
),以及 c1 和 c2 的对应值,以确保 0 < P(x) < 1 并且 P(x) 的积分产生 1
于 2018-11-20T16:35:32.213 回答