ValueError:参数scipy rv_continuous中的域错误

时间:2016-09-09 22:14:37

标签: python numpy scipy

我试图使用scipy.stats.rv_continuous对给定概率密度函数(pdf)的随机变量进行采样:

class Distribution(stats.rv_continuous):
    def _pdf(self,x, _a, _c):
        return first_hitting_time(x, _a, _c)

函数 first_hitting_time

#pdf of first hitting time of W_t + c*t on a. 
def first_hitting_time(_t, _a, _c=0.0):
    return _a/_t*np.exp(-0.5/_t*(_a-_c*_t)**2)/np.sqrt(2.0*np.pi*_t)

然后我继续

myrv= Distribution(name='hittingtime', a=0.002,b=30.0)
data3= myrv.rvs(size=10000, _a=1.0, _c=0.0)

并且口译员开始抱怨 -

Traceback (most recent call last):

  File "<ipython-input-246-71f67047462b>", line 1, in <module>
    data3= myrv.rvs(size=10000, _a=1.0, _c=0.0)

  File "C:\Users\ME\AppData\Local\Continuum\Anaconda2\lib\site-packages\scipy\stats\_distn_infrastructure.py", line 856, in rvs
    raise ValueError("Domain error in arguments.")

ValueError: Domain error in arguments.

似乎我将_c设置为大于0.0的某个数字,它可以正常工作,但不适用于小于0的_c

我对此感到有点困惑。任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:1)

来自the documentation

  

子类

     

可以通过继承rv_continuous来定义新的随机变量   类并重新定义至少_pdf_cdf方法(标准化   到位置0和比例1)。

     

如果你的房车的正面参数检查不正确那么你会   还需要重新定义_argcheck方法。

从我的功能中我不清楚_a_c代表什么,但看起来你想让它们成为负面。

请参阅默认实施in the source of _distn_infrastructure