我需要在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}$
您来自
scipy.special
的gamma
函数很可能被另一个性质的gamma
函数覆盖,可能是从大量导入的随机变量函数。改为这样导入:把你的表情写下来:
^{pr2}$如果您必须以同样的方式导入,请使用
scipy.special.gamma
代替当前的gamma
调用和import scipy
。在错误本身是由于试图对形状不同的操作数使用乘法运算符
*
。在相关问题 更多 >
编程相关推荐