我决定比较熊猫和scipy.stats的斜度和峰度函数,也不明白为什么我在图书馆之间得到了不同的结果。
据我从文档中得知,两个峰度函数都使用Fisher的定义来计算,而对于倾斜,似乎没有足够的描述来判断它们的计算方法是否有任何重大差异。
import pandas as pd
import scipy.stats.stats as st
heights = np.array([1.46, 1.79, 2.01, 1.75, 1.56, 1.69, 1.88, 1.76, 1.88, 1.78])
print "skewness:", st.skew(heights)
print "kurtosis:", st.kurtosis(heights)这将返回:
skewness: -0.393524456473
kurtosis: -0.330672097724然而,如果我转换成熊猫的数据:
heights_df = pd.DataFrame(heights)
print "skewness:", heights_df.skew()
print "kurtosis:", heights_df.kurtosis() 这将返回:
skewness: 0 -0.466663
kurtosis: 0 0.379705如果我在错误的地方发布了这篇文章,很抱歉;不确定这是一个统计数据还是一个编程问题。
发布于 2015-10-13 17:46:05
这种差异是由于不同的规范化。在默认情况下,喜鹊是不正确的,而熊猫则是这样。
您可以通过传递bias=False参数来告诉can纠正偏见:
>>> x = pandas.Series(np.random.randn(10))
>>> stats.skew(x)
-0.17644348972413657
>>> x.skew()
-0.20923623968879457
>>> stats.skew(x, bias=False)
-0.2092362396887948
>>> stats.kurtosis(x)
0.6362620964462327
>>> x.kurtosis()
2.0891062062174464
>>> stats.kurtosis(x, bias=False)
2.089106206217446似乎没有办法告诉熊猫消除偏见的纠正。
https://stackoverflow.com/questions/33109107
复制相似问题