本段程式碼載入後續資料讀取、描述統計與繪圖所需要的 R 套件。接著,使用
read_spss() 函數讀取 PISA 2022 的 SPSS
格式資料檔,並將資料儲存為 PISA.dat。
library(haven)
library(psych)
library(ggplot2)
PISA.dat <- read_spss("PISA_tawian2022_trimmed_lab.sav")
本段程式碼建立一個名為 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)
)
本節針對經濟、社會與文化地位指數(ESCS)進行描述統計分析,以了解資料的集中趨勢、離散程度與分布特性。
本段程式碼使用 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 的基本統計函數,分別計算 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
本段程式碼使用 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