빅데이터 김교수의 "AI노마드연구소" AI로 열어가는 노마드 세상!

빅데이터 김교수의 "AI노마드연구소" AI로 열어가는 노마드 세상입니다. AI 코딩작성, SNS 분석, AI업무자동화 컨설팅 0507-1419-0222

자세히보기

교육/빅데이터분석자격증교육

회귀분석이란(주식과 환율 상관관계 Python 코드포함)?

빅데이터 김교수 2022. 5. 13. 10:35

회귀 분석개념

위키백과, 우리 모두의 백과사전.
기계 학습과데이터 마이닝
 
독립변수 1개와 종속변수 1개를 가진 선형회귀의 예

통계학에서, 회귀 분석(回歸分析, 영어: regression analysis)은 관찰된 연속형 변수들에 대해 두 변수 사이의 모형을 구한뒤 적합도를 측정해 내는 분석 방법이다.

회귀분석은 시간에 따라 변화하는 데이터나 어떤 영향, 가설적 실험, 인과 관계의 모델링등의 통계적 예측에 이용될 수 있다. 그러나 많은 경우 가정이 맞는지 아닌지 적절하게 밝혀지지 않은 채로 이용되어 그 결과가 오용되는 경우도 있다. 특히 통계 소프트웨어의 발달로 분석이 용이해져서 결과를 쉽게 얻을 수 있지만 분석 방법의 선택이 적절했는지 또한 정보 분석이 정확한지 판단하는 것은 연구자에 달려 있다.

 
  •  

전개[편집]

하나의 종속변수와 하나의 독립변수 사이의 관계를 분석할 경우를 단순회귀분석(영어: simple regression analysis), 하나의 종속변수와 여러 독립변수 사이의 관계를 규명하고자 할 경우를 다중회귀분석(영어: multiple regression analysis)이라고 한다.

회귀 모형 적합도[편집]

회귀모형의 적합도는 잔차 검정을 통해 확인한다. 잔차 검정은 정규성과 등분산성 가정을 만족하는지에 대한 검토 과정이다. 잔차의 정규성은 Shaprio-Wilk 검정 또는 Kolmogolov-Smirnov 검정을 통해서 실시하며, 회귀분석에서도 등분산성 방법으로는 Breusch-Pagan test, Goldfeld-Quandt test, Cook-Weisberg test 그리고 White test가 있다.

역사[편집]

회귀(영어: regress 리그레스[*])의 원래 의미는 옛날 상태로 돌아가는 것을 의미한다. 영국의 유전학자 프랜시스 골턴은 부모의 키와 아이들의 키 사이의 연관 관계를 연구하면서 부모와 자녀의 키사이에는 선형적인 관계가 있고 키가 커지거나 작아지는 것보다는 전체 키 평균으로 돌아가려는 경향이 있다는 가설을 세웠으며 이를 분석하는 방법을 "회귀분석"이라고 하였다. 이러한 경험적 연구 이후, 칼 피어슨은 아버지와 아들의 키를 조사한 결과를 바탕으로 함수 관계를 도출하여 회귀분석 이론을 수학적으로 정립하였다.

회귀분석과 분산분석[편집]

어떤 변수가 다른 변수에 의하여 설명된다고 보고 그 함수 관계를 조사하는 통계적인 해석 기법인 회귀분석(regression analysis)은 실험 집단 간에 어떠한 차이가 존재하는지 밝히는 데 적용하는 검정 기법인 분산 분석(analysis of variance, ANOVA)과 함께 매우 실용적인 연구방법론의 주요한 도구이다.

같이 보기[편집]

  위키미디어 공용에 관련된
미디어 분류가 있습니다.

상기 개념을 반영하여 파이썬을 "주식과 환율간 상관성 분석"을 코드화하면 다음과 같다. 

 

파이썬 회귀분석 코드

 

import pandas as pd
import matplotlib.pyplot as plt
import FinanceDataReader as fdr


TICKERS = ['USD/KRW'"KS11"]


if __name__ == "__main__":
    # 1. 날짜별 index 생성
    s = "1995-01-01"
    e = "2022-05-13"
    # dates = pd.date_range(s, e)           # : 일단위 상관계수 계산
    dates = pd.date_range(s, e, freq='BM')  # : 월종가단위 상관계수 계산

    # 2. DataFrame 만들기
    df = pd.DataFrame(index=dates)

    # 3. Ticker 별로 수정종가 데이터를 추가
    for ticker in TICKERS:
        # df_tmp = data.get_data_yahoo(ticker, s)
        df_tmp = fdr.DataReader(ticker)
        # df_tmp = fdr2backtrader(df_tmp)
        df_tmp = df_tmp[["Close"]]
        df_tmp = df_tmp.rename(columns={"Close": ticker})
        df = df.join(df_tmp)
        df = df.dropna()

    # 4. 가격데이터 정규화 : 시작 가격으로 나누어서 시작을 1.0으로 맞추는 과정
    df = df / df.iloc[0]

    # 5. 월별 변화량 구하기
    daily_returns = df.copy()
    daily_returns[1:] = (df[1:] / df[:-1].values) - 1
    daily_returns.iloc[0] = 0

    # 6. 상관계수 출력
    print(daily_returns.corr(method="pearson"))

    # 7. 시각화
    df.plot()
    plt.show()
 
위 코드는 수업시에 같이 공부해요^^

'교육 > 빅데이터분석자격증교육' 카테고리의 다른 글

데이터란?  (0) 2022.05.16
데이터베이터란?  (0) 2022.05.16
로지스틱 회귀분석에 관하여  (0) 2022.05.16
2장 데이터분석기획 설명자료  (0) 2022.05.13
의사결정나무(Decision Tree)  (0) 2022.04.26