文章目錄
本篇內容包括:
- 實作單一樣本t檢定
- 實作獨立樣本t檢定
- 測試變異數相同的Levene檢定
- 實作成對樣本t檢定
在這裡並沒有要細說統計相關理論,這幾篇的教學分享文所著重的在於「用R語言來實作SPSS統計功能」,因此統計相關知識就變成是基礎了,我們只是藉由RStudio這個工具,來呈現統計分析,當然這時候需要的知識就缺一不可了;相關基礎統計知識可以自行Google、wikipedia、閱讀相關統計書籍或請教統計專門老師。
單一樣本t檢定
接下來讓我們來看一個實務應用價值很高的統計t檢定,從研究的角度來看,最常見的也最需要的是針對兩個組進行比較。常用在前後的比較,例如:藥物是否有效、改變製程後的良率或兩種教學方法哪一個比較有效…等。
雙尾單一樣本t檢定
案例:若該銀行行長欲檢定其客戶平均存款是否不同於440萬元
H0:客戶平均存款等於440萬元(μ=440)
H1:客戶平均存款不等於440萬元(μ≠440)
函數:t.test(x, y = NULL, alternative = c(“two.sided”, “less”, “greater”), mu = 0, paired = FALSE, var.equal = FALSE, conf.level = 0.95, …)
案例是雙尾檢定,因此只要設定資料來源為column(存款),mu值為440,就完成了。
t.test(saledata$存款,mu=440)
案例:若銀行客戶的樣本資料存款平均值為422萬元,該銀行宣稱其客戶平均存款大於400萬元。(想想看用什麼函數可以找出存款平均值為多少?)
H0:客戶平均存款未大於400萬元(μ≤400)
H1:客戶平均存款大於400萬元(μ>400)
案例為單尾檢定,設定資料來源為column裡的存款,mu值為400,就完成了。
t.test(saledata$存款,mu=400)
但現在得到的是雙尾的p-value,真正的p-value要再除以2,才是真正的值。
那麼在R語言中,是不是一定要跟使用SPSS時一樣,單尾就是把雙尾用人工方式再除以2呢?
單尾單一樣本t檢定
事實上,並不一定,只要額外設定alternative=c(“greater”),就會變成檢定大於某一個值的有方向的單尾檢定,也就不需要再人工將p-value除以2了。
t.test(saledata$存款,mu=400,alternative=c("greater"))
獨立樣本t檢定
檢驗兩個總體的均值是不是一樣。
案例: 比較銀行客戶之平均存款,是否因性別而有所不同。
H0:女性客戶平均存款與男性客戶平均存款無差異(μ0-μ1=0)
H1:女性客戶平均存款與男性客戶平均存款有差異(μ0-μ1≠0)
分組:性別
t.test(saledata$存款 ~ saledata$性別)
測試變異數相同的Levene檢定
但因為獨立樣本t檢定,有分成兩種,分別是兩母體變異數相等和不相等;而t檢定預設兩母體變異數不相等(var.equal = FALSE)的情況下,所跑出來的,那我們怎麼知道變異數到底相不相等呢!
就需要使用測試變異數相同的Levene檢定,但這個檢定並沒有預設載入的R語言裡面,因此需要另外導入套件car。
套件:car
函數: leveneTest(y, group, center=median, …)
預設是使用中位數,改設定為均值mean;否則雖然結果是一樣的,但是p-value卻是不一樣的。
leveneTest(saledata$存款,saledata$性別,center = mean)
如果出現這個錯誤訊息,表示性別欄裡面的值不是因子,可能是0和1,沒有轉換為男和女。轉換方法看用R語言來實作SPSS統計功能-比較平均數法
leveneTest結果p-value=0.1534 > 0.05,所以無法證明兩變異數不相同(指變異數相同)。
變異數相同的獨立樣本t檢定
另外加入var.equal = TRUE的參數。
t.test(saledata$存款 ~ saledata$性別,var.equal = TRUE)
結論:p-value=0.1389 > 0.05 ,所以無法證明男女客戶平均存款有差異。
成對樣本t檢定
通常像實驗組和對照組,比較前和比較後。
案例:台積科大為提昇學生數學能力,先抽取部分學生做為實驗對象,首先測驗其數學能力;測試完後實施數學強化教學一個月,並於施教完畢後再進行第二次數學能力測驗 · 試問該數學強化教學是否有效果?
H0:數學1-數學2≧0 (Δμ≧0)(第一次與第二次數學能力測驗差異平均值不小於零)
H1:數學1-數學2<0 (Δμ<0)(第一次與第二次數學能力測驗差異平均值小於零)
既然是成對樣本,那麼我們設定的參數為把預設paired = FALSE改為TRUE,就可以囉!
t.test(collegedata$數學1,collegedata$數學2,paired = TRUE)
p-value = 1.428e-06 / 2 = 0.000001426 / 2 < 0.05
或加上單尾的參數 alternative=c(“less”)
t.test(collegedata$數學1,collegedata$數學2,paired = TRUE,alternative=c("less"))
p-value = 7.14e-07 = 0.000000714 < 0.05
結論:第二次數學成績明顯比第一次高。
Ref: https://www.rdocumentation.org