데이터 분석 - 회귀분석
2024. 6. 17. 22:42ㆍ카테고리 없음
01.회귀분석이란

정의 | 독립변수(x)로 종속변수(y)를 예측하는 분석기법 독립변수 : 원인이되는 변수 = 설명변수 종속변수 : 결과가되는 변수 = 반응변수 |
프로세스 | 1. 독립변수, 종속변수 선정 후 가설 설정 2. 데이터 경향성 확인 독립변수와 종속변수 간 산점도 분석 및 상관관계 분석을 통해 데이터 분포를 확인 3. 정합성 검증 & 결과해석 회귀모델(회귀식)이 얼마나 설명력을 갖는지 회귀모델(회귀식)이 통계적으로 유의한지 독립변수와 종속변수 간 선형관계가 있는지 |
02. 회귀분석의 특징, 종류
특징
장점 | 요약 |
친밀성 | 예측문제 해결에서 가장 많이 사용되고 있는 방법으로 분석 및 해석 방법이 다수 존재 |
유용성 | 결과에 대한 근거, 이유, 활용방안 등의 정보를 얻는 데 유용 |
유연성 | 종속변수를 설명하기 위한 다양한 독립변수를 선택하고 실험할 수 있음 |
단점 | 요약 |
복잡성 | 기본 가정이 어긋나면 회귀분석을 사용할 수 없음 |
한계성 | 비선형성 확인을 위한 적절한 방식이 존재하지 않음 |
종류
선형회귀분석
구분 | 내용 |
독립변수 | 연속형 |
종속변수 | 연속형 |
분석 목적 | 예측 |
분석 방법 | 선형방정식에 의한 함수식 표현 |
종류 | 단순 회귀 : 독립변수 1개, 종속변수 1개인 경우 다주 회귀 : 독립변수가 2개 이상이고, 종속변수가 1개인 경우 |
예시 | 공부 시간에 따른 시험 점수 스트레스 수치에 따른 질환 수치 |
로지스틱 회귀분석
구분 | 내용 |
독립변수 | 연속형, 범주형 |
종속변수 | 이진: 범주형이면서 이진형 다항: 순서가 없는 범주형 |
분석 목적 | 분류, 예측 |
분석 방법 | 연결함수를 이용한 함수식 표현 |
종류 | 이진 로지스틱 회귀 : 종속변수가 두가지 중 하나의 값을 가지는 경우 다중 로지스틱 회귀 : 종속변수가 순서가 없는 3개 이상일 경우 |
예시 | 공부시간에 따른 시험합격여부 비행시간에 따른 여행국가 |
03.정합성 검증 & 결과 해석
1.회귀모델(회귀식)이 얼마나 설명력을 갖는지?
결정계수(R^2)를 확인한다.
결정계수 : 종속변수와 독립변수의 관계를 나타내는 수치

T = Total = 전체 변동
R = Regression = 회귀분석을 통해서 찾아낸 회귀선까지의 변동(설명력 R^2과 다르다)
E = Error = 잔차 = 회귀로 설명할 수 없는 여전히 존재하는 변동
설명력(R^2)은 전체오류중 회귀를 함으로써 얼마나 개선되었는가를 의미
0과 1 사이의 값을 가지며, 1에 가까울수록 모델의 성능이 좋다는 것을 의미

2. 회귀모델이 통계적으로 유의한지?
- 회귀식에 대한 F검정 시행
- 귀무가설 : 회귀모델은 타당하지 않을 것이다.
- 대립가설 : 회귀모델은 타당할 것이다.
- p-value로 유의성을 판단
F-검정을 통해 얻은 p-value값이 0.05보다 작다면 대립가설을 채택한다.(신뢰도95%)
3. 독립변수와 종속변수 간 선형관계가 있는지?
- 회귀식의 B1(기울기)에 대한 t검정 시행
- 귀무가설 : 독립변수와 종속변수 간 선형적인 연관이 없을 것이다.
- 대립가설 : 독립변수와 종속변수 간 선형적인 연관이 있을 것이다.
- p-value로 유의성을 판단.
t-검정을 통해 얻은 p-value값이 0.05보다 작다면 대립가설을 채택한다.
4. OLS 해석하기
OLS : 선형회귀 모델의 결과를 나타내는 회귀 결과 표. summary라는 함수를 지원.
![]() |
Dep. Variable (종속 변수) : 회귀 모델에서 사용된 종속 변수를 표시 |
Model : 회귀 모델의 종류. 여기서는 OLS (최소제곱법) 회귀 모델 사용 OLS: 근사적으로 구하려는 해와 실제 해의 오차의 제곱의 합이 최소가 되는 해를 구하는 방법 |
|
Method : 회귀 분석에 사용된 메소드. 여기서는 Least Squares (최소제곱법)사용 |
|
Date : 회귀 분석이 수행된 날짜 | |
Time : 회귀 분석이 수행된 시간 | |
No. Observations : 사용된 샘플의 수 (관측치의 개수) | |
coef: 회귀 계수 | |
std err (표준 오차) : 회귀 계수의 표준 오차 | |
t-statistic (t-통계량) : 회귀 계수에 대한 t-통계량. | |
P>|t| (p-value) : 각 계수에 대한 p-value | |
[0.025 0.975] : 95% 신뢰구간 의미 | |
R-squared (결정 계수) : 회귀모델의 설명력. 1에 가까울수록 모델이 데이터를 잘 설명하고 있다는 것을 의미 |
|
F-statistic (F-통계량) : 모델 전체의 통계적 유의성을 나타내는 F-통계량이다. 높을수록 모델이 통계적으로 유의미하다는 것을 의미 |
|
Prob (F-statistic) : F-통계량에 대한 p-value |
더보기
코드 실습
import pandas as pd
import numpy as np
# 데이터 분포 확인을 위한 plt 라이브러리 import
import matplotlib.pyplot as plt
#sklearn 에서 제공하는 데이터 셋 중 하나인 diabetes 불러오기
from sklearn.datasets import load_diabetes
#회귀분석 라이브러리 import
from sklearn.linear_model import LinearRegression
lr = LinearRegression()
import seaborn as sns
# 데이터를 가져오고, 이름을 df 로 받아주겠습니다.
df = load_diabetes()
# 데이터는 dictionary 형태로 저장되어 있기 때문에 keys() 를 통해 어떤 데이터를 가지고 있는지 확인해보겠습니다.
# target은 당뇨병의 수치입니다.
df.keys()
# 각각의 데이터를 가져와 dataframe 으로 받아주도록 하겠습니다.
df = pd.DataFrame(df['data'],index=df['target'], columns=df['feature_names'])
# 총 442 명에 대한 나이, 성별, bmi(체질량지수).. 등을 가져왔습니다.
df
# 단순선형회귀분석
# 당뇨병의 수치(target)와 bmi(체질량지수) 간 회귀분석 시행
# 종속변수: 당뇨병수치
# 독립변수: bmi(체질량지수)
Y = df.index.values
X = df.bmi.values
#분포 확인
import matplotlib.pyplot as plt
plt.scatter(X, Y)
# 회귀분석을 위한 2d array로 변황
X = X.reshape(-1,1)
Y = Y.reshape(-1,1)
# 회귀분석 시행
# 회귀계수를 확인할 수 있습니다.
# 이를 통해, 회귀식을 도출할 수 있게 됩니다.
# y= b0 +b1x
# b0, b1
lr.fit(X, Y).intercept_, lr.fit(X, Y).coef_[0]
# 회귀식: y= 152.133 + 949.435*x
# 회귀선 추가하기
# 그래프 그리기 위해 다시 X,Y 선언
Y = df.index.values
X = df.bmi.values
#numpy 에서 제공하는 plotfit 함수를 통해 회귀선 구하기
b0, b1 = np.polyfit(X, Y, 1)
plt.scatter(X,Y)
plt.plot(X,b1+b0*X,color='red')
plt.show()
# 회귀분석 결과 해석하기
# 해석순서
# 결정계수 R-squared 확인 -> 모형의 적합도 Prob(F-statistic) 확인 -> P>|t| 확인
import statsmodels.api as sm
results = sm.OLS(Y, sm.add_constant(X)).fit()
results.summary()
# 메시지 Standard Errors assume that the covariance matrix of the errors is correctly specified.
# 메시지 해석 데이터 관측치의 부족으로 첨도 테스트에 문제가 있다는 경고(common notice 정도로 이해해주세요)
A. R제곱
값이 0.34정도로 이는 34%만큼의 설명력을 가진다고 판단할 수 있습니다.
0에 가까울 수록 예측값을 믿을 수 없고 1에 가까울 수록 믿을 수 있다고 판단합니다.
------------------------------------------------------------------------------------
B. Prob(F-statistic)
도출된 회귀식이 회귀분석 모델 전체에 대해 통계적으로 의미가 있는지 파악합니다.
-> F-statistic의 p-value 값은 Prob(F-statistic)으로 표현되는데,
이는 3.47e-42로 0.05보다 작기에 이 회귀식은 회귀분석 모델 전체에 대해
통계적으로 의미가 있다고 볼 수 있습니다.
------------------------------------------------------------------------------------
C. P>|t|
각 변수가 종속변수에 미치는 영향이 유의한지 파악합니다.
x1에 대한 p-value가 0.000으로 표기 되어 있기에 0.05보다 작으므로
target을 설명하는데 유의하다고 볼 수 있습니다.