회귀 분석은 하나 이상의 독립변수(예측변수)로 종속변수(결과변수)를 예측하거나 두 변수 간의 관계를 정량화하는 통계 기법입니다.
상관 분석이 관계의 강도와 방향을 측정한다면, 회귀 분석은 그 관계를 수식으로 표현하고 예측에 활용합니다.
단순 선형 회귀 (Simple Linear Regression)
언제 사용할까
하나의 연속형 독립변수로 하나의 연속형 종속변수를 예측할 때 사용합니다.
두 변수 간의 선형 관계를 직선으로 표현합니다.
모델
y = β₀ + β₁x + ε
- y: 종속변수 (반응변수)
- x: 독립변수 (예측변수)
- β₀: 절편 (x = 0일 때 y의 예측값)
- β₁: 기울기 (x가 1 단위 증가할 때 y의 변화량)
- ε: 오차항 (모델이 설명하지 못하는 변동)
β₀와 β₁은 최소제곱법(Ordinary Least Squares, OLS)으로 추정합니다.
실제 값과 예측값의 차이(잔차)의 제곱합을 최소화하는 방향으로 직선을 구합니다.
모델 평가
R² (결정계수)
독립변수가 종속변수의 변동을 얼마나 설명하는지를 나타냅니다. 0에서 1 사이의 값을 가지며, 1에 가까울수록 모델이 데이터를 잘 설명합니다. R²는 독립변수를 추가할수록 무조건 증가하는 경향이 있어 단순 회귀에서의 평가 지표로 사용합니다.
기울기의 유의성
β₁에 대한 t-검정으로 독립변수가 종속변수에 유의한 영향을 주는지 확인합니다. p < 0.05이면 독립변수가 유의한 예측변수입니다. 기울기가 유의하면 Pearson 상관계수도 유의합니다. 단순 회귀에서 두 결과는 동일한 정보를 담고 있습니다.
R 코드
model <- lm(y ~ x, data = df)
summary(model)
summary()에서 계수 추정값, t-value, p-value, R²를 확인합니다.
다중 선형 회귀 (Multiple Linear Regression)
언제 사용할까
두 개 이상의 독립변수로 하나의 연속형 종속변수를 예측할 때 사용합니다.
여러 변수의 영향을 동시에 고려해서 다른 변수의 영향을 통제한 상태에서 각 변수의 독립적인 효과를 추정할 수 있습니다.
모델
y = β₀ + β₁x₁ + β₂x₂ + ... + βₖxₖ + ε
각 β는 다른 독립변수를 고정한 상태에서 해당 독립변수가 1 단위 증가할 때 종속변수의 변화량입니다.
이를 편회귀계수(partial regression coefficient)라고 합니다.
모델 평가
Adjusted R² (수정된 결정계수)
다중 회귀에서는 독립변수를 추가할수록 R²가 기계적으로 증가합니다. Adjusted R²는 독립변수 수를 고려해서 보정하기 때문에 다중 회귀 모델 평가에 더 적합합니다. 의미 없는 변수를 추가하면 Adjusted R²가 감소합니다.
F-통계량
모든 독립변수를 포함한 모델이 아무 변수도 포함하지 않은 모델(절편만 있는 모델)보다 유의하게 나은지를 검정합니다.
R 코드
model <- lm(y ~ x1 + x2 + x3, data = df)
summary(model)
# 범주형 변수는 자동으로 더미 변수로 처리됨
model <- lm(y ~ x1 + factor(group), data = df)
회귀 모델 가정 확인
선형 회귀는 다음 가정이 충족될 때 OLS 추정량이 최적의 성질을 가집니다.
가정이 위반되면 계수 추정이나 검정 결과가 신뢰할 수 없게 됩니다.
선형성 (Linearity)
독립변수와 종속변수 간의 관계가 선형이어야 합니다.
잔차(residual) 대 예측값(fitted value) 플롯에서 패턴 없이 랜덤하게 분포해야 합니다.
뚜렷한 곡선 패턴이 보이면 선형성 가정이 위반된 것입니다.
잔차의 정규성
잔차가 정규분포를 따라야 합니다.
Q-Q plot으로 확인하며, 잔차 포인트들이 대각선에 가까울수록 정규성이 충족됩니다.
Shapiro-Wilk test로 검정할 수도 있습니다.
등분산성 (Homoscedasticity)
잔차의 분산이 모든 예측값 수준에서 일정해야 합니다.
잔차 대 예측값 플롯에서 잔차의 퍼짐이 일정하면 충족됩니다.
예측값이 커질수록 잔차도 커지는 깔때기 모양(이분산성, heteroscedasticity)이 나타나면 가정이 위반된 것입니다.
독립성
잔차 간에 상관관계가 없어야 합니다.
시계열 데이터에서 특히 주의해야 합니다.
Durbin-Watson 검정으로 잔차의 자기상관을 확인합니다.
R 코드 (잔차 분석)
model <- lm(y ~ x1 + x2, data = df)
# 기본 진단 플롯 (4개 그래프)
par(mfrow = c(2, 2))
plot(model)
plot(model)은 4개의 진단 플롯을 출력합니다.
- Residuals vs Fitted: 선형성, 등분산성 확인
- Q-Q Residuals: 잔차 정규성 확인
- Scale-Location: 등분산성 확인
- Residuals vs Leverage: 영향점(influential point) 확인
다중공선성 (Multicollinearity)
다중 회귀에서 독립변수들 간에 강한 상관관계가 있을 때 발생합니다.
다중공선성이 심하면 개별 계수의 추정이 불안정해지고 표준오차가 커져서, 실제로 유의한 변수도 유의하지 않게 나올 수 있습니다.
모델 전체의 R²는 높아도 개별 변수의 p-value가 모두 크게 나오는 경우 다중공선성을 의심합니다.
VIF (Variance Inflation Factor)로 다중공선성을 진단합니다.
VIF는 해당 변수가 다른 변수들로 얼마나 잘 설명되는지를 나타냅니다.
- VIF = 1: 다중공선성 없음
- VIF 1~5: 보통 허용 가능
- VIF > 5 (또는 10): 다중공선성 문제 있음
library(car)
vif(model)
다중공선성이 심한 경우 상관관계가 높은 변수 중 하나를 제거하거나, PCA로 차원을 축소하거나, Ridge/Lasso 회귀를 사용하는 방법을 고려합니다.
로지스틱 회귀 (Logistic Regression)
언제 사용할까
종속변수가 이진형(0 또는 1, 예/아니오, 발병/미발병)일 때 사용합니다.
선형 회귀로 이진 종속변수를 예측하면 확률 범위(0~1)를 벗어나는 값이 나올 수 있어 적합하지 않습니다.
로지스틱 회귀는 로짓 변환을 통해 예측값이 항상 0~1 사이에 오도록 만듭니다.
모델
선형 회귀처럼 직선을 적합하는 대신, 로그 오즈(log odds, logit)를 선형으로 모델링합니다.
log(p / (1-p)) = β₀ + β₁x₁ + β₂x₂ + ...
- p: 사건이 발생할 확률
- p / (1-p): 오즈(odds)
- log(p / (1-p)): 로그 오즈 (로짓)
계수 β를 지수 변환(e^β)하면 오즈비(Odds Ratio, OR)가 됩니다.
오즈비는 해당 독립변수가 1 단위 증가할 때 사건이 발생할 오즈가 몇 배 변하는지를 나타냅니다.
- OR > 1: 독립변수 증가 시 사건 발생 오즈 증가
- OR = 1: 독립변수와 사건 발생 간 관련 없음
- OR < 1: 독립변수 증가 시 사건 발생 오즈 감소
모델 평가
선형 회귀의 R²에 대응하는 값으로 McFadden's pseudo-R² 등을 사용하지만, 선형 회귀의 R²와 직접 비교하거나 같은 방식으로 해석하면 안 됩니다.
분류 성능은 혼동 행렬(confusion matrix), AUC-ROC 곡선으로 평가합니다.
AUC(Area Under the Curve)가 0.5에 가까우면 랜덤 예측 수준, 1에 가까울수록 예측 성능이 좋습니다.
R 코드
model <- glm(y ~ x1 + x2, data = df, family = binomial)
summary(model)
# 오즈비 계산
exp(coef(model))
# 신뢰구간 포함
exp(cbind(OR = coef(model), confint(model)))
glm()에서 family = binomial을 지정하면 로지스틱 회귀가 실행됩니다.
summary()의 계수는 로그 오즈 단위이므로, exp()로 변환해야 오즈비를 얻을 수 있습니다.
선형 회귀 vs 로지스틱 회귀 비교
| 항목 | 선형 회귀 | 로지스틱 회귀 |
| 종속변수 유형 | 연속형 | 이진형 (범주형) |
| 출력값 | 연속적인 예측값 | 사건 발생 확률 (0~1) |
| 계수 해석 | 1 단위 증가 시 y 변화량 | 1 단위 증가 시 오즈비 |
| 모델 적합 방법 | 최소제곱법 (OLS) | 최대우도법 (MLE) |
| 모델 평가 | R², Adjusted R² | AUC-ROC, pseudo-R² |
| R 함수 | lm() | glm(..., family = binomial) |
'BI&Programming-Tools > 통계' 카테고리의 다른 글
| [통계적 추론] 7. ANOVA (0) | 2026.07.04 |
|---|---|
| [통계적 추론] 6. 상관 분석 (0) | 2026.07.04 |
| [통계적 추론] 5. 모수 검정 (t-검정) (0) | 2026.07.04 |
| [통계적 추론] 4. 비모수 검정 (0) | 2026.07.02 |
| [통계적 추론] 3. 통계 분석 기법 선택 (0) | 2026.07.02 |
