Gidhub BE Developer

통계 분석 - 선형 회귀

2018-02-13
goodGid

파이썬3를 활용한 통계 분석 - 선형 회귀


회귀 분석이란 ?

  • 회귀 분석(Regression analysis)이란통계적으로 데이터를 분석하는 방법

  • 회귀 분석이란 한 개 이상의 변수를 다룰 때 특정 변수가 다른 변수와 어떤 관계를 맺는지 분석하고,
    이를 바탕으로 모델을 정의해 값을 예측하는 기법이다.

  • 예를 들어 ‘발이 큰 사람이 키도 크다’라고 한다면 이를 확인하기 위해 약 100명의 발 길이와 키를 모아 두 데이터 사이에 실제로 이러한 관계가 존재하는지 분석 할 수 있다.


관련 모듈 설치

  • 행렬, 벡터 등의 수학 계산을 위한 자료 구조 관련 함수를 제공하는 NumPy 라이브러리

  • 과학과 관련된 수치 분석, 확률 분포 등 다양한 통계 관련 함수를 제공하는 SciPy 라이브러리

  • 이를 그래프로 표현하기 위한 Matplotlib 라이브러리

  • 다음과 같이 pip 명령어를 이용하여 설치한다.


pip3 install numpy scipy matplotlib


회귀 분석 예제

아래의 표 1은 어떤 공장의 월별 생산 금액과 전기 사용량을 나타낸 것이다.

이 데이터를 바탕으로 ‘특정 월의 생산 금액이 크다면 전기 사용량도 크다’고 가정할 수 있다.

이 가정이 정말 맞는것인지, 만약 그렇다면 특정 생산 금액에 해당하는 전기 사용량도 예측 가능한지 알아보자.


월별 생산 금액을 변수 x로, 이 때 전기 사용량을 y로

나타내면

위 데이터는 다음과 같이 x,y로 구성된 쌍으로 표현가능하다.

(Xi, Yi) = (3.52, 2.48),(2.58, 2.27) …


이 때 두 변수 간에 어떤 선형적 관계가 있는지 분석할 수 있으며,

이를 상관 분석(Correleation Analysis)라고 한다.

또한 이러한 상관 관계의 정도를 파악하는 값을 상관 계수(Correlation Coefficient)라고 하며,

이 값의 범위는 -1 ~ 1 사이 이다.


예를 들어 발이 큰 사람이 실제로 키가 크다면 두 변수 사이에는 강한 양의 상관 관계가 존재하며,

상관 계수의 값은 1에 가까울 것이다.

반면 두 변수 사이에 특별한 상관 관계가 존재하지 않으면 상관 계수의 값은 0에 가까울 것이다.

두 변수 사이에 음의 상관 관계가 존재한다면 상관 계수의 값은 -1에 가까워진다.


두 변수 사이에 상관 관계존재한다면 통계적으로 모델을 작성할 수 있다.

Yi = B0 + B1 * Xi + Ei

여기서 Yi를 종속 변수, Xi를 독립 변수라 한다.

종속 변수와 독립 변수 간의 관계식을 결정하는 B0와 B1는 데이터로부터 추정할 수 있으며,

이를 각각 절편(intercept), 기울기(slope)라 한다.

Ei는 오차항으로 우리가 작성한 모델과 실제 데이터 값과의 차이를 나타낸다.

from scipy import stats


x = [3.52, 2.58, 3.31, 4.07, 4.62, 3.98, 4.29, 4.83, 3.71, 4.61, 3.90, 3.20]
y = [2.48, 2.27, 2.47, 2.77, 2.98, 3.05, 3.18, 3.46, 3.03, 3.25, 2.67, 2.53]


# 선형 모델의 기울기, 절편, 상관 계수, p-value, 에러의 표준 편차
# p-value는 통계학에서 예측 불확실성의 정도를 나타내는 값으로
# 일반적으로 0.05 미만일 때 유의미하다 본다.
# 이번 예제에서 상관 계수는 0.892로 두 변수 간에 양의 상관 관계가 있으며
# 통계학적으로도 유의미하다는 것을 알 수 있다.
slope, intercept, r_value, p_value, stderr = stats.linregress(x,y)

print(r_value)          # 상관 계수

print(r_value**2)

print(p_value)

print(4*slope + intercept)      # 전기 사용량 예측



Index