회귀분석의 개념
- 회귀분석(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)
최소제곱법
- 최소제곱법(Ordinary Least Squares, OLS): 실제 데이터 점과 회귀선 사이의 수직 거리인 잔차(Residual)를 최소화하는 선을 찾는 방법
- 잔차 제곱합이 최소가 되도록 β0와 β1을 산출
- 점들과 가장 가까운 최적의 직선 하나를 객관적인 기준에 따라 도출
- 통계 소프트웨어가 행렬 연산을 활용해 내부적으로 자동 계산하고 결과를 제공
y절편의 의미
- y절편(Intercept)의 수학적 의미: 독립변수 X가 0일 때 종속변수 Y의 기댓값(β0)
- 데이터 범위를 크게 벗어나는 구간에서는 해석 범위에 따라 무의미할 수도 있음
- 예: 선박 길이가 0일 때 무게의 추정치
- 물리적으로는 불가능하지만 수학적 완성도를 위해 존재
- 기준점을 만들어 모델의 전반적인 설명력을 유지하는 중심축 역할
회귀계수의 해석
- 회귀계수(Regression Coefficient): 회귀선의 기울기(β1)로, 독립변수 X의 영향력을 대표
- 해석: X가 1 단위 증가할 때 종속변수 Y에서 일어나는 평균적인 변화량
- β1>0: 양의 선형 관계, X 증가 시 Y 증가
- β1<0: 음의 선형 관계, X 증가 시 Y 감소
- β1≈0: 거의 없음, 무상관 또는 비선형
회귀계수의 유의성 검정
- 추정된 회귀계수가 통계적으로 유의미한지 알아보기 위한 가설 검정
- 귀무가설(H0): 회귀계수 β1은 0이다
- 대립가설(H1): 회귀계수 β1은 0이 아니다
- 분석 결과의 p-value가 0.05보다 작으면 귀무가설을 기각하고 해당 변수의 효과가 통계적으로 유의미하다고 평가
회귀계수 가설 검정 순서도
결정계수
- 결정계수(R2, R-squared): 추정된 선형 회귀선이 표본 데이터의 변동성을 얼마나 잘 설명하는지 보여주는 비율
- 0에서 1 사이의 값을 가지며, 1에 가까울수록 선형 회귀 모델의 설명력이 높음
- 데이터 포인트가 회귀선을 따라 빈틈없이 모여 있을수록 R2 값이 커짐
- 단순 선형 회귀의 경우 피어슨 상관계수(r)를 제곱한 값과 동일
- 읽을 때는 "모형이 종속변수의 분산의 ~%를 설명한다"라고 함
- 예: R2=0.3이면 "분산의 30%를 설명한다"
- 분산은 불확실성을 나타냄
- 분산에 비해 잔차분산이 줄어들었다는 것은 불확실성이 줄어들어 설명이 되었다는 뜻
R2=1−분산잔차분산
단순 선형 회귀 모형
statsmodels: 회귀계수, p-value, 결정계수 등 통계 결과표 제공
length를 설명변수로, weight를 반응변수로 활용하여 모델링
from statsmodels.formula.api import ols
import pandas as pd
df_ship = pd.read_excel("ship.xlsx")
model = ols("weight ~ length", data=df_ship).fit()
model.summary()
- 추정 결과표의 중간 단락에서
length 행의 coef(회귀계수)와 P>|t|(p-value)를 확인하여 영향력 해석
최적합 회귀선 시각화
seaborn의 regplot은 산점도를 그리고 그 위에 추정된 회귀선과 신뢰구간 대역을 겹쳐서 표시
import seaborn as sns
sns.regplot(data=df_ship, x="length", y="weight")

회귀분석을 이용한 예측
length 변수를 가진 새로운 데이터 만들기
df_new = pd.read_excel("new_ship.xlsx")