Numpy 用scikits-statsmodels做正态性检验

用scikits-statsmodels做正态性检验,scikits-statsmodels包囊括了大量的统计检验方法。作为范例,我们将介绍正态性Anderson-Darling检验(http://en.wikipedia.org/wiki/Anderson%E2%80%93Darling_test)。

具体步骤

上一篇一样,我们将下载股价数据,但只需要下载一支股票的数据。然后我们将计算这支股票收盘价的对数收益率,并且把计算结果作为正态性检验函数的输入数据。

该函数返回一个元组,元组中的第二个元素是一个取值在0到1之间的p值(p-value)。

本攻略的完整代码如下。

import datetime
import numpy
from matplotlib import finance
from statsmodels.stats.adnorm import normal_ad
import sys

#1. 下载股价数据

# 2011到2012
start = datetime.datetime(2011, 01, 01)
end = datetime.datetime(2012, 01, 01)

print "Retrieving data for", sys.argv[1]
quotes = finance.quotes_historical_yahoo(sys.argv[1], start, end, asobject=True)

close = numpy.array(quotes.close).astype(numpy.float)
print close.shape

print normal_ad(numpy.diff(numpy.log(close)))

该脚本的输出结果如下所示。我们得到的p值是0.13。

Retrieving data for AAPL
(252,)
(0.57103805516803163, 0.13725944999430437)

攻略小结

本攻略示范了怎样用scikits-statsmodels中的Anderson-Darling统计检验方法做正态性检验。我们把不符合正态分布的股价数据作为Anderson-Darling检验函数的输入,得到的p值是0.13,这一结果也证实了我们的假设。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程