[통계적 추론] 8. 회귀 분석

2026. 7. 4. 20:30·BI&Programming-Tools/통계

회귀 분석은 하나 이상의 독립변수(예측변수)로 종속변수(결과변수)를 예측하거나 두 변수 간의 관계를 정량화하는 통계 기법입니다.

상관 분석이 관계의 강도와 방향을 측정한다면, 회귀 분석은 그 관계를 수식으로 표현하고 예측에 활용합니다.


단순 선형 회귀 (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
'BI&Programming-Tools/통계' 카테고리의 다른 글
  • [통계적 추론] 7. ANOVA
  • [통계적 추론] 6. 상관 분석
  • [통계적 추론] 5. 모수 검정 (t-검정)
  • [통계적 추론] 4. 비모수 검정
데이터로 읽는 생명
데이터로 읽는 생명
is-note 님의 블로그 입니다.
  • 데이터로 읽는 생명
    In Silico Note
    데이터로 읽는 생명
  • 전체
    오늘
    어제
    • 분류 전체보기 (190)
      • Bio-Knowledge (16)
        • 분자생물학 & 유전학 기초 (0)
        • 전사체학 & 유전자 발현 (0)
        • 구조생물학 & 단백질 (0)
        • 싱글셀 & 다중오믹스 (0)
        • 임상유전학 & 질환 데이터 (0)
      • Programming (4)
        • API (4)
      • BI&Programming-Tools (111)
        • File Formats (14)
        • Linux & Bash Script (38)
        • Python (35)
        • R (11)
        • 통계 (8)
        • Pipeline Manager (0)
        • Etc (5)
      • Bio Data Analysis (28)
        • 서열분석개론 (6)
        • WGS(Whole Genome Seq) (11)
        • WES(Whole Exome Seq) (2)
        • RNA-Seq (4)
        • Metagenome (2)
        • Non-human Resequencing (1)
        • 임상유전체 분석 (1)
        • Multi-Omics (1)
      • Bio-Trends & Tech (1)
      • 코딩테스트 연습 (30)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    리눅스
    fasta
    리눅스기초
    GATK
    파이썬기초
    파일포맷
    R기초
    데이터분석
    bioinformatics
    통계
    분자생물학
    파이썬
    R
    유전체분석
    ngs
    코딩테스트
    FASTQ
    생물정보학
    파이썬연습
    wgs
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
데이터로 읽는 생명
[통계적 추론] 8. 회귀 분석
상단으로

티스토리툴바