상세 컨텐츠

본문 제목

R - 시계열 예제

IT 정보/R

by 에스프리터 2018.05.24 11:24

본문





오늘 예제는 시계열 분석에 관한 예제입니다.
시계열 데이터를 생성하여 차후 추세가 어떻게 될지 예측합니다.


코드

# 시계열

# 시계열 데이터 생성으로 미래 예측 연습

install.packages("forecast")
library(forecast)
# auto.arima() 함수 : 시계열 모형 추정 함수-예측 알고리즘
# forecast() 함수 : 미래 수치 예측
input <- c(5200,5100,5400,5300,5500,5400,5600,5900,5400,5600,5400,5800)
input
# (1) 시계열 데이터 생성 - ts() : states 패키지 제공
tsscore <- ts(input, start=c(2015, 1), frequency=12)  # Time Series
tsscore
class(tsscore)

# (2) 시계열 모형 추정  
tsscore2 <- auto.arima(tsscore) # 시계열 데이터 이용  
tsscore2 #AIC=156.08   AICc=156.52   BIC=156.48 이 숫자값들은 작으면 작을수록 좋다.

# (3) 시계열모형 추정으로 미래값 예측
# - 기본 예측개월(24개월 - 2년) - level=c(80,95)
tsscore3 <- forecast(tsscore2)   # 미래값 예측-시계열모형 예측 forecas
tsscore3
plot(tsscore3)  # 미래값 예측 도식화

# - 6개월 예측(0.5년)
tsscore3 <- forecast(tsscore2, h=6)  # 향후 3개월 예측
tsscore3
plot(tsscore3)

#2. 시계열 데이터 파일로 미래 예측
mysales <- read.csv("testdata/sales2.csv", header = TRUE)
mysales

# (1) 시계열 데이터 빈도분석 시각화
max(mysales$Food)                  # 2750
plot.ts(mysales$Food, col='blue')   # 2012~2013 사이 최고 빈도수
spectrum(mysales$Food, col='red')

# y축:로그척도(데시벨), x축:대역폭(10년), 파랑선 : 데시벨 95% 신뢰구간
# (2) 시계열 데이터 생성
tsFood <- ts(mysales$Food, start=c(2011, 1), frequency=12)
tsFood # 2011 ~ 2014.05

# (3) 시계열 모형 추정
tsFood2 <- auto.arima(tsFood)   # 시계열모형 추정
tsFood2

# (4) 시계열 모형으로 미래예측 - 기본 예측 개월(2년)
plot(forecast(tsFood2))            # 2014.06~2016.05 예측 도식화
# 기본 예측 개월(7개월)
tsFood3 <- forecast(tsFood2, level=c(80, 95), h=7)
tsFood3          # 7개월 데이터 예측
plot(tsFood3)    # 7개월 예측 도식화


# 시계열 자료 -ARIMA모형으로 미래 예측

library(forecast)
AirPassengers
str(AirPassengers)
plot(AirPassengers)

plot(stl(AirPassengers,s.window = "periodic"))#s.window = 쪼개본다는 뜻

library(tseries)
adf.test(diff(log(AirPassengers)),alternative = "stationary",k=0) #안정적인 데이터인지 불안한데이터인지 확인 p값이 0.05보다 작음 그래서 안정적인 데이터

library(forecast)
auto.arima(diff(log(AirPassengers))) #diff(log(AirPassengers))안정적 시계열을 위한 수식

#별도의 아리마 모양 따로 만들기

fit <- arima(log(AirPassengers),c(1,0,1), seasonal = list(order=c(0,1,1), period=12))
fit
pred <-predict(fit,n.ahead=10*12)
pred             
x11()
ts.plot(AirPassengers,2.718^pred$pred,log="y",lty=c(1,3)) #오른쪽 점선은 예측값




샘플 데이터





본 포스팅은 KIC 캠퍼스에서 박영권 강사의 지도하에 공부하며 작성한 리포트입니다.
혹시 잘못된 내용이 있거나 문제 소지시 댓글 남겨주시면 조치하겠습니다.





'IT 정보 > R' 카테고리의 다른 글

R - 시계열 예제  (0) 2018.05.24
R - 연관 분석 예제  (2) 2018.05.21
R - neuralnet 예제  (0) 2018.05.18
R - diamonds dataset을 활용한 k-means 분석 예제  (0) 2018.05.17
R - K-means 군집분석 예제  (0) 2018.05.16
R - 군집분석(hclust 활용) 예제  (0) 2018.05.16
R - 군집분석 예제  (0) 2018.05.14

태그

관련글 더보기

댓글 영역