我定义了以下自定义概率分布:
import scipy.stats as st
# parameters
a = 3 / 16
b = 1
class linear_fractional(st.rv_discrete):
def _pdf(self, n):
if (n == 0):
return (a + b - 1) / (a + b)
else:
return (a * b ** (n - 1)) / (a + b) ** (n + 1)
LF = linear_fractional()
LF.rvs()
当我让我的脚本运行时,我收到一条冗长的错误消息:
Traceback (most recent call last):
File "C:/Users/thoma/PycharmProjects/Host_Parasite_Coevolution/Asymptotics.py", line 17, in <module> LF.rvs()
File "C:\Users\thoma\AppData\Local\Programs\Python\Python37-32\lib\site-packages\scipy\stats\_distn_infrastructure.py", line 2969, in rvs
return super(rv_discrete, self).rvs(*args, **kwargs)
...
RecursionError: maximum recursion depth exceeded while calling a Python object
如果我这样做LF.mean()
,我会得到
Fatal Python error: Cannot recover from stack overflow.
有谁知道这是为什么以及我如何解决这个问题?我是否必须定义我的概率分布的上限?