今天的內容有點無聊,主要是幾個統計檢驗方法的應用,都是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-2023年的波動資料提取出來,檢驗一下這個資料是否服從正態分佈。
首先利用tushare獲取上證指數2017-2023年的波動資料:
import tushare as ts
ts.set_token(
'****************************************'
)pro=ts.pro_api(
)#獲取所有指數的資訊
可以看到上證指數的**(ts_code)是000001.sh
接著提取2017-2023年的指數**:
一共拿到了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種方法均得到了一致結果。
跟二項分布相關的統計檢驗方法
小概率事件在一次試驗中幾乎不可能發生。小概率事件在多次重複試驗中必定會發生。問題 調查北京市所有人喜歡吃麵食還是吃公尺飯 都不喜歡吃的忽略 在北京街頭隨機選了10個人 樣本有點少 有8個喜歡吃麵食,2個喜歡吃公尺飯。由此能否否定北京人喜歡吃麵食的比例為p 0.5呢?10k 10 choose k k...
Linux學習之七 mysql的安裝使用
安裝這個包後,會獲得兩個mysql的yum repo源 etc yum.repos.d mysql community.repo,etc yum.repos.d mysql community source.repo。yum install mysql server 安裝完了,還需要一些基礎配置。s...
談談C 學習之Pair的使用方法
一 pair型別概述 pair是一種模板型別,其中包含兩個資料值,兩個資料的型別可以不同,基本的定義如下 pair a 表示a中有兩個型別,第乙個元素是int型的,第二個元素是string型別的,如果建立pair的時候沒有對其進行初始化,則呼叫預設建構函式對其初始化。pair a james joy...