Python有一個很好的統計推斷包。那就是scipy裏面的stats.ttest_1samp實現了單樣本t檢驗.
假設檢驗
假設檢驗(Hypothesis Testing)是數理統計學中根據一定假設條件由樣本推斷總體的一種方法,又稱統計假設檢驗。其目的是用來判斷樣本與樣本,樣本與總體的差異是由抽樣誤差引起還是本質差別造成。假設檢驗不僅在統計學中應用廣泛,在實際生活中也尤爲重要。它是一種基本的統計推斷形式,也是數理統計學的一個重要的分支。基於檢驗統計量T服從t分佈的檢驗——t檢驗,亦稱student t檢驗(Student’s t test)。由英國化學家、數學家、統計學家 William Sealy Gosset提出,他於1908年在Biometrika上公佈t檢驗,但因其老闆認爲其爲商業機密而被迫使用筆名(Student),於是就有了student t檢驗這一名稱。其目的是用來判斷兩類樣本在某一變量上的均值差異是否顯著。
t檢驗計算
通過大量資料的調查,得知大學男生近視度數平均爲405度,今測量本班男生近視度數分別爲:210 150 225 300 270 500 600 300 425 350,已知標準差爲150度,試問18信本男生的視力狀況是否異常?取顯著水平=0.05。
根據數理統計中的假設檢驗,具體步驟如下:
Step1:根據問題的要求提出原假設和備擇假設;
Step2:選取T-統計量;
Step3:在給定的顯著水平下,構造拒絕域,求出臨界值;
Step4:根據給定的樣本計算出統計量的觀察值;
Step5:若統計量的觀察值落入拒絕域,則拒絕,否則接受。
假設: H0:=0 ,H1: 0
已知X=1/10(210+150+225+300+270+500+600+300+425+350)=333,
計算得到t=1.64,查表得到臨界值t/2(10)=2.262,因爲1.64<2.262,所以接受,認爲18信本男生的視力狀況沒有異常。
Python實現過程
1.0
from scipy import stats as ss
arr=[210, 150, 225, 300, 270, 500, 600, 300, 425, 350];
ss.ttest_1samp(arr,405 )
2.0
增加註釋,增加平均值的計算,增加伴隨概率的判斷。
缺少t統計量的計算,代碼需要一行一行計算,否則失去部分結果
from scipy.stats import ttest_1samp
import numpy as np #導入數據包
arr = [210, 150, 225, 300, 270, 500, 600, 300, 425, 350]; #信本男視力情況
arr_mean = np.mean(arr) #計算平均值
arr_mean #輸出
tset, pval = ttest_1samp(arr, 405)
print("p-values",pval)
if pval < 0.05: # alpha value is 0.05 or 5%
print(" 不接受")
else:
print("接受")
3.0
增加t統計量的計算。
代碼需要一行一行計算,否則失去部分結果。
from scipy.stats import ttest_1samp
import numpy as np #導入數據分析包
arr = [210, 150, 225, 300, 270, 500, 600, 300, 425, 350]; #18信本男視力數據
arr_mean = np.mean(arr) #計算平均值
arr_mean #輸出平均值
ttest_1samp(arr, popmean = 405) #計算單個樣本的t檢驗
#前一個爲t統計量,後一個爲伴隨概率
print("p-values",pval) #輸出伴隨概率
if pval < 0.05: # alpha value is 0.05 or 5%
print(" 不接受")
else:
print("接受")
4.0
可以直接輸出結果。
from scipy.stats import ttest_1samp #調入單樣本t檢驗包
import numpy as np #導入計算模塊
arr = [210, 150, 225, 300, 270, 500, 600, 300, 425, 350]; #18信本男視力數據
arr_mean = np.mean(arr) #計算平均值
print("arr_mean=", arr_mean) #輸出平均值
t,p=ttest_1samp(arr, popmean = 405) #計算單個樣本的t檢驗
#前一個爲t統計量,後一個爲伴隨概率
print("t-values=",t) #輸出t統計量
print("p-values=",p) #輸出伴隨概率
if p < 0.05: # 伴隨概率p與顯著水平α比較
print("差異顯著")
else:
print("差異不顯著")
結果分析
由上述輸出結果得到伴隨概率爲0.136,當顯著水平取0.05時,伴隨概率大於0.05,所以認爲18信本男生的視力與大學男生平均視力405,沒有顯著差異。認爲18信本男生和其他大學男生的視力狀況相比沒有異常。