# 1. 載入 ggplot2 繪圖套件
library(ggplot2)
# 2. 模擬生成臨床試驗數據
set.seed(42)
drug_before <- c(145, 138, 150, 142, 136, 155, 148, 140, 135, 152)
# 假設藥物效果平均讓收縮壓下降 12 mmHg
drug_after <- drug_before - rnorm(10, mean = 12, sd = 4)
# 對照組 (服用安慰劑,平均下降 2 mmHg)
placebo_after <- c(142, 136, 148, 140, 138, 150, 144, 139, 137, 149) - rnorm(10, mean = 2, sd = 3)
# =======================================================
# 實作一:配對 t 檢定 (新藥組治療前後 SBP 比較)
# =======================================================
paired_test <- t.test(drug_before, drug_after, paired = TRUE)
# =======================================================
# 實作二:獨立雙樣本 t 檢定 (新藥組治療後 vs. 對照組治療後)
# =======================================================
# 步驟 A:使用 F 檢定比較變異數
var_test_res <- var.test(drug_after, placebo_after)
# 步驟 B:執行獨立雙樣本 t 檢定
# 我們指定 var.equal = TRUE 以示範等變異數檢定 (若 F 檢定未拒絕)
ind_test_res <- t.test(drug_after, placebo_after, var.equal = TRUE)
# 輸出結果
cat("=========================================\n")
cat(" 實作一:配對 t 檢定結果 (新藥治療前後)\n")
cat("=========================================\n")
print(paired_test)
cat("\n=========================================\n")
cat(" 實作二:等變異數 F 檢定結果\n")
cat("=========================================\n")
print(var_test_res)
cat("\n=========================================\n")
cat(" 實作三:獨立雙樣本 t 檢定結果 (新藥後 vs 對照後)\n")
cat("=========================================\n")
print(ind_test_res)
# =======================================================
# 3. 資料整理與 ggplot2 箱形圖繪製
# =======================================================
plot_df <- data.frame(
Group = factor(c(rep("新藥組 (Drug)", 20), rep("對照組 (Placebo)", 10)),
levels = c("對照組 (Placebo)", "新藥組 (Drug)")),
Time = factor(c(rep("前 (Before)", 10), rep("後 (After)", 10), rep("後 (After)", 10)),
levels = c("前 (Before)", "後 (After)")),
SBP = c(drug_before, drug_after, placebo_after)
)
p_box <- ggplot(plot_df, aes(x = Group, y = SBP, fill = Time)) +
geom_boxplot(alpha = 0.8, color = "#2d3748", outlier.shape = 16, outlier.size = 2) +
scale_fill_manual(values = c("前 (Before)" = "#90cdf4", "後 (After)" = "#3182ce")) +
labs(
title = "降血壓新藥與對照組之療效比較",
subtitle = "呈現治療前後收縮壓 (SBP) 分布與對照組差異",
x = "受試組別 (Group)",
y = "收縮壓 Systolic BP (mmHg)",
fill = "量測時間點"
) +
theme_minimal(base_family = "Noto Sans CJK TC", base_size = 12) + # Windows 請替換為 Microsoft JhengHei
theme(
plot.title = element_text(size = 15, hjust = 0.5, color = "#2d3748", lineheight = 1.1),
plot.subtitle = element_text(size = 11, hjust = 0.5, color = "#718096"),
axis.title = element_text(size = 12, color = "#4a5568"),
axis.title.x = element_text(margin = margin(t = 10)),
axis.title.y = element_text(margin = margin(r = 12)),
axis.text = element_text(size = 11, color = "#2d3748"),
legend.title = element_text(size = 11, color = "#4a5568"),
legend.text = element_text(size = 10, color = "#2d3748"),
legend.position = "bottom",
panel.background = element_rect(fill = "#f7fafc", color = NA),
plot.background = element_rect(fill = "white", color = NA),
plot.margin = margin(20, 28, 20, 54)
)
# 顯示圖檔
print(p_box)