본문 바로가기

시계열 분석

13. [R] 시계열분석 정상성 확인 예제 : 비정상적 분산, 로그변환

반응형

지난 번 화이자 주식은 1차 차분으로 정상적인 시계열자료로 판단되므로 2000년 1월부터 2017년 8월까지 스타벅스(Starbucks) 주식으로 확인


## 자료불러오기

library(xlsx)

library(tseries) #본 예제에서는 필요없음

df <- read.xlsx("D:/R/TimeSeries/Sbux_Stock.xlsx", 1)

df_ts <- ts(df[,3], start=c(2000, 1), end=c(2017, 8), frequency=12)


원 시계열자료로 추세 확인, 1차 차분된 시계열 자료를 통해 분산이 증가하는 것을 확인할 수 있음

## 1. 원 시계열 도표 vs 1차 차분 후 시계열 도표

par(oma=c(0,0,5,0))

par(mfrow = c(1,2))

plot(df_ts, main="raw data", ylab="Stock($)", xlab="Year")

plot(diff(df_ts), main="1st diff data", ylab="Stock($)", xlab="Year")

mtext("<Figure 1> Stock of Starbucks(2000.01~2017.08)",outer=TRUE,cex=2)


분산이 비정상적이면서 평균도 비정상적일 경우, 변수변환을 통해 분산을 일정하게 하고, 차분을 통해 평균을 정상적으로 만들어야 함

자료를 먼저 차분하게 되면 부호가 음인 값이 산출되어 로그를 계산할 수 없기 때문


로그변환 후 1차 차분한 자료를 보면, 분산이 상대적으로 작아진 것을 확인

하지만 과거자료의 변동이 더 큰 것으로 보이므로, 다음에는 Box-Cox 멱변환을 통해 분산을 확인할 필요가 있음

## 2. 로그 변환 시계열 도표 vs 로그 변환 후 1차 차분한 시계열 도표

par(oma=c(0,0,5,0))

par(mfrow = c(1,2))

log_df_ts <- log(df_ts)

plot(log_df_ts, main="raw data", ylab="Stock($)", xlab="Year")

plot(diff(log_df_ts), main="1st diff data", ylab="Stock($)", xlab="Year")

mtext("<Figure 2> log(Stock) of Starbucks(2000.01~2017.08)",outer=TRUE,cex=2)



(자료출처) investing.com

(참고문헌) 시계열 애널리스트를 위한 Eviews 솔루션(2015, 정동빈 지음)

반응형