我會使用單一樣本 t 檢定(one sample t-test),因為這題只有一組人(臺灣學生)、一個連續變項(PV1MATH),要拿這組人的平均數去和一個已知的數字 440 比。母體的標準差不知道,只能用樣本的標準差去估,所以用 t 檢定,不用 z 檢定。
研究假設如下,題目只問「有沒有差異」,沒有說是高還是低,所以用雙尾檢定,顯著水準 α = .05:
t 值的算法是:(樣本平均數 − 440) / (標準差 / √n)。分母叫標準誤,代表樣本平均數本身會晃動多少。t 值越大,就表示樣本平均離 440 越遠,遠到不太可能只是抽樣的誤差。自由度是 n − 1。除了 t 值和 p 值,我也算 95% 信賴區間和 Cohen’s d,因為樣本很大的時候,很小的差也會顯著,要再看差距到底大不大。
PV1MATH 是 PISA 的數學成績。PISA 不是直接給每個人一個分數,而是用試題反應理論估出好幾個「可能值」(plausible values),這裡只用第 1 個。它是可以有小數的連續分數,量尺是以 OECD 平均約 500、標準差約 100 來定的,所以可以算平均數和標準差,符合 t 檢定要的連續變項。
t 檢定還要求資料大致常態、每個人彼此獨立。這份資料有 5599 人,樣本很大,依中央極限定理,樣本平均數的分布會很接近常態,所以就算原始分數稍微不對稱,也不太影響結果。下面也會算偏態和峰度確認一下。獨立性方面,PISA 是先抽學校再抽學生,同校學生的成績會比較像,這次作業照題目只用一般的 t 檢定,沒有加權,也沒有把所有可能值合併,所以結果要當成「這份樣本」的描述。
haven 用來讀 SPSS 的
.sav。dplyr
用來挑欄位和做摘要。knitr 的 kable()
把表排整齊。moments 算偏態和峰度,看分數是不是大致對稱。t
檢定本身用 R 內建的 t.test(),不用另外裝套件。
library(haven)
library(dplyr)
library(knitr)
library(moments)
read_sav() 把
PISA_tawian2022_trimmed_lab.sav
讀進來。transmute() 只留 PV1MATH,as.numeric()
把 SPSS 的標籤去掉,後面才能直接算。數學成績在這個檔裡沒有 95、97
這類特殊代碼,所以只要確認有沒有 NA 就好。
# 讀入 PISA 2022 臺灣樣本
raw <- read_sav("PISA_tawian2022_trimmed_lab.sav")
# 只留下數學成績,並轉成一般數值
dat <- raw %>%
transmute(math = as.numeric(PV1MATH))
# 確認有效樣本與遺漏
cat("有效樣本:", sum(!is.na(dat$math)),
";遺漏:", sum(is.na(dat$math)), "\n")
## 有效樣本: 5599 ;遺漏: 0
先看平均數、標準差、中位數,以及偏態和峰度。偏態接近 0
就是左右大致對稱;moments::kurtosis() 算的峰度,常態分布是
3。fmt2()
是把數字四捨五入成小數兩位再顯示,計算時仍用完整數字。
# 小數兩位的顯示函式(只用來顯示,不拿來計算)
fmt2 <- function(x) sprintf("%.2f", round(as.numeric(x), 2))
mu0 <- 440 # 要比較的 PISA 全球均值
desc <- dat %>%
summarise(
人數 = sum(!is.na(math)),
平均數 = mean(math, na.rm = TRUE),
標準差 = sd(math, na.rm = TRUE),
標準誤 = sd(math, na.rm = TRUE) / sqrt(sum(!is.na(math))),
中位數 = median(math, na.rm = TRUE),
最小值 = min(math, na.rm = TRUE),
最大值 = max(math, na.rm = TRUE),
偏態 = moments::skewness(math, na.rm = TRUE),
峰度 = moments::kurtosis(math, na.rm = TRUE),
高於440比例 = mean(math > mu0, na.rm = TRUE) * 100
)
kable(
desc %>% mutate(across(-人數, \(x) fmt2(x))),
caption = "PV1MATH 描述統計(小數兩位;高於440比例的單位是 %)"
)
| 人數 | 平均數 | 標準差 | 標準誤 | 中位數 | 最小值 | 最大值 | 偏態 | 峰度 | 高於440比例 |
|---|---|---|---|---|---|---|---|---|---|
| 5599 | 537.82 | 109.73 | 1.47 | 541.62 | 219.06 | 917.38 | -0.10 | 2.58 | 79.48 |
t.test() 的 mu = 440
就是虛無假設裡的數字。alternative = "two.sided"
是雙尾檢定,conf.level = 0.95 是 95% 信賴區間。下面先印出 R
的原始結果,再把要回報的 t 值、自由度、p 值整理成小數兩位。
R 會把非常小的 p 值印成
< 2.2e-16,意思是比電腦能分辨的最小數還小。四捨五入到小數兩位會是
0.00,但 p 值不會真的等於 0,所以寫報告時記成 p < .001。
# 單一樣本 t 檢定:H0 為 mu = 440,雙尾
tt <- t.test(dat$math, mu = mu0, alternative = "two.sided", conf.level = 0.95)
tt
##
## One Sample t-test
##
## data: dat$math
## t = 66.706, df = 5598, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 440
## 95 percent confidence interval:
## 534.9471 540.6968
## sample estimates:
## mean of x
## 537.822
# 效果量 Cohen's d = (平均數 - 440) / 標準差
cohen_d <- (desc$平均數 - mu0) / desc$標準差
# 整理要回報的數字
t_result <- tibble(
t值 = fmt2(tt$statistic),
自由度 = as.integer(tt$parameter),
p值 = ifelse(tt$p.value < .001, "< .001", fmt2(tt$p.value)),
平均差 = fmt2(desc$平均數 - mu0),
`95%信賴區間` = paste0("[", fmt2(tt$conf.int[1]), ", ", fmt2(tt$conf.int[2]), "]"),
`Cohen's d` = fmt2(cohen_d)
)
kable(t_result, caption = "單一樣本 t 檢定結果(檢定值 = 440)")
| t值 | 自由度 | p值 | 平均差 | 95%信賴區間 | Cohen’s d |
|---|---|---|---|---|---|
| 66.71 | 5598 | < .001 | 97.82 | [534.95, 540.70] | 0.89 |
略。
有效樣本有 5599 人,沒有遺漏。臺灣學生的數學平均分數是 537.82 分,標準差是 109.73,中位數是 541.62。偏態是 -0.10,峰度是 2.58,分數大致左右對稱,加上樣本很大,適合用 t 檢定。
單一樣本 t 檢定的結果是 t = 66.71,自由度 df = 5598,p 值四捨五入到小數兩位是 0.00,也就是 p < .001。臺灣學生平均比 440 分高 97.82 分,平均數的 95% 信賴區間是 534.95 到 540.70,整段都在 440 之上。Cohen’s d 是 0.89,依 Cohen 的標準(0.2 小、0.5 中、0.8 大)屬於大效果。另外,有 79.48% 的臺灣學生分數高於 440。
這題想知道臺灣學生的數學成績,是否和 PISA 全球參與國家的學生數學均值 440 分不同。因為只有一組學生、一個連續的數學分數,要和一個已知數字比較,且不知道母體標準差,所以使用單一樣本 t 檢定。虛無假設是臺灣學生的數學平均等於 440 分(H0:μ = 440),對立假設是不等於 440 分(H1:μ ≠ 440),採雙尾檢定,α = .05。
PISA 2022 臺灣樣本共有 5599 位學生,PV1MATH 沒有遺漏。平均分數是 537.82 分,標準差 109.73。分數分布大致對稱(偏態 -0.10),樣本也很大,t 檢定的前提沒有明顯問題。
檢定結果 t(5598) = 66.71,p < .001(小數兩位為 0.00),小於 .05,所以拒絕虛無假設。臺灣學生的數學平均分數和 440 分有顯著差異,而且是顯著較高,平均高出約 97.82 分,95% 信賴區間為 [534.95, 540.70],整段都高於 440。
這個差距不只是統計上顯著,實際上也很大。Cohen’s d = 0.89,代表臺灣學生的平均比 440 分高了將近一個標準差;約 79.48% 的臺灣學生分數超過全球均值。也就是說,臺灣學生整體的數學表現明顯優於 PISA 全球參與國家的平均水準。要注意的是,這裡只用了第一個可能值,也沒有使用抽樣權重,所以結果是描述這份樣本,正式推論到全臺灣學生時,還要依 PISA 的建議合併所有可能值(PISA 2022 有 10 個)並加權。