(十六)股票数据的正态性检验、QQ图的绘制 | 您所在的位置:网站首页 › 台风咋画qq红包 › (十六)股票数据的正态性检验、QQ图的绘制 |
股票数据的正态性检验
数据的正态性统计检验在(十三)用SciPy模块进行概率分析和正态性检验中已经介绍得很详细,有四种方法,在此不再赘述。 QQ图的绘制 方法一QQ图(quantile-quantile plot)在金融风险管理中的主要作用是检验两个数据是否服从同一分布,通过画出两组数据的累计分布函数,比较在同一百分比面积α下对应的x、y轴分位数是否相同(即QQ图所有点基本上在45°线上)来实现。比如我们很多时候需要检验股票价格数据是否服从对数正态分布,或者收益率是否服从正态分布。下面以2019年的上证指数收益率数据为例,画出它的累积分布函数图,以及与正态分布比较的QQ图来验证其正态性。第一步,获取上证指数收盘价数据: import numpy as np import pandas as pd import matplotlib.pyplot as plt from scipy import stats from datetime import date import pandas_datareader.data as web from pylab import mpl mpl.rcParams['font.sans-serif']=['SimHei'] mpl.rcParams['axes.unicode_minus']=False data=web.DataReader('000001.SS','yahoo',start=date(2019,1,1),end=date(2020,1,1)) s=data['Adj Close'];s.head() Out[3]: Date 2019-01-02 2465.291016 2019-01-03 2464.363037 2019-01-04 2514.867920 2019-01-07 2533.089111 2019-01-08 2526.461914 Name: Adj Close, dtype: float64第二步,生成上证指数收益率数据: logre=s.pct_change()#简单收益率 logre=logre.dropna();logre.head() Out[7]: Date 2019-01-03 -0.000376 2019-01-04 0.020494 2019-01-07 0.007245 2019-01-08 -0.002616 2019-01-09 0.007078 Name: Adj Close, dtype: float64 dt=np.array(s)#转为array才能运算 logre2=pd.Series(np.log(dt[1:len(dt)]/dt[0:len(dt)-1]))#对数收益率 logre2.index=logre.index logre2.head() Out[8]: Date 2019-01-03 -0.000376 2019-01-04 0.020287 2019-01-07 0.007219 2019-01-08 -0.002620 2019-01-09 0.007053 dtype: float64第三步,用对数收益率数据画出其累积分布函数: sorted_=np.sort(logre2*100)#对对数收益率排序 y=np.arange(len(sorted_))/float(len(sorted_))#生成纵轴坐标范围(0,1) plt.plot(sorted_,y)
seaborn库可以绘制带辅助线的直方图,statsmodels.api也有画QQ图的函数: import pandas as pd house=pd.read_csv('C:/Users/Desktop/house_price_gr.csv',encoding='gbk') %matplotlib inline import seaborn as sns from scipy import stats sns.distplot(house.rate,kde=True,fit=stats.norm)
https://blog.csdn.net/weixin_40076694/article/details/80048105 |
CopyRight 2018-2019 实验室设备网 版权所有 |