시계열 분석

hottogi·2022년 11월 7일
0
data(AirPassengers)

par(mfrow = c(1, 2))
ts.plot(AirPassengers)
diff <- diff(AirPassengers)
plot(diff)

par(mfrow = c(1, 2))
plot(AirPassengers)
log <- diff(log(AirPassengers))
plot(log)

data("WWWusage")
str(WWWusage)
WWWusage

X11()
ts.plot(WWWusage, type = "l", col = "red")

data(EuStockMarkets)
head(EuStockMarkets)

EuStock <- data.frame(EuStockMarkets)
head(EuStock)

X11()
plot(EuStock$DAX[1:1000], type = "l", col = "red")

plot.ts(cbind(EuStock$DAX[1:1000], EuStock$SMI[1:1000]),
        main = "주가지수 추세선")

data(EuStockMarkets)
head(EuStockMarkets)

EuStock <- data.frame(EuStockMarkets)
head(EuStock)

X11()
plot(EuStock$DAX[1:1000], type = "l", col = "red")

plot.ts(cbind(EuStock$DAX[1:1000], EuStock$SMI[1:1000]),
        main = "주가지수 추세선")

data <- c(45, 56, 45, 43, 69, 75, 58, 59, 66, 64, 62, 65, 
          55, 49, 67, 55, 71, 78, 71, 65, 69, 43, 70, 75, 
          56, 56, 65, 55, 82, 85, 75, 77, 77, 69, 79, 89)
length(data)

tsdata <- ts(data, start = c(2016, 1), frequency = 12)
tsdata

ts.plot(tsdata)

plot(stl(tsdata, "periodic"))

m <- decompose(tsdata)
attributes(m)
plot(m)
par(mfrow = c(1, 1))
plot(tsdata - m$seasonal)

plot(tsdata - m$trend)
plot(tsdata - m$seasonal - m$trend)

input <- c(3180, 3000, 3200, 3100, 3300, 3200, 
           3400, 3550, 3200, 3400, 3300, 3700)
length(input)
tsdata <- ts(input, start = c(2015, 2), frequency = 12)

acf(na.omit(tsdata), main ="자기상관함수", col = "red")

pacf(na.omit(tsdata), main = "부분 자기 상관 함수", col = "red")

input <- c(3180, 3000, 3200, 3100, 3300, 3200, 
           3400, 3550, 3200, 3400, 3300, 3700)

plot(tsdata, type = "l", col = "red")

acf(na.omit(tsdata), main = "자기 상환함수", col = "red")

plot(diff(tsdata, differences = 1))

data <- c(45, 56, 45, 43, 69, 75, 58, 59, 66, 64, 62, 65, 
          55, 49, 67, 55, 71, 78, 71, 65, 69, 43, 70, 75, 
          56, 56, 65, 55, 82, 85, 75, 77, 77, 69, 79, 89)

length(data)
tsdata <- ts(data, start = c(2016, 1), frequency = 12)
tsdata

library(TTR)

par(mfrow = c(2, 2))
plot(tsdata, main = "원 시계열 자료")
plot(SMA(tsdata, n = 1), main = "1년 단위 이동평균법으로 평활")
plot(SMA(tsdata, n = 2), main = "2년 단위 이동평균법으로 평활")
plot(SMA(tsdata, n = 3), main = "3년 단위 이동평균법으로 평활")
par(mfrow = c(1, 1))

input <- c(3180, 3000, 3200, 3100, 3300, 3200, 
           3400, 3550, 3200, 3400, 3300, 3700)

tsdata <- ts(input, start = c(2015, 2), frequency = 12)
tsdata

plot(tsdata, type = "l", col = "red")

par(mfrow = c(1, 2))
ts.plot(tsdata)
diff <- diff(tsdata)
plot(diff)

library(forecast)
arima <- auto.arima(tsdata)
arima

model <- arima(tsdata, order = c(1, 1, 0))
model

tsdiag(model)

fore <- forecast(model)
fore
par(mfrow = c(1, 2))
plot(fore)
model2 <- forecast(model, h = 6)
plot(model2)

data <- c(55, 56, 45, 43, 69, 75, 58, 59, 66, 64, 62, 65, 
          55, 49, 67, 55, 71, 78, 61, 65, 69, 53, 70, 75, 
          56, 56, 65, 55, 68, 80, 65, 67, 77, 69, 79, 82,
          57, 55, 63, 60, 68, 70, 58, 65, 70, 55, 65, 70)
length(data)

tsdata <- ts(data, start = c(2020, 1), frequency = 12)
tsdata

ts_feature <- stl(tsdata, s.window = "periodic")
plot(ts_feature)

par(mfrow = c(1, 2))
ts.plot(tsdata)
diff <- diff(tsdata)
plot(diff)

library(forecast)
ts_model2 <- auto.arima(tsdata)
ts_model2

model <- arima(tsdata, c(0, 1, 1), seasonal = list(order = c(1, 1, 0)))
model

tsdiag(model)

Box.test(model$residuals, lag = 1, type = "Ljung")

par(mfrow = c(1, 2))
fore <- forecast(model, h = 24)
plot(fore)

fore2 <- forecast(model, h = 6)
plot(fore2)
profile

0개의 댓글

관련 채용 정보