【发布时间】:2019-03-19 01:23:35
【问题描述】:
我有以下scipy.stats.rv_continuous 的子类:
from scipy.stats import rv_continuous
import math
class Distribution(rv_continuous):
def _cdf(self, x, a, b, mu):
return (
math.erf(x/(math.sqrt(2)*a)) + \
math.erf((x - mu)/(math.sqrt(2)*b)) \
) / 2 + math.erf(mu/(math.sqrt(2)*b)) / 2
distribution = Distribution(a = 0, b = float('inf'))
据我所知,一切都设置正确(我检查了数学,它也是正确的)。但是,由于某种原因,它只想生成0 和mu 之间的值,而不是明确 指定的预期的0 和inf。例如,这里是使用distribution.rvs(3, 1.6, 10)(连同 PDF)生成的 50 个点:
下面是distribution.rvs(0.6, 0.4, 4.85) 的示例:
为什么我的分发“上限”在mu?我是否设置了我的rv_continuous 子类错误?
【问题讨论】: