利用python進行單邊T檢驗
阿新 • • 發佈:2018-12-19
可以利用 python 中的 scipy.stats.ttest_ind 做關於兩組資料的雙邊 t 檢驗,結果比較簡單。但是做 大於或者小於的單邊檢測的時候需要做一些處理,才能得到正確的結果。
from scipy import stats
import numpy as np
A = np.array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
B = np.array([ 0, 2, 5, 6, 8, 10, 13, 14, 17, 20])
很顯然,A的均值為4.5,B的均值為9.5. 為了檢測這種差異是否顯著,我們做個單邊的 t 檢驗,證實這種差異的顯著性。
這裡備擇假設應該為我們想要證明的假設,即 B>A.
現在我們呼叫 scipy.stats.ttest_ind(x, y) 函式,這個函式預設我們想驗證 x.mean()-y.mean() 這個假設。為了在計算的過程中得到正數,我們 呼叫 stats.ttest_ind(B,A),這裡設定方差不相等。
stats.ttest_ind(B,A,equal_var= False)
# 程式執行結果
Ttest_indResult(statistic=2.204452592164665, pvalue=0.04653783266614884)
根據 scipy.stats.ttest_ind(x, y) 文件的解釋,這是雙邊檢驗的結果。為了得到單邊檢驗的結果,需要將 計算出來的 pvalue 除於2 取單邊的結果(這裡取閾值為0.05)。
所以這裡我們可以拒絕原假設,即接受備擇假設,A < B。
作為驗證,我們還可以根據自由度和置信區間(95%)查詢 t 值驗證結果是否正確。
通過在 t 分佈 表上查詢,得到
這裡 t > tcrit, 還是拒絕原假設。