데이터 분석 - 회귀분석

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-420.05보다 작기에 이 회귀식은 회귀분석 모델 전체에 대해
통계적으로 의미가 있다고 볼 수 있습니다.
    
------------------------------------------------------------------------------------
C. P>|t| 
각 변수가 종속변수에 미치는 영향이 유의한지 파악합니다.
x1에 대한 p-value가 0.000으로 표기 되어 있기에 0.05보다 작으므로
target을 설명하는데 유의하다고 볼 수 있습니다.