회귀분석 — 코드 실습

← BitStat2 Live 홈

회귀분석은 독립 변수 \(x\)와 종속 변수 \(y\)의 관계를 직선 \(y = \beta_0 + \beta_1 x + \epsilon\)으로 모델링합니다. 아래 코드를 직접 고쳐 실행하면서 회귀선·회귀계수·결정계수 \(R^2\)를 몸으로 익혀 봅시다.

1. 산점도와 회귀선

mtcars 데이터로 차량 무게(wt)와 연비(mpg)의 관계를 그립니다. 변수와 옵션을 바꿔 회귀선이 어떻게 달라지는지 확인하세요.

2. lm()으로 적합하고 해석하기

lm()은 최소제곱법으로 \(\hat\beta_0\)(절편)과 \(\hat\beta_1\)(기울기)을 추정합니다. 기울기 \(\hat\beta_1\)은 “\(x\)가 1 단위 늘 때 \(y\)가 평균적으로 얼마나 변하는가”입니다.

오차의 크기가 적합도에 미치는 영향도 시뮬레이션으로 확인할 수 있습니다. 참값이 \(\beta_0 = 2,\ \beta_1 = 0.7\)인 데이터를 만들어 추정치와 비교해 보세요.

3. 연습 — 기울기와 결정계수 직접 계산

최소제곱 기울기는 공식 \(\hat\beta_1 = \dfrac{\mathrm{Cov}(x, y)}{\mathrm{Var}(x)}\)로 구할 수 있습니다. faithful 데이터에서 대기 시간(waiting)으로 분출 시간(eruptions)을 설명하는 기울기를 계산하세요.

공분산을 분산으로 나눕니다: cov(x, y) / var(x). coef(lm(y ~ x))[2]로 구해도 같은 값입니다.

beta1 <- cov(x, y) / var(x)
beta1

단순 선형 회귀에서 결정계수는 상관계수의 제곱, 즉 \(R^2 = r^2\)입니다. mtcars에서 wtmpg\(R^2\)를 상관계수로부터 계산하세요.

상관계수의 제곱입니다: cor(x, y)^2. summary(lm(y ~ x))$r.squared와 같은 값입니다.

r2 <- cor(x, y)^2
r2