分布函数的值错误形状<=0

2024-04-26 14:53:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要在python中完成一个如下所示的分发函数:

−∞<;x<;∞, P(x)dx=((1+x^2/n)^-(n+1)/2)*Γ(n+1/2)/Γ(n/2)*(nπ)**1/2 dx,n=1。在

所以我试着这样做:

from numpy import *
from scipy import stats
from scipy.special import gammaln
from pylab import *

def studentstPDF(x,n=1):
"""
Call:
   d = studentstPDF(x,n)
Input argument:
   x: float (array)
   n: float, default = 1.0
Output argument:
   p: float
Examples:
   In [1]: studentstPDF(1,1)
   Out[1]: 0.1591549
"""
p = (1+((x**2)/n))**((-n+1)/2) * gamma((n+1)/2) / gamma(n/2) * (n*math.pi)**1/2
p[x<inf] = 0.0
p[x>-inf] = 0.0
return(p)

但现在我得到错误“ValueError:shape<;=0”

那是什么意思?我的功能哪里错了?在

^{pr2}$

Tags: 函数fromimportltnumpystatsscipyfloat
2条回答

您来自scipy.specialgamma函数很可能被另一个性质的gamma函数覆盖,可能是从大量导入的随机变量函数。改为这样导入:

from scipy.special import gamma as Gamma

把你的表情写下来:

^{pr2}$

如果您必须以同样的方式导入,请使用scipy.special.gamma代替当前的gamma调用和import scipy。在

错误本身是由于试图对形状不同的操作数使用乘法运算符*。在

相关问题 更多 >