我搜索了一会儿,找不到适合我需要的任何概率分布。分发看上去应该类似于函数c1 * x^2 + c2
。我在numpy中找到的最接近的是Beta分布,其中alpha = 0.5和beta = 0.5。但我不喜欢其中部的平原地区。有人有什么想法吗?
答案 0 :(得分:1)
使用方法示例:
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