python量化交易笔记---13.描述性统计
統計分為描述統計和推斷統計,我們在這一章里,主要講解描述性統計。我們用到的數據如下所示:
上圖中,gsyh代表工商銀行收益率,pfyh代表浦發銀行收益率,zglt代表中國聯通收益率,我們僅以工商銀行收益為例計算各個統計量。
1.頻數分布
我們以2014年工商銀行股票的收益率為例,來看頻數分布。我們將收益率(下圖中ysgh列)按0.025為一段,統計收益率落在該段內的天數,就可以得到頻數分布,我們可以按照直方圖來進行繪制。如下所示:
import numpy as np import pandas as pd import matplotlib.pyplot as pltdef startup():''' 創建時間序列示例 '''rs = pd.read_csv('../datas/retdata.csv')gsyh = rs.gsyhprint(type(gsyh))plt.rcParams['font.sans-serif'] = ['SimHei']plt.rcParams['axes.unicode_minus'] = Falseplt.title('工商銀行收益率頻數分布圖')plt.xlabel('收益率')plt.ylabel('天數')plt.hist(gsyh)plt.show()if '__main__' == __name__:startup() codes/c13c001.py運行結果為:
2.數據統計
2.1.數據位置
2.1.1.樣本平均數
算數平均數可以用在各種數據分析中,定義為:
xˉ=x1+x2+...+xnn\bar{x}=\frac{x_1+x_2+...+x_n}{n} xˉ=nx1?+x2?+...+xn??
幾何平均數最常用于收益率計算,假設共有k個元素,定義為:
xˉ=[∏i=1kxi]1k\bar{x}=\bigg[ \prod_{i=1}^{k} x_i \bigg]^{\frac{1}{k}} xˉ=[i=1∏k?xi?]k1?
2.1.2.中位數
中位數定義為其至少大于等于50%的數據,同時小于等于50%的數據。
2.1.3.眾數
一組數據中出現最多的數值。
2.1.4.百分位數
假設百分比為α\alphaα如25,則表示至少α\alphaα%的數小于該值,同時至少(100?α)(100-\alpha)(100?α)%的數大于該值。
下面我們還以工商銀行收益率為例,求出這幾個值:
import numpy as np import pandas as pd import matplotlib.pyplot as pltdef startup():''' 數據位置分析 '''rs = pd.read_csv('../datas/retdata.csv')gsyh = rs.gsyhprint('平均數:{0}'.format(gsyh.mean()))print('中位數:{0}'.format(gsyh.median()))gsyhMode = gsyh.mode()print('眾數:{0}; {1}'.format(gsyhMode, type(gsyhMode)))print('百分位數:{0}'.format(gsyh.quantile(0.3)))if '__main__' == __name__:startup() codes/c13c002.py運行結果如下所示:
2.2.數據離散度
數據離散度描述數據相對于中心位置的偏離程度,常用的指標有極差、平均絕對誤差、方差和標準差。
2.2.1.極差
序列中最大值與最小值之差。
2.2.2.平均絕對誤差
MAD=1n∑i=1n∣(xi?xˉ)∣MAD=\frac{1}{n}\sum_{i=1}^{n} \bigg \vert (x_i-\bar{x}) \bigg\vert MAD=n1?i=1∑n?∣∣∣∣?(xi??xˉ)∣∣∣∣?
2.2.3.方差和標準差
σ2=1n?1∑i=1n(xi?xˉ)2\sigma ^{2} = \frac{1}{n-1} \sum_{i=1}^{n} (x_i-\bar{x})^{2} σ2=n?11?i=1∑n?(xi??xˉ)2
σ=1n?1∑i=1n(xi?xˉ)2\sigma = \sqrt{\frac{1}{n-1} \sum_{i=1}^{n} (x_i-\bar{x})^{2} } σ=n?11?i=1∑n?(xi??xˉ)2?
計算離散度程序如下所示:
import numpy as np import pandas as pd import matplotlib.pyplot as pltdef startup():''' 數據位置分析 '''rs = pd.read_csv('../datas/retdata.csv')gsyh = rs.gsyhprint('極差:{0}'.format(gsyh.max() - gsyh.min()))print('平均絕對誤差:{0}'.format(gsyh.mad()))print('方差:{0}'.format(gsyh.var()))print('標準差:{0}'.format(gsyh.std()))if '__main__' == __name__:startup() codes/c13c003.py運行結果為:
總結
以上是生活随笔為你收集整理的python量化交易笔记---13.描述性统计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么C语言永远不会过时?
- 下一篇: 7.6 Python 实例12-政府工作