소품집

주가 시계열 자료 분석 본문

Time series

주가 시계열 자료 분석

sodayeong 2020. 4. 7. 20:42

주가 시계열 자료


Facebook 과 twitter 주식가격 활용


주식이 열린 시점부터 마감 된 시점까지의 변화량을 data.frame으로 나타낸 것 입니다. 이 중에서도 수정종가를 잘 봐야하는데요. 수정종가란 총 발행 주식수의 변화를 반영한 가격을 말합니다. (주식은 매일 가격이 변동되는 일정적이지 않은 값이기 때문에 그 값을 반영한 변화량이라 생각하면 됩니다.)

 

facebook.df <- read.csv("Stock_facebook.csv")
twitter.df <- read.csv("Stock_twitter.csv")

facebook.ts <- ts(facebook.df$Adj.Close, start = c(2015,8), frequency = 12)
twitter.ts <- ts(twitter.df$Adj.Close, start = c(2015,8), frequency = 12)

먼저, data.frame 형태의 csv 파일을 읽어옵니다. 

ts 함수 -> 기본값으로 저장하고, 반드시 start=, frequency= 옵션을 지정해 시계열을 생성합니다. 

 

 


 

시계열 자료 생성하기, 불러오기


  • 주가 시계열 자료
    • Facebook 와 twitter 주식 가격 활용
    • 일별 데이터 가져오기 : quantmod packages 활용
install.packages("quantmod")
library(quantmod)

#일별 데이터 가져오기
getSymbols("FB", src="yahoo", from=as.Date("2015-08-1"),to=as.Date("2018-08-31"))
getSymbols("TWTR", src="yahoo", from=as.Date("2015-08-1"),to=as.Date("2018-08-31"))

quantmod 패키지는 일별 데이터를 가져올 때 사용하는 패키지 입니다. 


 

시계열 그리기


# data.frame 불러오기
unemploy.df <- read.csv("BOK_unemployment_rate.csv")
oil.df <- read.csv("BOK_energy_oil.csv")
exchange.df <- read.csv("BOK_exchange_rate_krw_usd.csv")

# ts (시계열 타입으로 변환)
unemploy.ts <- ts(unemploy.df$unemployment_rate, start=2000,frequency = 1)
oil.ts <- ts(oil.df$oil,start = c(1994,1),frequency = 12)
exchange.ts <- ts(exchange.df$exchange_rate_krw_usd, start = c(1980,1),frequency = 4)

# plot
par(mfrow=c(2,2)) #2,2분면으로 나누기
plot(FB$FB.Adjusted,xlab="Time(daily)", ylab="Adjusted Price", main="Facebook")
plot(oil.ts, xlab="Time(Monthly)", ylab="Petolem consumption", main="korean")
plot(exchange.ts,xlab="Time(Quarterly)", ylab="Exchange rate", main="Exchange")
plot(unemploy.ts,xlab="Time(Yearly)", ylab="Adjusted Price", main="korean")

 

 

시계열 자료 계절주기 변환


  • 월별 자료를 분기별 자료로 변환 (합산)
  • 월별 -> 분기별로 변환 된 그래프를 보니, 보다 스무스 해진 형태를 보이는 것을 알 수 있습니다.
# AirPassengers Data
AirPassengers

# 월별 자료를 분기별 자료로 변환하여 합산
air_quaterly <- aggregate(AirPassengers,nfrequency = 4, FUN=sum)

par(mfrow=c(1,2))
plot(AirPassengers,xlab="Time(Monthly)",ylab="Number of passengers", main ="Airline passengers")
plot(air_quaterly, xlab="Time(Quaterlt)", ylab= 'Nuber of passengers', main="Airline passengers")

 

 

  • 월별 자료를 연도별 자료로 변환
  • 월별 -> 연도별로 변환 된 그래프를 보니, 앞 전의 분기 데이터보다 스무스 해졌습니다. 변동의 주기가 길어질 수록, 그래프의 형태가 스무스한 형태를 보이는 것을 알 수 있습니다. 
# AirPassengers Data
AirPassengers
# 월별 자료를 분기별 자료로 변환하여 mean
air_yearly <- aggregate(AirPassengers, nfrequency = 1, FUN=mean)

par(mfrow=c(1,2))
plot(AirPassengers,xlab="Time(Monthly)",ylab="Number of passengers", main ="Airline passengers")
plot(air_yearly, xlab="Time(Yearly)", ylab='Number of Passengers', main="Airline Passengers")

 

 


생각해보기


Q. 월 → 분기 → 연도별의 순으로 자료를 변환하는 것은 가능 했다.

    그렇다면, 그 역순도 가능할까?

A. 답은 아니다. 왜냐하면 시계열은 '시간의 순서에 따른 값을 변환한 것 인데, 그 역의 순으로 돌아가서 변환 한다면 이전 값에 대한 정보가 없는 상태에서 거슬러 내려간다는 것이기 때문에 불가능 하다. 

 


 

 

 

과제


▶ 내장 시계열 데이터를 활용해보기

  • 월별(TSA 패키지의 beersales, forecast 패키지의 wineind 데이터)

  • 분기

  • 연도

  • 조건) aggreagte 함수 쓰기, plot 함수 사용

 

 

 

# 1. Wineind sales
wineind_quarterly <- aggregate(wineind, nfrequency = 4, FUN=sum)
wineind_yearly <- aggregate(wineind, nfrequency = 1, FUN = sum)

par(mfrow=c(1,2))
plot(wineind_quarterly,xlab="Time(quarterly)",ylab="Number of sales", main='quarterly Sales')
plot(wineind_yearly, xlab="Time(yearly)", ylab="Number of sales", main="yearly Sales")

 

data(beersales)beersales_quarterly <- aggregate(beersales, nfrequency = 4,FUN=sum)
beersales_yearly <- aggregate(beersales,nfrequency=1 ,FUN=sum)
par(mfrow=c(1,2))
plot(beersales_quarterly, xlab="Time(quarterly)", yalb="Number of sales", main="quarterly Sales")
plot(beersales_yearly, xlab="Time(yearly)", ylab="Number of sales", main="yearly Sales")
728x90

'Time series' 카테고리의 다른 글

KPSS 검정  (0) 2020.06.08
ARIMA model & 정상성 파악  (0) 2020.06.05
시계열의 변동요인과 모형  (0) 2020.04.20
시계열 분석 - AirPassenger Data 등  (0) 2020.04.03
시계열 데이터란? & 시계열의 종류  (2) 2020.04.02
Comments