04-29 02:46
Notice
Recent Posts
Recent Comments
관리 메뉴

Scientific Computing & Data Science

[Data Science / Data Visualization] Moving Average 본문

Data Science/Data Visualisation

[Data Science / Data Visualization] Moving Average

cinema4dr12 2015. 11. 21. 13:58

이번 글에서는 Big Data와 직접적인 관련은 없지만 Fluctuation이 심한 데이터에 대한 경향을 살펴보는 기법 중 하나인 Moving Average에 대하여 알아본다.

Moving Average에는 Simple Moving Average, Accumulative Moving Average, Weighted Moving Average, Modified Moving Average, Exponential Moving Average 등이 있으며, 이 중 가장 간단한 Simple Moving Average를 다루기로 한다.


Theory & Algorithm

Simple Moving Average의 알고리즘은 매우 간단하다. n개의 데이터 윈도우사이즈(Window Size)에 대하여,

최초 i개의 데이터 개수가 n개 보다 작을 경우 i개에 대한 평균을 구한다.

만약 현재의 데이터 개수 i가 n보다 큰 경우 현재부터 이전 n개까지의 데이터에 대한 평균을 구한다.

즉,

if i < n:




else:




 


Example

이제 간단한 코드를 통해 Moving Average를 알아보자. 우선 데이터가 필요한데 Yahoo 주가 History 데이터를 이용해 보자.

Yahoo 주가가 공개된 사이트를 방문한다: http://finance.yahoo.com/q/hp?s=YHOO

사이트의 맨 아래에 보면 Download to Spreadsheet 버튼을 클릭하여 오늘 날짜까지의 데이터(CSV 포맷)를 다운받을 수 있다. 이 글을 작성한 날짜를 기준으로 본 예제에 사용된 데이터를 다운받을 수 있다.

table.csv


데이터를 보면  Date(날짜), Open(개장 시), Low(최저), High(최고), Close(폐장 시) 등등에 대한 정보를 알 수 있다.

이 중 개장 시의 데이터를 활용해 보고자 한다.

R 소스는 다음과 같다:

R CODE:


아래 이미지들은 원본 데이터와 Moving Average로 계산된 결과를 plot한 것이다.

Window Size가 증가함에 따라 곡선은 점점 부드러워지지만 원본 데이터와 차이가 점점 커짐을 알 수 있다.

[Window Size = 10]


[Window Size = 50]


[Window Size = 100]


[Window Size = 200]


[Window Size = 500]


[Window Size = 1000]


Comments