수포자의 보건통계 공부기록 ④ — 단순선형회귀, 공식이 태어난 이유
지난 포스팅에서 상관계수를 이해했다.
두 변수의 관계를 -1~+1 숫자로 표현하는 것까지 왔다.
이번엔 그 관계를 직선으로 표현한다.
공식을 외우기 전에, 왜 이 방향으로 생각해야 하는지부터 본다.
출발점 — 우리가 원하는 게 뭔가?
나이(X)로 혈압(Y)을 예측하고 싶다.
예측한다는 건 결국 이 질문이다:
"나이가 주어졌을 때, 혈압이 얼마일 것 같아?"
그러려면 나이와 혈압 사이의 규칙을 찾아야 한다.
가장 단순한 규칙이 뭘까?
💡 직선!
"나이가 1살 늘 때마다 혈압이 일정하게 올라간다"
STEP 1 — 직선을 수식으로 쓰면?
중학교 때 배운 직선의 방정식:
$$y = ax + b$$
회귀분석에서는 기호만 바뀐다:
$$\hat{y} = \beta_0 + \beta_1 x$$
중학교: y = b + a × x
회귀분석: ŷ = β₀ + β₁ × x
기호 의미
| $\hat{y}$ | 예측값 (^은 "추정했다"는 표시) |
| $\beta_0$ | 절편 (직선이 y축과 만나는 점) |
| $\beta_1$ | 기울기 (x가 1 증가할 때 y의 변화량) |
| $x$ | 독립변수 (나이) |
달라진 건 기호뿐이다.
수식의 구조는 중학교 직선과 완전히 같다.
STEP 2 — 어떤 직선을 그어야 할까?
점들이 흩어져 있다. 직선은 무한히 많이 그을 수 있다.
"실제 값과 예측 값의 차이가 가장 작은 직선"
실제 값 — 예측 값 = 잔차(Residual)
환자 A: 실제 혈압 145, 예측 혈압 140 → 잔차 = +5
환자 B: 실제 혈압 118, 예측 혈압 122 → 잔차 = -4
환자 C: 실제 혈압 130, 예측 혈압 130 → 잔차 = 0
STEP 3 — 잔차를 어떻게 "전체적으로" 잴까?
잔차를 다 더하면?
+5 + (-4) + 0 + (-3) + 2 = 0
또 0이 나온다. 분산 때랑 똑같은 문제다.
기억나는가? 분산 때도 이 문제가 생겨서 제곱했다.
여기서도 똑같이 한다.
$$\text{SSE} = \sum_{i=1}^{n}(y_i - \hat{y}_i)^2$$
잔차를 제곱해서 다 더한 것 = SSE(잔차제곱합)
이걸 가장 작게 만드는 직선 = 최적의 직선
💡 분산을 구할 때 제곱한 이유 = 잔차를 구할 때 제곱한 이유
완전히 같은 논리다. 새로운 개념이 아니다.
이렇게 잔차제곱합을 최소화하는 방법을
최소제곱법(Ordinary Least Squares, OLS) 이라고 한다.
STEP 4 — SSE를 최소로 만드는 기울기 β₁은?
SSE를 가장 작게 만드는 기울기를 구하면:
$$\beta_1 = \frac{\sum(x_i - \bar{x})(y_i - \bar{y})}{\sum(x_i - \bar{x})^2}$$
복잡해 보이지만, 우리가 이미 아는 것들로 쪼개면:
분자: Σ(x - x̄)(y - ȳ) → 공분산의 분자 ← 지난 포스팅에서 배운 것!
분모: Σ(x - x̄)² → 분산의 분자 ← 2번 포스팅에서 배운 것!
정리하면:
$$\beta_1 = \frac{\text{공분산}}{\text{X의 분산}} = r \cdot \frac{s_y}{s_x}$$
💡 기울기는 사실 이 질문의 답이다:
"X가 자기 평균에서 벗어난 만큼,
Y는 평균에서 얼마나 함께 벗어나 있나?"상관계수가 클수록 → 기울기가 가파름
Y가 많이 흩어질수록 → 기울기가 가파름
X가 많이 흩어질수록 → 기울기가 완만함
STEP 5 — 절편 β₀는?
기울기를 구했으면 절편은 간단하다.
회귀직선은 반드시 $(\bar{x}, \bar{y})$ — 평균점을 지난다.
$$\bar{y} = \beta_0 + \beta_1 \bar{x}$$
$$\beta_0 = \bar{y} - \beta_1 \bar{x}$$
"평균 나이를 넣으면 평균 혈압이 나와야 한다"
→ 그 조건을 만족하는 절편을 역산한 것
STEP 6 — R², 이 직선이 얼마나 믿을 만한가?
직선을 그었다. 근데 이 직선이 얼마나 잘 맞는가?
방법 A: 그냥 "평균 혈압"으로 모든 환자를 예측
방법 B: 나이로 회귀분석해서 예측
방법 B가 방법 A보다 얼마나 더 잘 맞추는가?
→ 그 비율이 R²
$$R^2 = 1 - \frac{\text{SSE (회귀선으로 설명 못 한 변동)}}{\text{SST (전체 변동)}}$$
$R^2$ 값 해석
| 1.0 | 완벽하게 예측 (현실에선 없음) |
| 0.56 | 나이가 혈압 변동의 56% 설명 |
| 0.0 | 직선이 아무 도움이 안 됨 |
회귀분석 결과 읽는 법
실제 R 출력 예시:
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 80.245 5.123 15.67 <0.001 ***
나이 0.523 0.089 5.87 <0.001 ***
R-squared: 0.562
항목 의미 해석
| Estimate (Intercept) | $\beta_0 = 80.245$ | 나이 0세일 때 혈압 기준값 |
| Estimate (나이) | $\beta_1 = 0.523$ | 나이 1살 증가 → 혈압 0.523 상승 |
| t value | 계수가 0과 얼마나 다른가 | 클수록 의미 있는 변수 |
| Pr(>|t|) | p-value | 0.05보다 작으면 통계적으로 유의 |
| R-squared | 설명력 | 나이가 혈압 변동의 56.2% 설명 |
⚠️ 회귀분석의 4가지 가정 — 꼭 확인해야 한다
회귀분석은 아래 4가지 가정이 만족될 때만 결과를 믿을 수 있다.
논문이나 과제에서 이걸 확인 안 하면 발목 잡힌다.
1. 선형성 → X와 Y의 관계가 직선이어야 함
2. 독립성 → 잔차들이 서로 독립이어야 함
3. 등분산성 → 잔차의 분산이 X값에 관계없이 일정해야 함
4. 정규성 → 잔차가 정규분포를 따라야 함
확인 방법: 잔차 플롯(Residual Plot) 을 반드시 그려볼 것.
오늘 공부의 핵심 연결고리
"나이로 혈압을 예측하고 싶다"
↓
직선을 긋자 → ŷ = β₀ + β₁x (중학교 직선과 같은 구조)
↓
어떤 직선? → 잔차가 가장 작은 직선
↓
잔차를 제곱해서 합산 → SSE (분산 때랑 같은 논리!)
↓
SSE 최소화 → β₁, β₀ 공식 도출 (공분산 ÷ 분산)
↓
이 직선이 얼마나 좋은가? → R²
↓
다음: 다중회귀 & 로지스틱 회귀
→ 변수가 여러 개면?
→ 결과가 0/1이면?
📌 다음 포스팅 예고: 다중회귀 & 로지스틱 회귀
변수가 나이 하나가 아니라 여러 개라면?
그리고 예측하려는 게 혈압(연속형)이 아니라 "사망 여부(0/1)"라면?
보건통계에서 가장 많이 쓰는 두 가지 회귀가 나온다.
'통계를 떠받치는 수학 이야기' 카테고리의 다른 글
| [보건통계개론] 상관계수 — 공분산부터 피어슨 r까지, 공식이 태어난 이유 (0) | 2026.03.31 |
|---|---|
| [보건통계개론] 표준편차·정규분포 — 분산의 단위 문제부터 68-95-99.7까지 (0) | 2026.03.30 |
| [보건통계개론] 분산·자유도·기댓값 — 공식 말고 이유부터 이해하기 (0) | 2026.03.29 |











