logo

회귀분석

회귀분석의 개념

  • 회귀분석(Regression Analysis): 독립변수(설명변수)와 종속변수(반응변수) 간의 관계를 수학적 모델로 추정하는 통계 기법
  • 독립변수: 종속변수를 설명하거나 예측하는 데 사용하는 변수(X)
  • 종속변수: 설명하거나 예측할 대상(Y)
  • "회귀(Regression)"는 프랜시스 골턴이 부모와 자식의 키 관계를 연구하며 평균으로 회귀하는 현상을 관찰한 데서 유래

회귀분석의 주요 목적

  • 예측(Prediction)
    • 새로운 독립변수 값이 주어졌을 때 종속변수의 값을 수학적 모델로 추정
    • 예: 선박의 길이(length)로 무게(weight) 예측
  • 설명(Explanation)
    • 독립변수와 종속변수의 선형 관계를 크기와 방향으로 설명
    • 예: 선박 길이가 1단위 증가할 때 예측 무게의 평균 변화량 설명

선형 모형

  • 종속변수 Y와 독립변수 X의 관계를 직선 방정식으로 표현
Y=β0+β1X+ϵ
  • Y: 종속변수, 예: 무게
  • X: 독립변수, 예: 길이
  • β0: y절편(Intercept)
  • β1: 기울기, 회귀계수(Regression Coefficient)
  • ϵ: 오차항(Error term)

최소제곱법

  • 잔차(Residual): 실제값과 예측값의 차이
  • 최소제곱법(Ordinary Least Squares, OLS): 잔차 제곱합이 최소가 되도록 β0β1을 추정

y절편의 의미

  • y절편(Intercept): 독립변수 X가 0일 때 종속변수 Y의 기댓값(β0)
  • X=0이 데이터 범위를 벗어나면 해석이 무의미할 수 있음
  • 예: 선박 길이가 0일 때 무게의 추정치는 물리적 의미가 없음

회귀계수의 해석

  • 회귀계수(Regression Coefficient): 회귀선의 기울기(β1)
  • 해석: X가 1단위 증가할 때 예측되는 Y의 평균 변화량
  • β1>0: 양의 선형 관계, X 증가 시 Y 증가
  • β1<0: 음의 선형 관계, X 증가 시 Y 감소
  • β10: 선형 관계가 거의 없음

회귀계수의 유의성 검정

  • 추정된 회귀계수가 통계적으로 유의미한지 알아보기 위한 가설 검정
  • 귀무가설(H0): 회귀계수 β1은 0이다
    • 두 변수 사이에 선형 관계가 없음
  • 대립가설(H1): 회귀계수 β1은 0이 아니다
    • 두 변수 사이에 선형 관계가 있음
  • p-value가 0.05보다 작으면 귀무가설 기각
  • 유의한 회귀계수만으로 인과관계가 성립하지는 않음

회귀계수 가설 검정 순서도

Mermaid 다이어그램 원문

flowchart TD
    A["가설 설정<br/>귀무가설: β = 0<br/>대립가설: β ≠ 0"] --> B{"p-value < 0.05"}
    B -- "예" --> C["β ≠ 0이라는 통계적 근거 있음"]
    B -- "아니오" --> D["β ≠ 0이라고 판단할 근거 부족"]

대화형 다이어그램을 불러오기 전에는 원문으로 표시됩니다.

결정계수

  • 결정계수(R2, R-squared): 모형이 종속변수의 변동을 설명하는 비율
  • 절편이 있는 OLS에서는 0에서 1 사이이며, 1에 가까울수록 설명력이 높음
  • 단순 선형 회귀에서는 피어슨 상관계수(r)의 제곱과 같음
  • "R2×100%만큼 종속변수의 분산을 설명"으로 해석
    • 예: R2=0.3이면 "분산의 30%를 설명한다"
R2=1TSSRSS
  • RSS: 잔차 제곱합
  • TSS: 종속변수와 평균의 차이를 제곱한 합

단순 선형 회귀 모형

  • statsmodels: 회귀계수, p-value, 결정계수 등 통계 결과표 제공
  • length를 설명변수로, weight를 반응변수로 활용하여 모델링
from statsmodels.formula.api import ols
import pandas as pd

df_ship = pd.read_excel("ship.xlsx")

# "종속변수 ~ 독립변수" 형태의 수식을 적용하고 적합(fit) 수행
model = ols("weight ~ length", data=df_ship).fit()

model.summary()
  • 추정식: weight11120+150.05×length
  • length의 회귀계수: 150.0497
    • 길이가 1단위 증가할 때 예측 무게가 평균 약 150 증가
  • p-value: 2.11×1012
    • β1=0이라는 귀무가설 기각
  • R2: 0.397
    • 길이가 무게 분산의 39.7% 설명

상관계수와 결정계수

단순 선형 회귀에서는 R2=r2.

df_ship[["length", "weight"]].corr()

피어슨 상관계수는 0.630324.

0.630324 ** 2

결과는 0.3973으로 회귀분석의 R2와 같음.

반대로 R2의 제곱근으로 상관계수의 크기를 확인 가능.

import numpy as np

np.sqrt(0.397)

결과는 0.6301.

최적합 회귀선 시각화

  • seabornregplot은 산점도를 그리고 그 위에 추정된 회귀선과 신뢰구간 대역을 겹쳐서 표시
import seaborn as sns

# regplot으로 직관적인 선형 관계 관찰 및 시각화
sns.regplot(data=df_ship, x="length", y="weight")

simple-regression-slide182-image01

회귀분석을 이용한 예측

  • length 변수를 가진 새로운 데이터 만들기
df_new = pd.read_excel("new_ship.xlsx")
  • 적합된 모형에 새 데이터를 입력하여 예측
model.predict(df_new)

예측값은 26122.02, 41126.99, 56131.96.

퀴즈

문제 1 / 7맞음: 0힌트: 0틀림: 0채점중: 0남음: 7

회귀분석의 기본 목적을 가장 잘 설명한 것은?

  • 두 독립집단의 평균 차이만 검정한다
  • 두 범주형 변수의 빈도 관계만 검정한다
  • 독립변수와 종속변수의 관계를 모형으로 추정해 예측하거나 설명한다
  • 두 연속형 변수의 선형 관계를 하나의 상관계수로만 요약한다

퀴즈를 풀려면 대화형 기능을 불러와야 합니다.