其他類型假設檢驗如何實現?
配對相關樣本檢驗項目實戰:如何驗證統計學現象?
雙獨立樣本檢驗項目實戰:鍵盤布局A/B測試
(二)相關配對檢驗
斯特魯普效應
斯特魯普效應是當有與原有認知不同的情況出現時,人們的反應時間會較長。
實驗設計
通過網上的stroop實驗做測試人的反應時間(https://faculty.washington.edu/chudler/java/ready.html)。
每名參與者得到兩組有顏色的文字,第一組數據是字體內容和字體顏色一致,第二組數據是字體內容和字體顏色不一致。
每名參與者對每組文字說出文字的顏色,並分別統計完成每組的時間。
此次實驗共記錄25組數據(樣本量),並匯總到Excel表格中。
一、描述統計分析
#導入包 import numpy as np import pandas as pd import matplotlib.pyplot as plt ''' 路徑和文件名中不要用中文,不然會報錯 encoding用於指定文件的編碼,因為讀取的csv中有中文,所以指定文件編碼為中文編碼“GBK” ''' data = pd.read_csv('斯特魯普效應.csv') data.head()
觀察數據結果:“一致”列是(第一組數據)字體內容和字體顏色一致情況下,實驗者的反應時間(單位:秒)。
“不一致”列是(第二組數據)字體內容和字體顏色不一致情況下,實驗者的反應時間。
#獲取描述統計信息
data.describe()

''' 第一組數據:字體內容和字體顏色一致情況下,實驗者的反應時間 ''' #第一組數據均值 con1_mean = data['Congruent'].mean() # 第一組數據標准差 con1_std = data['Incongruent'].std() ''' 第一組數據:字體內容和字體顏色一致情況下,實驗者的反應時間 ''' # 第二組數據均值 con2_mean = data['Incongruent'].mean() # 第二組數據標准差 con2_std = data['Incongruent'].std() #兩個樣本數據集對比 #畫板 fg = plt.figure(figsize = (20,10)) #畫紙 ax = fg.add_subplot(1,1,1) #繪制柱狀圖 data.plot(kind = 'bar',ax = ax) #顯示圖形 plt.show()

print('描述統計分析結果:') print('第一組數據:字體內容和字體顏色一致情況下,實驗者的平均反應時間是:',con1_mean,'秒,標准差是',con1_std,'秒') print('第二組數據:字體內容和字體顏色不一致情況下,實驗者的平均反應時間是:',con2_mean,'秒,標准差是',con2_std,'秒') print('“不一致”情況下所用時間均大於“一致”情況,也就是當字體內容和字體驗證不一致時,實驗者的平均反應時間變長')

二、推論統計分析
進行假設檢驗
1.問題是什么?
自變量是指原因。因變量是指結果,也就是自變量發生變化導致改變的值就是因變量。
自變量:我們有兩組實驗數據,第一組是字體內容和顏色一致。第二組數據值是字體內容和顏色不一致。所以自變量是實驗數據的顏色和文字是否相同
因變量:實驗者的反應時間
所以,我們要考察的是自變量(字體內容和顏色是否相同)兩種情況下對因變量(反應時間)的影響。
零假設和備選假設
假設第一組“一致”的均值為 u1 ,第二組“不一致”的均值為 u2
零假設H0:人們的反應時間不會因為字體內容和字體顏色是否相同(u1 = u2 ,或者 u1-u2=0 )
備選假設H1:特魯普效應確實存在。根據特魯普效應的定義,顏色和文字不同的情況下,人們的完場測試的時間會變長( u1 < u2 )
檢驗類型
檢驗類型有很多種,因為該使用兩組數據是相關樣本,所以選擇相關配對檢驗。
相關配對檢驗只關注每對相關數據的差值,從而避免得到的結論受到參與人員間正常反應時間獨立性的影響。
在只關注差值集的情況下,樣本集處理后只有一組(差值集)。下面我們對樣本數據進行處理,從而得到差值集。
''' 獲取差值數據集,也就是“一致”這一列數據,對應減去“不一致”這一列的數據 ''' #差值數據集 data['差值'] =data['Congruent'] -data['Incongruent'] data.head()
抽樣分布類型
我們還要判斷抽樣分布是哪種?因為抽樣分布的類型,決定了后面計算p值的不同。
在我們這個案例中,樣本大小是25(小於30),屬於小樣本。那小樣本的抽樣分布是否滿足t分布呢?
因為t分布還要求數據集近似正態分布,所以下面圖片我們看下差值數據集的分布長什么樣。
"""設置字體,用於顯示中文""" plt.rcParams['font.sans-serif']=['FangSong'] """SimSun 宋體,Microsoft YaHei微軟雅黑 YouYuan幼圓 FangSong仿宋""" plt.rcParams['font.size']=20 plt.rcParams['axes.unicode_minus']=False# 負號亂碼 ''' 直方圖能夠粗略估計數據密度,如果想給數據一個更精確的擬合曲線(專業術語叫:核密度估計kernel density estimate (KDE)), Seaborn 可以很方便的畫出直方圖和擬合曲線。 查看數據集分布官網教程地址:https://seaborn.pydata.org/tutorial/distributions.html 安裝繪圖包seaborn: conda install seaborn ''' #導入繪圖包 import seaborn as sns #查看數據集分布 sns.distplot(data['差值']) plt.title('差值數據集分布') plt.show()
通過觀察上面差值數據集分布圖,數據集近似正態分布,所以滿足t分布的使用條件,我們可以使用相關樣本t檢驗。
檢驗方向
單尾檢驗(左尾,右尾),還是雙尾檢驗?
因為備選假設是:特魯普效應確實存在,根據Stroop Effect的定義,顏色和文字不同的情況下,人們的完場測試的時間會變長( u1 < u2 )。
所以我們使用單尾檢驗中的左尾檢驗,顯著水平為5%,t檢驗的自由度df=n-1=25-1=24
2.證據是什么?
在零假設成立前提下,得到樣本平均值的概率p是多少?
''' 用python統計包scipy自動計算 用scipy計算出的是:雙尾檢驗 單(1samp)樣本t檢驗(ttest_1samp):https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.ttest_1samp.html 相關(related)配對t檢驗(ttest_rel):https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.ttest_rel.html 雙獨立(independent)樣本t檢驗(ttest_ind):https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.ttest_ind.html ''' #導入統計模塊(stats) from scipy import stats ''' ttest_rel:相關配對檢驗 返回的第1個值t是假設檢驗計算出的(t值), 第2個值p是雙尾檢驗的p值 ''' t,p_twoTail = stats.ttest_rel(data['Congruent'],data['Incongruent']) print('t值=',t,'雙尾檢驗的p值=',p_twoTail)

''' 因為scipy計算出的是雙尾檢驗的t值和p值,但是我們這里是左尾檢驗。 根據對稱性,雙尾的p值是對應單尾p值的2倍 ''' #單尾檢驗的p值 p_oneTail=p_twoTail/2 print('單尾檢驗的p值=',p_oneTail)

3.判斷標准是什么?
#顯著水平使用alpha=5% alpha=0.05
4.做出結論
''' 因為scipy計算出的是雙尾檢驗的t值和p值,但是我們這里是左尾檢驗。 根據對稱性,雙尾的p值是對應單尾p值的2倍 左尾判斷條件:t < 0 and p/2 < alpha 右尾判斷條件:t > 0 and p/2 < alpha ''' #單尾檢驗的p值 p_oneTail=p_twoTail/2 #顯著水平 a=0.05 #決策 if(t<0 and p_oneTail< a): print('拒絕零假設,有統計顯著') print('也就是接受備選假設:特魯普效應存在') else: print('接受備選假設,沒有統計顯著,也就是特魯普效應不存在')

假設檢驗報告:
相關配對檢驗t(24)=-8.35,p=7.32e-09 (α=5%),左尾檢驗
統計上存在顯著差異,拒絕零假設,從而驗證斯特魯普效應存在。
5. 置信區間
''' 1)置信水平對應的t值(t_ci) 查t表格可以得到,95%的置信水平對應的t值=2.262 2)計算上下限 置信區間上限a=樣本平均值 - t_ci ×標准誤差 置信區間下限b=樣本平均值 - t_ci ×標准誤差 ''' ''' 95%的置信水平,自由度是n-1對應的t值 查找t表格獲取, 也可以通過這個工具獲取:https://www.graphpad.com/quickcalcs/statratio1/(利用這個工具獲取t值,需要注意輸入的概率值是1-95%=0.05) 注意:課程中這里對應的下面t_ci值有誤,以下面的值為准 ''' t_ci=2.064 #差值數據集平均值 sample_mean=data['差值'].mean() #使用scipy計算標准誤差 se=stats.sem(data['差值']) #置信區間上限 a=sample_mean - t_ci * se #置信區間下限 b=sample_mean + t_ci * se
print('兩個平均值差值的置信區間,95置信水平 CI=[%f,%f]' % (a,b))

6.效應量
''' 效應量:差異指標Cohen's d ''' #差值數據集對應的總體平均值是0 pop_mean=0 #差值數據集的標准差 sample_std=data['差值'].std() d=(sample_mean - pop_mean) / sample_std print('d=',d)

三、數據分析報告總結
1、描述統計分析
第一組樣本數據:字體內容和字體顏色一致情況下,平均反應時間是: 13.89 秒,標准差是 3.47 秒
第二組樣本數據:字體內容和字體顏色不一致情況下,平均反應時間是: 22.62 秒,標准差是 5.09 秒
“不一致”情況下所用時間均大於“一致”情況,也就是當字體內容和字體驗證不一致時,實驗者的平均反應時間變長
2、推論統計分析
1)假設檢驗
相關配對檢驗t(24)=-8.35,p=7.32e-09 (α=5%),左尾檢驗
統計上存在顯著差異,拒絕零假設,從而驗證斯特魯普效應存在。
2)置信區間
兩個平均值差值的置信區間,95%置信水平 CI=[-8.80,-8.67]
3)效應量
d= - 1.67