Udacity資料分析(進階)- 統計學:檢驗心理學現象
統計學:檢驗心理學現象
背景資訊
在一個Stroop (斯特魯普)任務中,參與者得到了一列文字,每個文字都用一種油墨顏色展示。參與者的任務是將文字的列印顏色大聲說出來。這項任務有兩個條件:一致文字條件,和不一致文字條件。在一致文字條件中,顯示的文字是與它們的列印顏色匹配的顏色詞,如“紅色”、“藍色”。在不一致文字條件中,顯示的文字是與它們的列印顏色不匹配的顏色詞,如“紫色”、“橙色”。在每個情況中,我們將計量說出同等大小的列表中的墨色名稱的時間。每位參與者必須全部完成並記錄每種條件下使用的時間。
調查問題
(1) 我們的自變數是什麼?因變數是什麼?
自變數:顯示的文字與它們的列印顏色的顏色詞是否匹配;因變數:參與者完成將文字的列印顏色說一遍所需的時間
(2) 此任務的適當假設集是什麼?你需要以文字和數學符號方式對假設集中的零假設和對立假設加以說明,並對數學符號進行定義。你想執行什麼型別的統計檢驗?為你的選擇提供正當理由(比如,為何該實驗滿足你所選統計檢驗的前置條件)。
假設集:
:表示一致文字條件情況下完成時間的總體均值
:表示不一致文字條件情況下完成時間的總體均值
零假設:
=
即不同文字條件並不會影響完成任務時間
備擇假設:
≠
即不同文字條件會影響完成任務時間
本次檢驗使用t檢驗中的配對樣本t檢驗,並構建雙尾檢驗:
因為本次使用的試驗資料集檢驗物件是同一樣本資料進行兩種不同條件的處理,屬於配對樣本t檢驗,且由於備擇假設中包含不等號,我們需要找出引數的變化,而不是增減,所以選用雙尾檢驗。
(3) 報告關於此資料集的一些描述性統計。包含至少一個集中趨勢測量和至少一個變異測量。
import pandas as pd
import scipy.stats as stats
df=pd.read_csv('stroopdata.csv')
#計算彙總統計
df.describe()
#計算中位數
df.median()
Congruent 14.3565
Incongruent 21.0175
dtype: float64
#計算IQR
stats.iqr(df,axis=0)
array([4.3055 , 5.33475])
#計算極差
df.Congruent.ptp(),df.Incongruent.ptp()
(13.698000000000002, 19.568)
描述性統計(以下順序均為Congruent,Incongruent)
集中趨勢測量
1.平均數:14.051125,22.015917
2.中位數:14.3565,21.0175
3.眾數:應為樣本數量平均,不適合使用眾數
變異測量
1.標準差:3.559358,4.797057
2.極差:13.698,19.568
3.IQR(四分位距):4.3055,5.33475
視覺化分析
(4) 提供顯示樣本資料分佈的一個或兩個視覺化。用一兩句話說明你從圖中觀察到的結果。
import numpy as np
import matplotlib.pyplot as plt
df.index=range(0, len(df.Congruent))
bar_width = 0.7
x_pos = np.arange(len(df.Congruent) * 2, step=2)
plt.figure(figsize=[9,5])
plt.bar(x_pos, df['Congruent'], color='#FF7D40', width=bar_width)
plt.bar(x_pos + bar_width, df['Incongruent'], color='#33A1C9', width=bar_width)
plt.xticks(x_pos + bar_width / 2,df.index+1)
plt.title('Reading time under different conditions', fontsize=16)
plt.ylabel('Time')
plt.legend(df.columns)
plt.tight_layout()
plt.show()
data = [df.Congruent, df.Incongruent]
plt.title('Boxplot between Congruent and Incongruent', fontsize=12)
plt.boxplot(data,labels=df.columns)
plt.show()
結論
從圖上我們可以看出,每一次Incongruent所用的閱讀時間大於Congruent所用的閱讀時間,箱線圖中Incongruent存在兩處異常值,除此之外可以明顯看出Incongruent的中位數大於Congruent中75%的資料。
統計結果
(5) 現在,執行統計測試並報告你的結果。你的置信水平和關鍵統計值是多少?你是否成功拒絕零假設?對試驗任務得出一個結論。結果是否與你的期望一致?
均值偏差 = 14.051125 - 22.015917 = -7.964792 (n = 24)
#標準偏差
np.std(df.Congruent-df.Incongruent,ddof=1)
4.864826910359056
使用以下方法計算t統計量
- 其中d bar是平均差,s²是樣本方差,n是樣本大小
計算t統計量 = -8.0207
自由度 = 24 - 1 = 23
使用α=0.05,查表可知ν=23,p=0.025時臨界值t=2.069
95%的置信區間:-7.965±2.069(4.865/√24) 即 (-10.02,-5.91)
p-value 查表可知遠小於0.0001
#使用stats的配對樣本t檢驗計算p-value
stats.ttest_rel(df.Congruent,df.Incongruent,axis=0)
Ttest_relResult(statistic=-8.020706944109957, pvalue=4.103000585711178e-08)
使用stats自帶的配對樣本t檢驗計算得到了相同的結果
結論
我們選擇95%的置信水平,即顯著性水平α=0.05,從計算結果看p值遠小於0.05,那麼我們可以選擇拒絕零假設,接受備擇假設,即顯示的文字與它們的列印顏色不匹配時對實驗者的閱讀時間會產生影響。
參考資料
1.為什麼要使用配對 t 檢驗?http://support.minitab.com/zh-cn/minitab/17/topic-library/basic-statistics-and-graphs/hypothesis-tests/tests-of-means/why-use-paired-t/
2.有趣的心理學實驗——斯特魯普效應
https://blog.csdn.net/VucNdnrzk8iwX/article/details/79946964
3.spicy.stats官方文件
https://docs.scipy.org/doc/scipy-0.19.1/reference/generated/scipy.stats.ttest_rel.html
連結:https://pan.baidu.com/s/14YgycNkX5mti7DWAqlJQYg 密碼:qwia
學習資源
Udacity推論統計學入門(這門課中除了已經學到的t檢驗外,還加入了方差分析、迴歸分析和卡方檢驗等進階內容,適合已經通過專案的學員進行深入學習);
Coursera專項課程:R語言統計學(Duke大學教授主講,和Udacity的課程可以互為補充,在某些理論方面探索會更加深入。雖然需要付費做作業,但僅看課程視訊就可以學到很多,強烈推薦);
臺灣大學頑想學概率(一)(二)(要進一步瞭解統計學原理,概率論是必不可少的。這門中文MOOC以通俗易懂的內容和講師幽默隨和的風格,自上線以來好評不斷,習題也十分有挑戰性);
概率論:不確定性的科學(MIT的經典MOOC,一直以來都是Edx上最熱門的課程之一,難度和學習強度也相當之大,但授課水平確實無可挑剔,清晰明瞭。建議空餘時間較多並且願意挑戰自己時選修);
陳希孺《概率論與數理統計》(國內比較少見的經典數理統計教材)。