# 導論:為什麼醫師需要懂微積分 {.unnumbered}
```{r}
#| include: false
source("R/_common.R")
```
> 「我用 R 或 SPSS 就可以跑統計了,為什麼還要學微積分?」
這大概是每位醫師在聽到要學微積分時,心中浮現的第一個問題。讓我們來認真回答這個問題。
## 統計軟體做了什麼?
當你在 R 中執行一個簡單的線性迴歸:
```{r}
# 模擬資料:年齡與血壓的關係
set.seed(42)
age <- 30:70
sbp <- 90 + 1.2 * age + rnorm(length(age), sd = 10)
# 執行線性迴歸
model <- lm(sbp ~ age)
summary(model)
```
軟體回傳了係數、標準誤、p 值等結果。但這些數字是怎麼算出來的?
答案是:**微積分**。
- 係數 1.2(斜率)是透過「讓預測誤差平方和最小」算出來的——這需要**微分** [@armitage2001statistical]
- 標準誤的計算涉及**積分**
- p 值是 t 分布曲線下的面積——也是**積分** [@casella2002statistical]
## 不懂微積分會怎樣?
### 1. 無法理解方法的限制
每個統計方法都有假設和限制。如果不理解方法背後的數學原理,你可能會:
- 在不適當的情況下使用某個方法
- 無法判斷違反假設的嚴重程度
- 看不懂方法論文獻中的討論
### 2. 無法解讀進階結果
許多醫學研究會報告:
- **Hazard ratio** 和 **hazard function** [@collett2015modelling]
- **Odds ratio** 的 confidence interval(為什麼要取 log?)[@agresti2018introduction]
- **Maximum likelihood estimates** 的 standard error [@pawitan2013all]
這些概念都建立在微積分的基礎上。
### 3. 無法和統計學家深度溝通
當你需要和統計學家討論研究設計或分析方法時,理解基本的數學語言會讓溝通更順暢。
## 微積分在統計中扮演什麼角色?
讓我們用一張圖來說明:
```{r}
#| echo: false
#| fig-height: 8
# 機率密度函數
p1 <- ggplot(data.frame(x = c(-4, 4)), aes(x)) +
stat_function(fun = dnorm, geom = "area", fill = "#2E86AB", alpha = 0.3) +
stat_function(fun = dnorm, linewidth = 1.2, color = "#2E86AB") +
geom_segment(aes(x = 1.96, xend = 1.96, y = 0, yend = dnorm(1.96)),
linetype = "dashed", color = "#E94F37") +
stat_function(fun = dnorm, geom = "area", xlim = c(1.96, 4),
fill = "#E94F37", alpha = 0.5) +
annotate("text", x = 2.5, y = 0.05, label = "p-value\n(積分)", color = "#E94F37") +
labs(title = "統計推論需要積分",
subtitle = "p-value = 曲線下的面積",
x = "檢定統計量", y = "機率密度") +
theme_minimal(base_size = 12)
# 最佳化
set.seed(123)
data_opt <- rnorm(20, mean = 5, sd = 2)
log_lik <- function(mu) sum(dnorm(data_opt, mean = mu, sd = 2, log = TRUE))
mu_range <- seq(2, 8, by = 0.01)
ll_values <- sapply(mu_range, log_lik)
p2 <- ggplot(data.frame(mu = mu_range, ll = ll_values), aes(mu, ll)) +
geom_line(color = "#2E86AB", linewidth = 1.2) +
geom_vline(xintercept = mu_range[which.max(ll_values)],
color = "#E94F37", linetype = "dashed") +
geom_point(aes(x = mu_range[which.max(ll_values)], y = max(ll_values)),
color = "#E94F37", size = 3) +
annotate("text", x = 5.5, y = max(ll_values) - 2,
label = "MLE\n(微分找極值)", color = "#E94F37") +
labs(title = "參數估計需要微分",
subtitle = "找到 likelihood 最大值",
x = expression(mu), y = "Log-Likelihood") +
theme_minimal(base_size = 12)
# 存活曲線
time <- seq(0, 10, by = 0.1)
surv <- exp(-0.3 * time)
hazard <- rep(0.3, length(time))
p3 <- ggplot(data.frame(time, surv, hazard)) +
geom_line(aes(time, surv), color = "#2E86AB", linewidth = 1.2) +
geom_line(aes(time, hazard), color = "#E94F37", linewidth = 1.2, linetype = "dashed") +
annotate("text", x = 5, y = 0.75, label = "S(t) 存活函數", color = "#2E86AB", hjust = 0) +
annotate("text", x = 5, y = 0.45, label = "h(t) = -S'(t)/S(t) 危險函數", color = "#E94F37", hjust = 0) +
labs(title = "存活分析中的導數",
subtitle = "Hazard function 與 S(t) 的導數相關",
x = "時間", y = "") +
theme_minimal(base_size = 12) +
theme(plot.margin = margin(5, 15, 5, 5))
# 組合圖
(p1 | p2) / p3 +
plot_annotation(
title = "微積分在醫學統計中的角色",
theme = theme(plot.title = element_text(size = 16, face = "bold"))
)
```
## 這本書的學習路徑
我們會按照以下順序,循序漸進地建立你的微積分基礎:
```{r}
#| echo: false
#| fig-height: 4
library(dplyr)
# 學習路徑圖
path_data <- data.frame(
x = c(1, 2, 3, 4, 5),
y = c(1, 2, 3, 4, 5),
label = c("Part I\n基礎概念", "Part II\n微分", "Part III\n積分",
"Part IV\n多變量", "Part V\n統計應用"),
desc = c("函數、極限、連續", "導數、微分規則\n指數對數、最佳化",
"積分概念、技巧\n瑕積分", "偏微分\n多重積分",
"MLE、迴歸\n存活、貝氏")
)
ggplot(path_data, aes(x, y)) +
geom_segment(aes(x = x, xend = lead(x), y = y, yend = lead(y)),
arrow = arrow(length = unit(0.3, "cm")),
color = "#2E86AB", linewidth = 1.5, na.rm = TRUE) +
geom_point(size = 15, color = "#2E86AB") +
geom_text(aes(label = label), color = "white", fontface = "bold", size = 3) +
geom_text(aes(y = y - 0.7, label = desc), size = 2.5, color = "gray30") +
coord_cartesian(xlim = c(0.5, 5.5), ylim = c(0, 6)) +
theme_void() +
labs(title = "學習路徑") +
theme(plot.title = element_text(hjust = 0.5, size = 14, face = "bold"))
```
## 學習建議
### 調整心態
微積分不是要讓你變成數學家 [@grinstead2012introduction]。我們的目標是:
- **理解概念**:知道微分和積分「在做什麼」
- **建立直覺**:看到統計公式時,能猜到為什麼要這樣寫
- **讀懂文獻**:至少能看懂統計方法論文中的數學符號
### 善用視覺化
本書強調視覺化學習。當你對某個概念感到困惑時:
1. 回到該概念的圖形
2. 調整程式碼中的參數
3. 觀察圖形如何變化
### 不要害怕符號
數學符號一開始看起來很嚇人,但它們其實是「簡化版的文字」。例如:
$$\int_a^b f(x) \, dx$$
這段符號的意思就是:「計算函數 $f(x)$ 從 $a$ 到 $b$ 之間,曲線下方的面積」。
我們會在每次引入新符號時,都用白話文解釋一遍。
## 準備好了嗎?
讓我們從最基本的概念「**函數**」開始吧。