logo

회귀분석

회귀분석의 개념

  • 회귀분석(Regression Analysis): 독립변수(설명변수)와 종속변수(반응변수) 간의 관계를 수학적 모델로 추정하는 통계 기법
  • 독립변수: 다른 변수에 영향을 주는 변수()
  • 종속변수: 영향을 받는 결과 변수()
  • "회귀(Regression)"는 프랜시스 골턴이 부모와 자식의 키 관계를 연구하며 평균으로 회귀하는 현상을 관찰한 데서 유래

회귀분석의 주요 목적

  • 예측(Prediction)
    • 새로운 독립변수 값이 주어졌을 때 종속변수의 값을 수학적 모델로 추정
    • 예: 선박의 길이(Length)를 알 때 무게(Weight)를 예측
  • 설명(Explanation)
    • 독립변수가 종속변수에 미치는 영향의 크기와 방향을 파악
    • 예: 선박의 길이가 1 단위 증가할 때 무게가 평균적으로 얼마나 변하는지 설명

선형 모형

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

최소제곱법

  • 최소제곱법(Ordinary Least Squares, OLS): 실제 데이터 점과 회귀선 사이의 수직 거리인 잔차(Residual)를 최소화하는 선을 찾는 방법
  • 잔차 제곱합이 최소가 되도록 을 산출
  • 점들과 가장 가까운 최적의 직선 하나를 객관적인 기준에 따라 도출
  • 통계 소프트웨어가 행렬 연산을 활용해 내부적으로 자동 계산하고 결과를 제공

y절편의 의미

  • y절편(Intercept)의 수학적 의미: 독립변수 가 0일 때 종속변수 의 기댓값()
  • 데이터 범위를 크게 벗어나는 구간에서는 해석 범위에 따라 무의미할 수도 있음
  • 예: 선박 길이가 0일 때 무게의 추정치
    • 물리적으로는 불가능하지만 수학적 완성도를 위해 존재
  • 기준점을 만들어 모델의 전반적인 설명력을 유지하는 중심축 역할

회귀계수의 해석

  • 회귀계수(Regression Coefficient): 회귀선의 기울기()로, 독립변수 의 영향력을 대표
  • 해석: 가 1 단위 증가할 때 종속변수 에서 일어나는 평균적인 변화량
  • : 양의 선형 관계, 증가 시 증가
  • : 음의 선형 관계, 증가 시 감소
  • : 거의 없음, 무상관 또는 비선형

회귀계수의 유의성 검정

  • 추정된 회귀계수가 통계적으로 유의미한지 알아보기 위한 가설 검정
  • 귀무가설(): 회귀계수 은 0이다
    • 독립변수는 종속변수에 영향을 주지 않음
  • 대립가설(): 회귀계수 은 0이 아니다
    • 이미 어느 정도 예측력을 가짐
  • 분석 결과의 p-value가 0.05보다 작으면 귀무가설을 기각하고 해당 변수의 효과가 통계적으로 유의미하다고 평가

회귀계수 가설 검정 순서도

결정계수

  • 결정계수(, R-squared): 추정된 선형 회귀선이 표본 데이터의 변동성을 얼마나 잘 설명하는지 보여주는 비율
  • 0에서 1 사이의 값을 가지며, 1에 가까울수록 선형 회귀 모델의 설명력이 높음
  • 데이터 포인트가 회귀선을 따라 빈틈없이 모여 있을수록 값이 커짐
  • 단순 선형 회귀의 경우 피어슨 상관계수()를 제곱한 값과 동일
  • 읽을 때는 "모형이 종속변수의 분산의 ~%를 설명한다"라고 함
    • 예: 이면 "분산의 30%를 설명한다"
  • 분산은 불확실성을 나타냄
  • 분산에 비해 잔차분산이 줄어들었다는 것은 불확실성이 줄어들어 설명이 되었다는 뜻

단순 선형 회귀 모형

  • 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()
  • 추정 결과표의 중간 단락에서 length 행의 coef(회귀계수)와 P>|t|(p-value)를 확인하여 영향력 해석

최적합 회귀선 시각화

  • 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)
Previous
포트폴리오