金融学习之七——统计检验方法的使用

今天的内容有点无聊,主要是几个统计检验方法的应用,都是scipy模块中的stas子模块中的函数。几个统计检验分别是K-S检验,A-D检验,W检验和正态性检验。
(1)K-S检验
K-S检验是基于累计分布函数,用以检验一个分布是否服从某种理论分布,或比较两个分布是否存在显著差异。
K-S检验所使用的函数是kstest,使用格式为:
kstest(rvs,cdf,args,alternative)
rvs是待检验样本,cdf指定检验的分布类型,args以元组形式输入分布函数中的相关参数,alternative默认为双尾检验,也可以使用less或greater做单尾检验。
(2)A-D检验
A-D检验相当于K-S检验的增强版,其原理是将所收集的数据从小到大排列,得出经验累积分布(ECDF),并与目标分布的理论累积分布(CDF)进行比较,得出所谓的AD统计量,这个统计量越小,数据的分布就越接近目标分布,越大则数据服从目标分布的可能性就越小。
A-D检验所使用的函数是anderson,使用格式为:
anderson(x,dist)
x是待检验样本,dist是指定检验的分布类型。
(3)W检验
该检验是由S.S.Shapiro与M.B.Wilk提出的,又被称之为W检验,主要检验研究对象是否符合正态分布。
W检验所使用的函数是shapiro,使用格式为:
shapiro(x)
x为待检验样本
(4)正态性检验
仅用于检验是否服从正态分布。使用格式为:
normaltest(x,axis)
x为待检验样本,axis=0时为按行检验,axis=1时按列检验。

接着我们想把上证指数2017-2019年的波动数据提取出来,检验一下这个数据是否服从正态分布。
首先利用Tushare获取上证指数2017-2019年的波动数据:

import tushare as ts
ts.set_token('****************************************')
pro=ts.pro_api()
#获取所有指数的信息
index=pro.index_basic()

在这里插入图片描述
可以看到上证指数的代码(ts_code)是000001.SH
接着提取2017-2019年的指数行情:

data1=pro.index_daily(ts_code='000001.SH',start_date='20170101',end_date='20191231')
data1

在这里插入图片描述
一共拿到了731条数据,说多不多,说少也不少。指数的波动我们用涨跌幅来表示,也即是change这一列数据。
接下来我们分别进行4种检验:
(1)K-S检验

import scipy.stats as sm
sm.kstest(rvs=data1['change'],cdf='norm',args=(0,0.01))

结果为:
KstestResult(statistic=0.5294117647058766, pvalue=1.1924100364470399e-191)
可以看到p值非常小,接近于0,表明在1%水平上拒绝原假设,也即认为样本不服从正态分布。
(2)A-D检验

sm.anderson(x=data1['change'],dist='norm')

结果为:
AndersonResult(statistic=8.071818761956024, critical_values=array([0.573, 0.652, 0.783, 0.913, 1.086]), significance_level=array([15. , 10. , 5. , 2.5, 1. ]))
可以看到上面的统计值在1%水平上被拒绝,也即认为样本不服从正态分布
(3)W检验

sm.shapiro(data1['change'])

结果为:
ShapiroResult(statistic=0.9408900737762451, pvalue=1.8531769308344827e-16),p值也是非常小,认为样本不服从正态分布。
(4)正态性检验

sm.normaltest(data1['change'],axis=0)

结果为:
NormaltestResult(statistic=112.03096823690633, pvalue=4.70743515392237e-25),同样也是p值非常小,认为样本不服从正态分布。
检验完毕后确认,4种方法均得到了一致结果。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值