我不明白如何在Scipy中实现对数均匀概率分布。根据这篇文章的评论,可以通过仅定义_pdf
来实现。同时,我从这个来源了解到实际的概率密度函数(pdf)推导。
然而,我无法确定应该放置a
和b
参数以及如何设置a>0
。同时,请注意我希望a
和b
是范围内实际的最小值和最大值。最后,请注意,我真的只想能够使用.rvs()
方法,因此任何对均匀分布的技巧都可以接受。
以下是我目前(无法正常工作)的代码:
from scipy.stats import rv_continuous
import numpy as np
class log_uniform_gen(rv_continuous):
"Log-uniform distribution"
def _pdf(self, x):
if np.exp(self.a) <= x <= np.exp(self.b):
temp = x / (self.b - self.a)
else:
temp = 0.
return temp
log_uniform = log_uniform_gen(a=0.1, b=1.0, name='log-uniform')