Linear Regression · Part I
회귀분석 I — 점들 사이를 가장 잘 가로지르는 한 줄
세상의 데이터는 점으로 흩어져 있어요.
그 점들 사이에 관계가 숨어 있다면,
한 줄로 그 관계를 그려낼 수 있어요. 그게 회귀분석이에요.
여는 글 · 점 두 개의 이야기
키와 몸무게. 광고비와 매출. 공부 시간과 시험 점수.
세상엔 한 변수가 다른 변수에 영향을 주는 관계가 셀 수 없이 많아요.
통계학자는 이 관계를 식 하나로 적고 싶어해요.
예를 들어 "공부 시간이 1시간 늘면 점수가 평균 5점 오른다"처럼요.
이 식을 데이터에서 뽑아내는 방법이 회귀분석이에요.
① 회귀 모델식 — Y와 X들을 연결하는 한 줄.
② "좋은 선"의 기준 — 점들에서 평균적으로 가까운 선.
③ \(R^2\) — 그 선이 데이터를 얼마나 잘 설명하는가의 점수.
회귀는 "점들 사이를 가장 부드럽게 지나가는 한 줄을 긋는 일"이에요.
회귀가 풀고 싶은 세 가지 문제
회귀분석은 단순히 식 하나를 만드는 게 아니에요. 세 가지 큰 목표가 있어요.
① 관계를 묘사하기
"교육 수준이 높을수록 연봉이 오른다."
"광고비가 늘면 매출이 늘어난다."
이런 경향성을 식으로 적어요.
② 유의성 확인
"교육 수준이 진짜 연봉에 영향을 주나? 아니면 우연일 뿐인가?"
이걸 가설 검정으로 확인해요. (10강에서!)
③ 예측
"올해 광고비를 50% 늘리면 매출이 얼마나 늘까?"
식이 있으면 새로운 \(X\)값에 대해 \(Y\)를 추정할 수 있어요.
실제 예시
이 강의에서 우리는 아파트 가격을 예시로 쓸 거예요.
가격 · 평수 · 층수 · 위치 · 방 개수 · 연식 등 여러 변수가 모여 있어요.
관심사: "가격은 어떤 변수들의 영향을 받을까?"
특히 단순화해서 "가격 vs 연식"부터 봐요.
회귀 모델식 — \(Y\)를 만드는 레시피
회귀의 기본 모양은 한 줄짜리 식이에요.
처음 보면 좀 복잡한데, 레시피라고 생각하면 쉬워요.
각 부품 뜯어보기
예: 아파트 가격. \(Y\)는 다른 변수들에 의존해서 결정돼요.
예: 평수, 층수, 방 개수, 연식 등. \(k\)개 있다고 적었어요.
\(\beta_0\) = 절편(intercept). \(X\)들이 다 0일 때 \(Y\)의 기본값.
\(\beta_1\) = \(X_1\)이 1 단위 늘면 \(Y\)가 평균 얼마 변하는지.
현실의 \(Y\)는 식만으로 딱 맞아떨어지지 않아요. 우리가 모르는 다른 요인들, 측정 노이즈 같은 게 다 \(e\) 안에 들어가요.
요리 레시피 비유
케이크 만들기 비유.
\(Y\) = 케이크 맛 점수.\(X_1\) = 밀가루 g, \(X_2\) = 설탕 g, \(X_3\) = 굽는 시간 분.
\(\beta\)들 = 각 재료가 맛 점수에 미치는 영향력 (밀가루 1g이 점수에 얼마 기여하나).
\(\beta_0\) = 재료가 다 0일 때의 기본 점수 (그냥 0이겠죠).
\(e\) = 오븐 컨디션, 그날 기분 같은 측정 안 되는 요인.
회귀의 큰 목표 세 가지
모델식만 쓰고 끝나는 게 아니에요. 이 식을 갖고 우리가 하고 싶은 일은:
- \(\beta\)들을 추정해요. 데이터로부터 어떤 숫자가 들어가야 가장 자연스러운지 찾아요.
- 중요한 변수와 안 중요한 변수를 구분해요. 어떤 \(X\)가 \(Y\)에 진짜 영향을 주는가.
- 각 \(X\)의 영향력을 수치화해요. "평수가 1평 늘면 가격이 평균 ◯만원 오른다"는 식으로.
단순선형회귀 — \(X\)가 딱 하나일 때
\(X\)가 여러 개면 머릿속으로 그리기 힘들어요. 그래서 우선 \(X\)가 하나일 때부터 시작해요. 이걸 단순선형회귀(Simple Linear Regression)라고 해요.
중학교 때 배운 직선의 방정식 \(y = ax + b\)랑 똑같죠? 그저 이름이 바뀌었을 뿐이에요.
| 중학수학 | 회귀 | 의미 |
|---|---|---|
| \(x, y\) | \(X, Y\) | 변수 두 개 |
| \(b\) | \(\beta_0\) | 절편(상수항) |
| \(a\) | \(\beta_1\) | 기울기(=한 단위당 변화) |
| (없음) | \(e\) | 오차 — 직선이 못 잡는 나머지 |
아파트 가격 vs 연식 — 한 장의 그림
아파트 200채 데이터로 산점도를 그렸어요. \(X\)축 = 연식, \(Y\)축 = 가격(천만원).
점들이 빈틈없이 직선 위에 놓이진 않아요. 하지만 전체적인 흐름은 "연식 ↑ → 가격 ↓"이라는 게 보이죠? 빨간 회귀선이 그 흐름을 한 줄로 정리한 거예요.
그래프로 한 눈에 볼 수 있다는 것! "이 관계가 정말 직선 같은가?"를 시각적으로 먼저 확인할 수 있어요.
잔차 — 직선이 못 잡은 부분
회귀선은 점들에 정확히 다 닿진 않아요. 각 점은 직선에서 살짝 떨어져 있죠. 그 거리를 잔차(residual)라고 해요.
예측값 vs 실제값
\(i\)번째 아파트의 연식이 \(X_i\)예요. 회귀선이 예측하는 가격은:
"\(\hat{Y}\)" 위에 모자(^) 표시는 "추정"이라는 뜻이에요. 실제로 관측한 가격은 \(Y_i\)라고 적어요. 둘은 다르죠.
\(e_i = Y_i - \hat{Y}_i\)
"이 점이 회귀선에서 위로(혹은 아래로) 얼마나 떨어졌나"의 거리예요. 양수면 점이 선 위, 음수면 선 아래.
그림으로 보는 잔차
잔차는 회귀선이 설명하지 못한 부분이에요. "이 아파트는 우리 식으로는 설명이 안 되는 5만원어치 비밀이 있다"는 식이죠.
좋은 회귀선의 기준 — 다음 장 예고
이제 자연스러운 질문이 떠올라요. "수많은 가능한 직선 중에 어느 게 가장 좋은 선이지?"
답: 잔차를 가장 작게 만드는 선이에요. 그 정확한 정의가 다음 장의 주인공.
좋은 선 — SSE를 최소화
점이 200개면 잔차도 200개. 어떤 점은 위로 5만원, 어떤 점은 아래로 3만원 떨어졌어요. 이걸 한 숫자로 모아서 "선이 얼마나 나쁜가"를 평가하고 싶어요.
그냥 더하면 안 되나요?
잔차들을 그냥 더하면 양수와 음수가 상쇄돼서 거의 0이 되어 버려요. (어떤 선이든 그래요.) 그래서 제곱한 후에 더해요. 부호가 사라지고 큰 잔차는 더 크게 패널티!
\(SSE = \sum (Y_i - \hat{Y}_i)^2 = \sum (Y_i - \beta_0 - \beta_1 X_i)^2\)
"\(i=1\)부터 \(n\)까지 다 더한다"는 뜻이에요. 잔차를 제곱해서 모두 합한 값.
회귀가 하는 일
SSE를 가장 작게 만드는 \(\beta_0, \beta_1\)을 찾는다.
그게 회귀선의 정의예요.
이걸 영어로는 OLS (Ordinary Least Squares · 최소제곱법)라고 불러요. "제곱 합을 최소로" 한다는 뜻이에요. 통계 소프트웨어(엑셀·파이썬·R)가 자동으로 이 계산을 해줘요.
"가장 안 흔들리는 평균선" 비유.
점들 사이로 자(직선)를 대고 이리저리 움직여보면, 어느 위치에서 점들과의 거리 제곱 합이 제일 작아지는 자리가 있어요. 그 자리가 회귀선이에요.
왜 제곱을 써요? 절댓값이면 안 되나요?
① 제곱은 큰 오차에 더 큰 패널티를 줘요. 이상치(outlier)에 민감해지지만, 대신 한쪽으로 크게 벗어난 점을 가까이 끌어와요.
② 절댓값보다 미분하기 쉬워요. 그래서 \(\beta_0, \beta_1\)의 최적값을 깔끔한 공식으로 풀 수 있어요.
③ 통계 이론과 잘 어울려요 (정규분포·표준편차·분산 모두 제곱 위에서 정의돼요).
"왜 가격이 다 다르지?" — 적합도의 직관
회귀선을 그렸어요. 근데 그 선이 정말로 데이터를 잘 설명하고 있는 걸까요? "잘 맞춘다(fit)"의 의미를 따져봐요.
핵심 질문
"왜 우리 데이터의 아파트 가격은 서로 다르지?"
가격이 다른 이유는 두 가지로 나눌 수 있어요.
① 연식이 다르니까 (\(X\)가 다름)
"연식이 1년 늘면 가격이 평균 ◯만원 변한다"는 우리 회귀선이 설명하는 부분.
설명변수의 차이가 만든 가격 차이.
② 다른 이유 (\(X\)로 설명 안 됨)
같은 연식인데도 가격이 다 다르잖아요? 위치, 층수, 인테리어… 회귀선이 잡지 못한 모든 차이.
오차(잔차)가 만든 가격 차이.
좋은 회귀의 모습
만약 가격 차이의 대부분이 ①(연식)으로 설명된다면 → 연식이 가격을 잘 설명한다는 뜻. 회귀선이 데이터에 잘 맞는다고 할 수 있어요.
반대로 가격 차이의 대부분이 ②(나머지)에서 온다면 → 연식만으로는 가격을 설명할 수 없어요. 다른 변수를 끌어와야 할 시점이에요.
① 가격 변동의 큰 부분이 회귀선으로 설명돼요.
② 잔차들이 비교적 작아요.
③ 점들이 회귀선 주위에 빽빽하게 모여 있어요.
이걸 어떻게 수치로 표현하지?
"변동의 얼마나 많은 부분이 회귀선으로 설명되는가?" — 이걸 숫자로 만들고 싶어요. 그러려면 변동(variability)을 분해해야 해요. 다음 장의 핵심 개념이에요.
분산 분해 — SST = SSR + SSE
변동을 세 가지로 나눠요. 각각의 뜻이 정확하니, 한 번에 짚어볼게요.
세 가지 제곱합
\(SST = \sum (Y_i - \bar{Y})^2\)
각 \(Y\)가 평균 \(\bar{Y}\)에서 떨어진 정도를 제곱해서 더한 값. \(Y\)의 총 변동이에요.
\(SSR = \sum (\hat{Y}_i - \bar{Y})^2\)
예측값 \(\hat{Y}\)이 평균 \(\bar{Y}\)에서 떨어진 정도. 즉 "회귀선이 만들어낸" 변동이에요.
\(SSE = \sum (Y_i - \hat{Y}_i)^2\)
5장에서 본 그 SSE랑 같아요. 잔차 제곱의 합.
핵심 등식
이게 정말 신기한 등식이에요. \(Y\)의 총 변동(SST)은 회귀선이 잡은 부분(SSR)과 잡지 못한 부분(SSE)의 합으로 깔끔하게 쪼개져요.
왜 의미가 있어요?
이 분해 덕분에 우리는 이렇게 말할 수 있어요:
SSR 비율이 크다 → 회귀선이 잘 설명함 → 변수 \(X\)가 \(Y\)를 잘 잡고 있음.
SSE 비율이 크다 → 회귀선이 설명 못 함 → \(X\) 말고 다른 변수가 필요함.
그래서 자연스럽게 다음 질문이 나와요. "SSR 비율을 한 숫자로 어떻게 표현?" 답이 다음 장의 \(R^2\)예요.
\(R^2\) — 회귀의 시험 점수
이제 회귀의 성적표 같은 숫자가 등장해요. \(R^2\) (R-Square, 알스퀘어).
\(R^2 = SSR / SST\) = (설명된 변동) / (전체 변동)
0과 1 사이의 숫자
\(R^2\)는 항상 0과 1 사이예요. (비율이니까.)
| \(R^2\) | 해석 | 회귀의 상태 |
|---|---|---|
| 1.0 | 100% 설명 | 완벽 (현실에선 거의 없음) |
| 0.9 | 90% 설명 | 아주 좋음 |
| 0.5 | 50% 설명 | 절반은 잡음 |
| 0.2 | 20% 설명 | 설명력 부족 |
| 0.0 | 전혀 설명 못 함 | \(X\)가 \(Y\)와 무관 |
\(R^2\)의 직관
"퍼즐 맞추기" 비유.
\(Y\)라는 그림 퍼즐 1000조각이 있어요. 우리 회귀선은 그 중 몇 조각을 맞췄을까요?
\(R^2 = 0.7\)이면 700조각 맞춤. 300조각은 안 맞춰진 상태.
점수가 높을수록 그림이 더 명확하게 드러나요.
\(R = \sqrt{R^2}\) (Multiple R)
\(R^2\)의 제곱근을 그냥 \(R\)이라고 불러요. 회귀 출력에는 "Multiple R"로 나와요.
\(R\)은 실제값 \(Y\)와 예측값 \(\hat{Y}\) 사이의 상관계수예요.
"우리 회귀선이 데이터와 얼마나 같은 방향으로 흐르는가"의 정도. 1에 가까울수록 좋아요.
주의 — \(R^2\) 함정
① 변수만 늘리면 \(R^2\)는 무조건 올라가요. 쓸데없는 변수를 추가해도! (그래서 10강에서 Adjusted \(R^2\) 등장.)
② 인과관계의 증거가 아니에요. \(R^2\)가 높아도 "\(X\)가 \(Y\)의 원인이다"라는 뜻이 아니에요. 둘 다 같은 제3 변수의 영향일 수도.
③ \(R^2\)가 낮다고 모델이 무용지물도 아니에요. 분야에 따라 0.2도 의미 있을 수 있어요.
회귀 출력 읽기 — 엑셀의 표를 해석해보자
엑셀이나 R, 파이썬으로 회귀를 돌리면 표 한 장이 튀어나와요. 처음 보면 숫자 폭격이지만, 구역별로 차근차근 보면 쉬워요.
① 회귀 통계량 (Regression Statistics) 박스
| 항목 | 값 | 의미 |
|---|---|---|
| Multiple R | 0.94 | 실제값과 예측값의 상관계수 |
| R Square | 0.89 | 결정계수 — 89%의 변동 설명 |
| Adjusted R Square | 0.88 | 변수 개수 보정한 \(R^2\) (10강) |
| Standard Error | 5.06 | 잔차의 표준편차 추정치 |
| Observations | 36 | 표본 개수 \(n\) |
먼저 보는 곳: R Square. 0.89면 "\(Y\)의 변동의 89%를 우리 회귀선이 설명함"이라는 뜻.
② ANOVA 박스 (분산 분석)
| df | SS | MS | F | Significance F | |
|---|---|---|---|---|---|
| Regression | 2 | 6926.62 | 3463.31 | 135.28 | 0.00 |
| Residual | 33 | 844.82 | 25.60 | ||
| Total | 35 | 7771.44 |
이 표에 우리가 7장에서 본 SSR · SSE · SST가 그대로 있어요.
- Regression의 SS = SSR = 6926.62
- Residual의 SS = SSE = 844.82
- Total의 SS = SST = 7771.44
- 확인: 6926.62 + 844.82 = 7771.44 ✓
- \(R^2 = 6926.62 / 7771.44 \approx 0.89\) ✓
나머지(\(df\), \(MS\), \(F\))는 10강에서 다뤄요. 자유도와 표준오차 같은 개념이에요.
③ 계수 표 — 핵심 결과
| Coefficients | Standard Error | t Stat | P-value | Lower 95% | Upper 95% | |
|---|---|---|---|---|---|---|
| Intercept | −0.57 | 3.09 | −0.18 | 0.86 | −6.86 | 5.73 |
| Rooms | −1.62 | 2.06 | −0.79 | 0.44 | −5.82 | 2.57 |
| Volume | 0.06 | 0.01 | 6.64 | 0.00 | 0.04 | 0.07 |
이 표에서 Coefficients 열이 바로 \(\beta\)들이에요. 그러면 회귀식이 이렇게 완성돼요:
각 열의 의미 (간단히)
| 열 | 의미 |
|---|---|
| Coefficients | 추정된 \(\beta\) 값 (회귀식의 계수) |
| Standard Error | \(\beta\) 추정값의 흔들림 크기 |
| t Stat | "이 \(\beta\)가 0인지" 검정의 통계량 |
| P-value | "이 \(\beta = 0\)"이라는 \(H_0\)의 \(p\)-값 (8강에서 본 그것!) |
| Lower / Upper 95% | \(\beta\)의 95% 신뢰구간 (7강) |
이 표의 t Stat / P-value / 신뢰구간이 어떻게 만들어지는지, 그리고 그걸 보고 "Rooms는 의미 있나? Volume은 의미 있나?"를 어떻게 판단하는지 — 모두 10강에서!
맺는 글 · 점들 사이에 놓은 한 줄
오늘 우리는 점들 사이에 한 줄을 놓는 법을 배웠어요. 그 줄은 잔차 제곱의 합(SSE)을 최소로 만드는 선이었어요.
그리고 그 선이 데이터를 얼마나 잘 설명하는지 측정하는 점수, \(R^2\)도 손에 넣었죠. \(SSR / SST\).
하지만 아직 답하지 못한 질문이 있어요. "이 회귀선이 진짜 의미 있는가?"
\(\beta\)들이 0이 아니라는 걸 어떻게 통계적으로 증명할까요? 그게 10강 주제예요.
오늘의 장면 요약
- 회귀의 세 목표: 관계 묘사 · 유의성 · 예측
- 모델식: \(Y = \beta_0 + \beta_1 X_1 + \cdots + \beta_k X_k + e\)
- 단순선형회귀는 산점도 위의 직선
- 잔차 \(e_i = Y_i - \hat{Y}_i\) — 선이 못 잡은 거리
- 좋은 선 = SSE를 최소화하는 선 (OLS)
- SST = SSR + SSE — 변동의 분해
- \(R^2 = SSR/SST\) — 회귀의 시험 점수
- Multiple \(R = \sqrt{R^2}\)
- 엑셀 출력 = Statistics · ANOVA · Coefficients 3구역
10강 예고
계수의 가설 검정
"이 변수 \(\beta\)가 정말 0이 아닌가?" — 8강의 H.T.를 회귀에 적용해요.
변수 선택
Adjusted \(R^2\)와 \(p\)-값을 보고 "필요 없는 변수"를 골라내요.
예측
새 데이터의 \(Y\)를 추정하고 신뢰구간으로 감싸요.
자유도와 표준오차
"왜 \(n - k - 1\)로 나누지?" 마지막 퍼즐.
마지막 마음가짐
회귀는 점들의 노이즈 속에서 경향을 끄집어내는 일이에요.
완벽한 선은 없어요. 다만 "가장 덜 틀린" 선이 있을 뿐이죠.
그게 통계의 정직함이고, 동시에 매력이에요.
— 9강, 끝 —