1 Packages and dataset

本段程式碼載入後續資料讀取、描述統計與繪圖所需要的 R 套件。接著,使用 read_spss() 函數讀取 PISA 2022 的 SPSS 格式資料檔,並將資料儲存為 PISA.dat。

library(haven)
library(psych)
library(ggplot2)

PISA.dat <- read_spss("PISA_tawian2022_trimmed_lab.sav")

2 Descriptive statistics for ESCS

本節針對經濟、社會與文化地位指數(ESCS)進行描述統計,作為後續 z 分數轉換的基礎。

2.1 Summary with “describe” function in “psych” package

本段程式碼使用 psych 套件中的 describe() 函數,計算 ESCS 的描述統計量,包括有效樣本數、平均數、標準差、中位數、最小值、最大值、全距、偏態、峰度與標準誤等資訊。

describe (PISA.dat$ESCS)
##    vars    n  mean   sd median trimmed  mad   min  max range  skew kurtosis
## X1    1 5599 -0.27 0.91  -0.24   -0.27 1.02 -3.84 4.21  8.05 -0.18    -0.31
##      se
## X1 0.01

2.2 Mean and standard deviation of ESCS

本段程式碼使用 R 的基本函數 mean() 與 sd(),分別計算 ESCS 的平均數與標準差,並儲存為 M 與 STD,供下一節計算 z 分數使用。

M = mean (PISA.dat$ESCS)
M
## [1] -0.2701122
STD = sd (PISA.dat$ESCS)
STD
## [1] 0.9058118

3 z-score transformation

本節將原始 ESCS 分數轉換為標準分數(z 分數)。

3.1 Computing z scores

本段程式碼將每位學生的 ESCS 分數減去平均數 M 後再除以標準差 STD,並將結果儲存為 z_tran,接著印出所有學生的 z 分數。

z_tran = (PISA.dat$ESCS - M) / STD

3.2 Summary of z scores

本段程式碼使用 describe() 函數檢視 z 分數的描述統計量,以確認轉換後的平均數與標準差。

describe(z_tran)
##    vars    n mean sd median trimmed  mad   min  max range  skew kurtosis   se
## X1    1 5599    0  1   0.04    0.03 1.13 -3.94 4.94  8.89 -0.18    -0.31 0.01

4 Histogram for z scores of ESCS

本段程式碼使用 ggplot2 繪製 z 分數的直方圖。由於 ggplot() 需要以資料框作為輸入,因此先以 data.frame(z_tran) 將 z 分數轉換為資料框。圖中將組距設定為 0.1,長條顏色設定為橘色,並以白色線條區隔各組距;縱軸表示各區間內的學生人數。

HIS <- ggplot(data.frame(z_tran), aes(x = z_tran)) +
  geom_histogram(binwidth = 0.1, fill = "#DD8452", color = "white", linewidth = 0.3) +
  labs(title = "Histogram for ESCS_z_transform (binwidth = 0.1)",
       x = "ESCS (index)", y = "Frequency")

HIS