R

R 使用 t 檢定判斷平均數是否相同教學與範例

使用 R 的 t.test 函數進行單一樣本、獨立雙樣本與成對樣本的 t 檢定,檢驗母體平均數是否相同。

在各種研究上我們時常需要比較兩組資料是否具有顯著差異,而最常用來判斷母體平均數是否存在差異的統計方法就是 t 檢定。

t 檢定可分為單一樣本 t 檢定、獨立雙樣本 t 檢定、成對雙樣本 t 檢定三大類,以下是它們的使用時機,以及實際的範例。

單一樣本 t 檢定

假設我們有一組來自於常態分佈的樣本,想要檢驗它的母體平均值是否跟指定的值有差異,就可以使用單一樣本 t 檢定。

舉例來說,如果我們從一個班級中隨機抽樣調查 10 位學生的身高,想看看這一班學生的平均身高是否與全校平均身高(172)有差異,就可以使用單一樣本 t 檢定,首先輸入抽樣取得的身高資料以及全校平均身高:

# 抽樣學生的身高
x <- c(173, 168, 185, 176, 181, 168, 159, 159, 171, 165)

# 全校平均身高
avg <- 172

由於 t 檢定的前提是資料必須是常態分佈的,所以要先使用 Shapiro-Wilk 檢定,檢查一下常態性假設是否成立:

# 常態性檢定
shapiro.test(x)
        Shapiro-Wilk normality test

data:  x
W = 0.95916, p-value = 0.7762

p-value 為 0.7762,所以不拒絕虛無假設,表示常態性的假設是合理的,這樣就可以放心使用 t 檢定了。

常態性檢定的方法有非常多種,更詳細的教學請參考 R 常態性檢定教學與範例

呼叫 t.test 進行單一樣本 t 檢定:

# 單一樣本 t 檢定
t.test(x, mu = avg)
        One Sample t-test

data:  x
t = -0.55203, df = 9, p-value = 0.5944
alternative hypothesis: true mean is not equal to 172
95 percent confidence interval:
 164.3532 176.6468
sample estimates:
mean of x 
    170.5

檢定所得到的 p-value 為 0.5944,所以沒有顯著證據顯示這一班的平均身高跟全校的平均身高有差異。

獨立雙樣本 t 檢定

假設我們有兩組來自於兩個常態分佈的獨立樣本,想要檢驗兩邊的母體平均值是否有差異,就可以使用獨立雙樣本 t 檢定。

例如我們從兩個班級中各隨機抽樣調查 10 位學生的身高,想看看兩班的平均身高是否有差異,就可以使用獨立雙樣本 t 檢定。

這部分的 t 檢定分為兩種,一種是兩邊的母體變異數相同的狀況,另一種是母體變異數不同的狀況,要看資料的狀況來選擇使用哪一種。

變異數相同

首先輸入兩班抽樣學生的身高:

# 抽樣學生的身高
x <- c(173, 168, 185, 176, 181, 168, 159, 159, 171, 165)
y <- c(150, 189, 194, 171, 173, 188, 162, 180, 166, 170)

首先進行常態性檢定:

# 常態性檢定
shapiro.test(x)
        Shapiro-Wilk normality test

data:  x
W = 0.95916, p-value = 0.7762
# 常態性檢定
shapiro.test(y)
        Shapiro-Wilk normality test

data:  y
W = 0.96751, p-value = 0.8669

兩個 p-value 都大於 0.05,所以常態性假設沒有問題。

通過常態性檢定之後,使用 F 檢定來看看兩邊的母體變異數是否有差異:

# F 檢定
var.test(x, y)
        F test to compare two variances

data:  x and y
F = 0.39884, num df = 9, denom df = 9, p-value = 0.1871
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
 0.09906512 1.60570981
sample estimates:
ratio of variances 
         0.3988356

F 檢定的 p-value 是 0.1871,所以說母體變異數相同的假設成立,可以繼續使用變異數相同的獨立雙樣本 t 檢定:

# 獨立雙樣本 t 檢定(變異數相同)
t.test(x, y, var.equal = TRUE)
        Two Sample t-test

data:  x and y
t = -0.74674, df = 18, p-value = 0.4649
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -14.491104   6.891104
sample estimates:
mean of x mean of y 
    170.5     174.3

t 檢定的 p-value 為 0.4649 代表沒有顯著證據顯示兩班的學生平均身高有差異。

變異數不同

如果在進行 F 檢定時,發現兩邊的母體變異數是不同的,就要改用變異數不同的獨立雙樣本 t 檢定,以下是一個範例:

# 抽樣學生的身高
x <- c(173, 168, 185, 176, 181, 168, 159, 159, 171, 165)
y <- c(174, 178, 175, 174, 170, 178, 175, 173, 175, 173)

進行常態性檢定:

# 常態性檢定
shapiro.test(x)
        Shapiro-Wilk normality test

data:  x
W = 0.95916, p-value = 0.7762
# 常態性檢定
shapiro.test(y)
        Shapiro-Wilk normality test

data:  y
W = 0.9227, p-value = 0.38

進行 F 檢定:

# F 檢定
var.test(x, y)
        F test to compare two variances

data:  x and y
F = 13.158, num df = 9, denom df = 9, p-value = 0.0007116
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
  3.268364 52.975705
sample estimates:
ratio of variances 
          13.15842

經過 F 檢定之後,發現兩邊的母體變異數不相同,所以使用變異數不同的獨立雙樣本 t 檢定,也就是將 t.test 函數的 var.equal 參數設定為 FALSE

# 獨立雙樣本 t 檢定(變異數不同)
t.test(x, y, var.equal = FALSE)
        Welch Two Sample t-test

data:  x and y
t = -1.4191, df = 10.36, p-value = 0.1852
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -10.250745   2.250745
sample estimates:
mean of x mean of y 
    170.5     174.5

最後得到的 p-value 為 0.1852,代表沒有顯著證據顯示兩班的學生平均身高有差異。

成對雙樣本 t 檢定

假設我們有兩組來自於兩個常態分佈的樣本,而兩組樣本之間是有關聯性的,這種狀況下若想要檢驗兩邊的母體平均值是否有差異,就可以使用成對雙樣本 t 檢定。

假設我們想要知道運動是否對於體重有影響,我們在實驗之前,測量一群人的原本體重,然後讓這群人經過長期的運動之後,再測量一次,也就是說我們拿到的資料是有配對關係的(同一人長期運動前後的體重),這樣種況即可使用成對雙樣本 t 檢定。

# 長期運動前後的體重
x <- c(70, 87, 84, 76, 67, 66, 83, 46, 71, 88)
y <- c(72, 91, 84, 79, 69, 69, 84, 48, 71, 90)

進行常態性檢定:

# 常態性檢定
shapiro.test(x)
        Shapiro-Wilk normality test

data:  x
W = 0.90258, p-value = 0.2338
# 常態性檢定
shapiro.test(y)
        Shapiro-Wilk normality test

data:  y
W = 0.90852, p-value = 0.271

常態性假設沒問題,接著進行成對雙樣本 t 檢定:

# 成對雙樣本 t 檢定
t.test(x, y, paired = TRUE)
        Paired t-test

data:  x and y
t = -4.6696, df = 9, p-value = 0.001169
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -2.8204382 -0.9795618
sample estimates:
mean of the differences 
                   -1.9

經過成對雙樣本 t 檢定之後,得到的 p-value 為 0.001169,代表長期的運動對於體重有顯著的影響。

參考資料

Share
Published by
Office Guide

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

1 年 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

1 年 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

1 年 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

1 年 ago