我决定比较pandas和scipy.stats中的skew和kurtosis函数,不明白为什么在库之间得到不同的结果。
据我从文献中所知,两个峰度函数都是用费雪的定义计算的,而对于偏斜,似乎没有足够的描述来判断它们的计算方式是否有重大差异。
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
而如果我转换为pandas数据帧:
heights_df = pd.DataFrame(heights)
print "skewness:", heights_df.skew()
print "kurtosis:", heights_df.kurtosis()
这将返回:
skewness: 0 -0.466663
kurtosis: 0 0.379705
抱歉,如果我把这个贴错地方了;不确定这是一个统计数据还是一个编程问题。
这种差异是由于不同的规范化造成的。默认情况下,Scipy不会纠正偏见,而pandas会。
通过传递
bias=False
参数,您可以告诉scipy更正偏差:似乎没有办法告诉熊猫消除偏差校正。
相关问题 更多 >
编程相关推荐