本段程式碼載入後續資料讀取、描述統計與繪圖所需要的 R 套件。接著,使用
read_spss() 函數讀取 PISA 2022 的 SPSS
格式資料檔,並將資料儲存為 PISA.dat。
library(haven)
library(psych)
library(ggplot2)
PISA.dat <- read_spss("PISA_tawian2022_trimmed_lab.sav")
本節針對經濟、社會與文化地位指數(ESCS)進行描述統計,作為後續 z 分數轉換的基礎。
本段程式碼使用 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
本段程式碼使用 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
本節將原始 ESCS 分數轉換為標準分數(z 分數)。
本段程式碼將每位學生的 ESCS 分數減去平均數 M
後再除以標準差 STD,並將結果儲存為
z_tran,接著印出所有學生的 z 分數。
z_tran = (PISA.dat$ESCS - M) / STD
本段程式碼使用 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
本段程式碼使用 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