Posts

Showing posts from August, 2017

2. 선형회귀분석 (1): 단순선형회귀분석 in python [Advanced Analytics Lab]

Image
앞서 상관관계 분석을 통해 두 변수간 서로 연관성이 있는지 상관계산출과 산점도를 통해 확인해 보았다. 2010년 부터 2016년까지의 삼성전자 주가와 KOSPI 지수의 상관관계 분석 결과 상관계수 0.66으로 삼성전자 주가 변동과 KOSPI 지수의 변동의 뚜렷한 양적 선형 관계가 있음이 증명되었다. 금번 회에서는 단순 선형 회귀분석을 통해 "삼성전자 주가가 1% 증가하면 KOSPI가 몇 % 증가하는가?"에 대한 대답을 확인해 볼 것이다. 회귀분석이란 변수들간의 관계를 파악함으로써 어떤 특정한 변수의 값을 다른 변수들로 설명하고 예측하는 통계적 기법이다. 예측하고자 하는 변수의 값을 종속변수(Dependent Variable)라고 칭하고, 종속변수들을 설명하는 변수들을 독립변수(Independent Variable)라고 부르고, 종속변수와 독립변수의 관계를 도출하는 것을 회귀분석이라 정의한다. 회귀(Regression) 라는 용어의 사전적 정의는 원래 상태로 돌아가는 것을 의미한다. 영국의 인류학자 프랜시스 골턴 경(Sir Francis Galton, 1822~ 1911)은 928명의 성인 자녀의 키와 부모의 키를 조사하여 아래의 표로 정리하였으며, 분석 결과 부모와 자녀의 키 사이에는 선형적 연관관계가 존재하며, 일정한 수준 이상, 또는 이하이면 신장이 무한정 증가하거나 작아지는 것이 아니라 전체 신장의 평균으로 돌아가는 경향이 있다는 것을 밝혔다. 중심으로 돌아가려는 경향(Regress toward mediocrity)을 분석한 이 연구 방법이 "회귀분석"의 어원이 되었다. 프랜시스 골턴 경은 여성의 키에 1.08을 곱하고 부와 모의 키를 평균으로 환산하여 위의 Figure A 왼쪽 그림과 같은 표를 생성하였으며, Figure A 오른쪽 그림과 같이 각 점이 분포 추세를 대표하는 회귀 직선을 생성하였다. 단순 선형 회귀 분석(Simple Linear Regression Analysis)은 Y를 설...

1. 상관관계 분석(3): 로그차분을 통한 변화율 상관관계 분석 in python [Advanced Analytics Lab]

Image
앞서 분석에서는 두 변수간의 상관관계를 확인하였다. 분석 결과 삼성전자 주가와 KOSPI 지수, SK Hynix 주가와 KOSPI 지수간에는 유의미한 상관관계가 있음을 확인하였다. 앞서 분석 결과를 바탕으로 생각해 보면, 상관분석 Chapter를 시작하면서 최초의 질문이었던 "삼성전자 주가가 오르면 KOSPI 지수도 상승하고, 삼성전자 주가가 하락하면 KOSPI 주가가 하락한다." 라는 질문에 정확한 대답이 되었을까? 정확한 답은 아니라고 할 것이다. 왜냐하면 삼성전자 주가가 높으면 KOSPI 지수가 높은 것은 맞지만, 삼성전자 주가가 오르면 KOSPI 지수가 오르는 것에 대한 대답은 아니기 때문이다. 즉, X와 Y를 비교하는 것이 아니라 X의 증가량과 Y의 증가량을 비교하는 것이 필요하기 때문이다. X증가량은 로그차분(Logarithmic Differentiation)을 통해서 산출할 수 있다. 변화량을 수식으로 표현하면 아래와 같다. Xt시점의 변화량은 Xt시점에 자연로그(ln)를 취한 값에 Xt의 이전시점 (Xt-1) 값에 자연로그를 취하고 빼준 값과 같다. 예를 들어 1월 4일에 1696.14였던 KOSPI 주가지수가 1월 5일에 1690.62로 증가했다면, 자연로그를 취해서 차이를 구해주면 된다. ln(1690.62) - ln(1696.14) = 7.432851 - 7.43611 = - 0.00326 = -0.326 % python에서 실습해보자. 데이터는 앞과 동일한 데이터를 사용할 것이다. import numpy as np import pandas as pd import pandas_datareader.data as web import matplotlib.pyplot as plt import datetime start = datetime.datetime(2010, 1, 1) end = datetime.datetime(2016, 12, 31) df_KOSPI = web.DataReader...

1. 상관관계 분석(2): 피어슨 상관계수 in python [Advanced Analytics Lab]

Image
앞서 삼성전자 주가와 KOSPI 지수간의 공분산 분석을 통해, 두 변수간의 공분산이 14973826이라는 것을 확인했다. 그러나 공분산 값 만으로는 두 값이 서로 같이 증가하는 경향성이 있다는 것을 알 수 있었지만, 얼마나 "끈끈하게" 두 값이 묶여 있는지는 알 수 없었다. 이에 이번 회에서는 상관계수를 산출하여 두 변수간 얼마나 관련성이 있는지 알아 볼 것이다. 실습으로는 삼성전자와 SK Hynix 주가 중 KOSPI지수와 더 상관관계가 높은 종목을 찾아볼 것이다. 먼저 데이터를 불러오고 산점도를 생성한다. python에서 산점도를 생성하고 공분산을 산출하는 방법은 이전 회 < 1. 상관관계 분석(1) > 을 참조한다. import numpy as np import pandas as pd import pandas_datareader.data as web import matplotlib.pyplot as plt import datetime start = datetime.datetime(2010, 1, 1) end = datetime.datetime(2016, 12, 31) df_KOSPI = web.DataReader("KRX:KOSPI", "google", start, end) df_SE = web.DataReader("KRX:005930", "google", start, end) df_SKH = web.DataReader("KRX:000660", "google", start, end) plt.figure(figsize  = (8,6)) plt.scatter(df_SE["Close"], df_KOSPI["Close"]) plt.show() plt.figure(figsize  = (8,6)) plt.scatter(df_SKH["Close...

1. 상관관계 분석(1): 산점도, 공분산 in python [Advanced Analytics Lab]

Image
증권가에서는 흔히 "KOSPI는 삼성전자 주가에 울고 웃는다"는 말이 있다. 다른 말로 하면 삼성전자 주가가 오르면 KOSPI 지수도 상승하고, 삼성전자 주가가 하락하면 KOSPI 주가가 하락한다는 표현이 되겠다. 과연 KOSPI와 삼성전자는 연관되어 움직일까? 삼성전자 주가도 원화로 표기된 "숫자"로 되어 있고, KOSPI 지수도 지수라는 "숫자"로 표시된다. 통계에서는 정해진 범위안에 모든 실수가 될 수 있는 값을 가진 변수들- 온도, 키, 몸무게 등과 같은 간격(interval) 또는 비율(ratio)을 연속된 숫자로 표현하는 변수를 연속형 변수(continuous variable)이라고 부른다.  연속형 변수인 두개의 변수간에 상관성이 존재하는지 파악하는 가장 쉬운 방법은 두 변수간 산점도(Scatter Plot)을 생성해 보는 것이다.  예를 들어 삼성전자의 주가와 KOSPI 주가 간에 상관성이 존재하는지 확인한다고 하자. 가장 쉬운 방법은 x축에 삼성전자의 주가를, y축에 KOSPI 지수를 설정하여 점을 찍어 보는 방법일 것이다. 만약에 두개의 변수가 서로 같이 움직이는 경향을 가진다면 x가 높을 수록 y도 높은 값을 가지고, x가 낮을 수록 y도 낮은 값을 가지게 될 것으로 추측할 수 있다. 먼저 실습 데이터를 Python으로 불러와 보자. 데이터는 2010년부터 2016년까지의 KOSPI 지수와 삼성전자 주가이다. 먼저 필요한 패키지들을 불러온다. import numpy as np import pandas as pd import pandas_datareader.data as web  # DataReader import matplotlib.pyplot as plt  #  import datetime 위의 다섯개의 패키지들은 앞으로 있을 실습에서 데이터를 불러오거나 차트를 생성할때 거의 항상 사용하게 될 패키지들이다. numpy 패키지는 다차원 배열의 연산처리를 위한 패...