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 Theme setting

本段程式碼建立一個名為 common_theme 的圖表主題,以統一後續圖表的視覺風格。設定內容包括使用簡潔的經典主題、調整標題與座標軸文字大小、將圖表標題置中並加粗,以及設定座標軸線條的顏色與粗細。

common_theme <- theme_classic(base_size = 14) +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold", size = 16),
    axis.title = element_text(size = 13),
    axis.text = element_text(size = 11),
    axis.line = element_line(color = "black", linewidth = 0.5)
  )

3 Descriptive statistics for ESCS

本節針對經濟、社會與文化地位指數(ESCS)進行描述統計分析,以了解資料的集中趨勢、離散程度與分布特性。

3.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

3.2 Original function in R and its summary table

本段程式碼使用 R 的基本統計函數,分別計算 ESCS 的平均數、標準差、最小值、最大值、全距、中位數與四分位距。na.rm = TRUE 表示在計算時排除遺漏值。最後,將計算結果整理為 escs_summary 資料表,並將數值四捨五入至小數點後三位。

M         <- mean(PISA.dat$ESCS, na.rm = TRUE)
STD       <- sd(PISA.dat$ESCS, na.rm = TRUE)
MIN       <- min(PISA.dat$ESCS, na.rm = TRUE)
MAX       <- max(PISA.dat$ESCS, na.rm = TRUE)
range_ALL <- MAX - MIN
MED       <- median(PISA.dat$ESCS, na.rm = TRUE)
IQR_val   <- IQR(PISA.dat$ESCS, na.rm = TRUE)

escs_summary <- data.frame(
  Statistic = c("Mean", "SD", "Min", "Max", "Range", "Median", "IQR"),
  Value = round(c(M, STD, MIN, MAX, range_ALL, MED, IQR_val), 3)
)
escs_summary
##   Statistic  Value
## 1      Mean -0.270
## 2        SD  0.906
## 3       Min -3.842
## 4       Max  4.207
## 5     Range  8.049
## 6    Median -0.237
## 7       IQR  1.379

3.3 Histogram for ESCS

本段程式碼使用 ggplot2 繪製 ESCS 的直方圖,以視覺化方式呈現其分布情形。圖中將組距設定為 0.1,長條顏色設定為橘色,並以白色線條區隔各組距。橫軸表示 ESCS 指數分數,縱軸表示各分數區間內的學生人數;最後套用前述的 common_theme 圖表主題。

HIS <- ggplot(PISA.dat, aes(x = ESCS)) +
  geom_histogram(
    binwidth = 0.1,
    fill = "#DD8452",
    color = "white",
    linewidth = 0.3
  ) +
  labs(
    title = "histogram for ESCS (binwidth = 0.1)",
    x = "ESCS (index)",
    y = "Frequency"
  ) +
  common_theme

HIS