我试图在python中计算数据df
在正态分布下的概率。我对python和编程没有经验。我从这个网站上抓取的以下用户定义函数有效,scipy函数不工作。。。在
自定义项:
def normal(x,mu,sigma):
return ( 2.*np.pi*sigma**2. )**-.5 * np.exp( -.5 * (x-mu)**2. / sigma**2. )
df["normprob"] = normal(df["return"],df["meanreturn"],df["sdreturn"])
scipy不起作用:
^{pr2}$它返回以下错误
C:\Anaconda3\lib\site-packages\scipy\stats\_distn_infrastructure.py:1815: RuntimeWarning: invalid value encountered in true_divide
x = np.asarray((x - loc)/scale, dtype=dtyp)
C:\Anaconda3\lib\site-packages\scipy\stats\_distn_infrastructure.py:1816: RuntimeWarning: invalid value encountered in greater
cond0 = self._argcheck(*args) & (scale > 0)
C:\Anaconda3\lib\site-packages\scipy\stats\_distn_infrastructure.py:879: RuntimeWarning: invalid value encountered in greater
return (self.a < x) & (x < self.b)
C:\Anaconda3\lib\site-packages\scipy\stats\_distn_infrastructure.py:879: RuntimeWarning: invalid value encountered in less
return (self.a < x) & (x < self.b)
C:\Anaconda3\lib\site-packages\scipy\stats\_distn_infrastructure.py:1817: RuntimeWarning: invalid value encountered in greater
cond1 = self._open_support_mask(x) & (scale > 0)
C:\Anaconda3\lib\site-packages\scipy\stats\_distn_infrastructure.py:1818: RuntimeWarning: invalid value encountered in less_equal
cond2 = cond0 & (x <= self.a)
如有任何建议,我们将不胜感激。还要注意的是,前20个单元格
df["meanreturn"]
不知道这是否会影响它。在
不确定生存函数是否是你需要的。我相信你要找的是scipy的
pdf
函数,特别是普通随机变量的pdf。我用你用的自定义函数测试了它。在请注意,如果您的
^{pr2}$mu
和std
列是np.nan
,那么您将得到运行时警告,但仍然会得到一个输出,类似于自定义函数。在如果将
np.nan
值设置为None
,则可以避免出现警告:注意,我要么删除
meanreturn
和sdreturn
值为NaN
的行。否则,我将假设您正在寻找x
的概率,假设一个标准正态分布,然后您必须将meanreturn
的NaN
值设置为0,sdreturn
的NaN
值设为1。在最后一点要补充的一点是,如果数据帧的所有行都采用标准正态分布来计算pdf中的概率,那么就不需要传递}列。
mu
列和{norm.pdf
已经假定一个标准法线。在这种情况下,您可以这样运行代码:相关问题 更多 >
编程相关推荐