scipy stats偏度无法正确提供偏度结果

时间:2019-06-02 18:40:38

标签: scipy statistics

我注意到从scipy统计信息返回的偏斜度是不正确的。 Pandas.skew()实际上提供了更好的结果。 我最近正尝试复制经典论文“ French&Schwert的预期股票收益率和波动率”。我使用1928年至1984年的S&P500数据。我按照论文中的公式计算收益率的标准偏差,对于std dev的均值std dev,我可以获得相同的结果。 但是,当我使用scipy.stats.skew函数时,我无法获得任何数量的sp return std dev。该函数返回“ nan”,显然应该在其中返回一个值。 我切换到Pandas.skew()。它给了我与论文中一样的正确值。

很显然,scipy.stats.skew()函数出了点问题。

scipy.stats.skew() pandas.skew()

  1. Scipy.stats.skew()的结果 ['Adj Close_gspc','Adj Close_gspc_lag','SP_Return','SP_Return_square',    'SP_Return_lag','SP_varianceMon','SP_varianceMon_sqrRoot']

array([0.6922229,0.69186265,-0.11292165,4.23571807,-1.9556035,         5.39873607,南])

  1. 熊猫的结果:

关闭Close_gspc 0.693745 调整Close_gspc_lag 0.693384 SP_返回-0.113170 SP_Return_square 4.245033 SP_Return_lag -1.959904 SP_varianceMon 5.410609 SP_varianceMon_sqr根2.800919 dtype:float64

1 个答案:

答案 0 :(得分:1)

您没有提供足够的信息或示例代码来重现所获得的nan

要使scipy.stats.skew的计算值与Pandas中的skew()方法相同,请添加参数bias=False

这是一个例子。

首先,导入:

In [21]: import numpy as np                                                                      

In [22]: import pandas as pd                                                                     

In [23]: from scipy.stats import skew                                                            

生成一些数据:

In [24]: np.random.seed(8675309)                                                                 

In [25]: x = np.random.weibull(0.2, size=15)                                                     

使用scipy和Pandas计算偏斜:

In [26]: skew(x, bias=False)                                                                     
Out[26]: 3.7582525674514544

In [27]: pd.Series(x).skew()                                                                     
Out[27]: 3.7582525674514544