這篇算是第一篇呼應這個Blog主題的文章了
因為只要會import package
就可以不用理解這些複雜的統計量囉~
其中我是使用anaconda中的jupyter來開發
這個IDE的介面很簡潔
也很推薦使用spyder
(Anaconda可以來找我工商嗎QQ)
首先匯入兩個最常使用的套件: numpy, pandas
import numpy as np
import pandas as pd
未來若有時間可以好好來聊聊這兩個套件的功能
data = pd.read_csv('m_pg6116_3dx.csv')
data.head()
接著利用pandas中讀取資料的函數: pd.read 來讀取csv檔
這個函數按下tab後可以看到他可以讀取其他類型的資料
接著可以利用.head()來看一下資料
括弧內可以放數字 代表顯示的筆數
以下以RET變數來介紹
接著就可以來計算各moment了
第一個是mean由於python並不像R是專為統計或是資料科學開發的語言
因此很多簡單的功能都需要import套件
首先會用到的是numpy
np.mean(data['RET'])
這樣就可以輕鬆計算他的平均數囉
而資料的切片(slice)只要利用中括號([])
在打上欄位名稱就可以取出了
未來如果有時間可以再另外聊聊各種切片的方法(不知道會不會有這麼多時間)
標準差也可以輕鬆算出
np.std(data['RET'])
而這裡計算的是標準差 並不是變異數喔
所以計算變異數的同學需要再將他平方
再來計算skewness 也就是偏態
像是這樣:
而這個較複雜的統計量需要使用別的套件
也就是scipy.stats
from scipy.stats import skew
利用skew計算偏態
skew(data['RET'])
最後就可以來計算第四瞬間--峰態
是不是看到公式頭就昏了呢?
這個統計量是在計算是否有厚尾的現象
看資料尾端有無特別厚的現象
在某些財務的資料中
厚尾代表風險較高
所以需要特別關注這個統計量喔
若無厚尾這個值會接近3
因此該套件運算的是excess kurtosis
就是原本的公式再減掉3
因此接近0就沒有厚尾的現象
from scipy.stats import kurtosis
kurtosis(data['RET'])
就可以計算出峰態囉
而計算這些就是為了瞭解資料是否符合常態分布
所以可以先畫出資料的分布樣態
這邊是利用histogram直方圖
因此需要import matplotlib.pyplot
這是python中最常用來視覺化的套件
import matplotlib.pyplot as plt
plt.hist(data['RET'])
可以輕鬆繪出直方圖囉
可以看出資料的分布
看的出來有些類似標準常態分布
但只用看的是不準的
因此統計學家發展出了一個檢定方法來檢定是否符合
稱之為jarque-bera
stats.jarque_bera(data['RET'])
得出來的值是:
(303.63982005843224, 0.0)
p值接近0
因此應該拒絕虛無假設H0
顯著不等於標準常態分布
如果以上看不太懂得同學
只要知道後面的p值越小就越要拒絕就好了哈哈
或許以後有機會可以聊聊基本統計學(到底以後要聊多少東西)
所以今天學到了:
import各種package
運用套件的函數
計算mean, standard deviation, skewness, kurtosis
繪製直方圖
以及利用jarque-bera檢定是否為常態
這就是利用Python運算各moment的方法
未來會繼續分享各個資料分析的實例~
抱歉我只会 print("hello, world")
回覆刪除