-
Python과 R을 이용한 주가분석 ② 시계열 데이터 다루기기타 2023. 9. 21. 17:58
지난 포스팅에는 Python과 오픈소스 라이브러리인 FinancDataReader을 이용하여 삼성전자의 주가데이터를 뽑아보았다.
이번에는 지난 번에 만든 CSV파일을 이용하여 R을 이용하여 시계열데이터 분석을 해볼 것이다.
👇지난 포스팅👇
2023.09.19 - [데이터분석 연습] - Python과 R을 이용한 주가분석 ① 가격데이터 수집
Python과 R을 이용한 주가분석 ① 가격데이터 수집
금융학회에 있을 때는 데이터가이드로 간편히 주가 데이터를 뽑을 수 있었다. 졸업을 하고 집에서 혼자하려니 데이터를 모두 알아서 구해야하는 상황에 직면했다. 하지만 항상 기억해야 할 것
livwlgh.tistory.com
1. 시계열 패키지 다루기
저장된 데이터를 시계열 분석에 이용하기 위해서는 단순히 read.csv로 파일을 불러오거나 객체를 vector, matrix, data.flame, ts로 지정하는데는 한계가 있다. 따라서 시계열분석에는 시계열에 특화된 매소드를 사용해야 한다. R에서 사용할 수 있는 시계열과 관련되 패키지는 zoo, xts, timeSeries가 있다. 이번 시간에는 zoo패키지 이용하여 시계열 분석을 해볼 것이다.
zoo는 timeSeries의 확장판으로 불규칙 시계열 분석을 포함한다. 주가는 동향을 어느정도 예측을 할 수는 있어도, 내일의 주가를 알 수 있는 것이 아니지 않는가. 이는 오차가 존재하는 불규칙 시계열에 해당한다. 무엇보다 zoo패키지는 전체 관측점을 시계열 순으로 색인하기 때문에 계절성을 분석하기에도 좋다. xts는 zoo의 확장으로 조금 더 자율성이 높다. 하지만 시계열 분석에 가장 많이 사용하는 객체가 zoo이기 때문에 특별한 이유가 아닌 이상 zoo를 사용하는 것이 가장 무난하다.
먼저 zoo를 설치하고 라이브러리를 지정하자
> install.packages("zoo") > library("zoo")그 다음 드디어 저번 포스팅에서 만들었던 삼성전자 주가 파일을 불러올 차례이다.
samsung_price.csv 파일을 불러와 객체를 생성한다.
> sams <- read.zoo("Documents/samsung_price.csv", sep=",", header=TRUE, format = "%Y-%m-%d")sep은 데이터를 분리하는 기호를, header은 데이터의 첫번째 줄에 각 열의 제목이 존재하는가를 묻는 것이다.
있으면 TRUE, 없으면 FALSE로 지정한다. 로딩된 데이터의 상태는 View를 사용해 다음과 같이 볼 수 있다.
> View(sams)
특히 R studio를 사용한다면 IDE에서 제공하는 모듈(read_csv)를 통해 쉽게 데이터를 불러올 수 있다고 생각할 것이다.
하지만 read_csv로 데이터를 불러오면 다음과 같은 모습이다.
> library(readr) > samsung_price <- read_csv("Documents/samsung_price.csv") > View(samsung_price)
데이터 인덱스가 날짜가 아닌 그저 나열된 순서로 배정되어 있다. 데이터가 시계열임을 제대로 인식하지 못한다는 것이다.
만약 해당 데이터가 날짜순이 아닌 다른 기준으로 배치되어있었다면 데이터를 다루는데 불편함이 생겼을 것이다.
따라서 시계열데이터는 read.zoo를 통해 날짜가 인덱싱 될 수 있도록 포멧을 지정해주는 것이 중요하다.
2. 데이터 시각화 하기
데이터가 제대로 로드되었다면 전체적으로 살펴보기 위해 차트를 그려보자.
보통 데이터를 시각화하기 위해 ggplot2를 사용하지만 이는 뒤에서 살펴보기로 하고,
이번에는 간단히 plot함수를 통해 종가 추세를 살펴볼 것이다.
차트제목을 main인수를 활용하여 추가하고 x축과 y축의 라벨을 xlab, ylab을 통해 추가한다.
일단 종가 차트를 그려볼 것이기 때문에 '$'을 통해 카테고리를 지정한다.
> plot(sams$Close, main = "SAMSUNG Closing Price on KOSPI", ylab = "Price (KRW)", xlab = "Date")
오늘은 R상에서 시계열 데이터를 불러오고 간단히 시각화하는 방법을 알아봤다.
이렇게 보니 5만전자에 사서 9만전자에 판 스스로가 참 자랑스럽다✌️
(10주밖에 되지 않았지만...)다음 포스팅에는 해당 데이터를 통해 간단한 수익률분석을 해볼 생각이다. 그럼 이만👋
'기타' 카테고리의 다른 글
Python과 R을 이용한 주가분석 ① 가격데이터 수집 (0) 2023.09.19