You are on page 1of 10

library(readr)

library(fpp)

library(astsa)

library(DT)

library(dygraphs)

library(psd)

library(TSA)

# ------------------TIME SERIES FORECASTING GROUP ASSIGNMENT----------------------#

# Working Directory

setwd("D:/Group Assignment")

# Load beer production dataset

TSData <- read.csv('beer.csv')

# Data Exploration and Visualization

str(TSData)

summary(TSData)

head(TSData)

tail(TSData)
sum(is.na(TSData)) # no null data

# To predict the next 2 years beer sales, it is required to convert beer data

# Converting beer data into ts object(time series)

TS_Beer <- ts(TSData, start = 2000, frequency = 4, end=2018)

is.ts(TS_Beer)

summary(TS_Beer)

str(TS_Beer)

#-----------------------Beer Sales in past 18 years------------------------#

ts.plot(beer_ts, col="red" ,main="Beer Sales in past 18 years",

xlab="Years (2000 - 2018)", ylab="Sales in (000)$", type="b")

# ---------------------Sampling Times of Time Series-----------------------#

deltat(TS_Beer)

frequency(TS_Beer)
cycle(TS_Beer)

Annual_Beer <- aggregate(TS_Beer)

str(Annual_Beer)

summary(Annual_Beer)

#-------------------Annual consumption of beer Year Over Year------------------#

plot(Annual_Beer,col="blue", main="Annual consumption of beer YOY")

avg_beer <- aggregate(TS_Beer,FUN=mean)

summary(avg_beer)

str(avg_beer)

# -----------------Average consumption of beer Year Over Year------------------#

plot(avg_beer,col="red", main="Average consumption of beer YOY")


# --------------------- Quarterly based sub-series plot ----------------------#

ggsubseriesplot(TS_Beer,facets=TRUE, main=" Quarterly based sub-series plot ")

# ------------------ Boxplot between quarters and years-----------------------#

boxplot(TS_Beer~cycle(TS_Beer), main="Variation between quarters and years")

# -------------------------Lagplot of Beer data------------------------------#

gglagplot(TS_Beer)

# ------------------------Seasonal plot of Beer Sales------------------------#

ggseasonplot(TS_Beer,facets=TRUE,polar = TRUE)

# --------------------------Autocorrelation Analysis ------------------------#

acf(TS_Beer)
pacf(TS_Beer)

# ----------------- stationary or non-stationary Check------------------#

# Augmented Dickey-Fuller Test

adf.test(TS_Beer)

# Kwiatkowski-Phillips-Schmidt-Shin Test

kpss.test(TS_Beer)

# ---------------------------seasonality check ----------------------------#

periodogram(TS_Beer)

# To Detrend the pattern and removing seasonality

diff_beer <- diff(TS_Beer,lag=frequency(TS_Beer))

kpss.test(diff_beer)
#------------To check variance of stability----------------------#

BoxCox.lambda(diff_beer)

# ----------------Detrend and Deseasonality-----------------------#

plot(diff_beer, col="Blue", main="Detrend and Deseasonality")

# ---------------Check for autocorrelation ---------------------#

acf(diff_beer)

pacf(diff_beer)

# -----------------Visualizing the trend----------------------#

Beer_Trend = ma(TS_Beer,order = 4,centre = T)

plot(TS_Beer, col="blue", main ="Quartely Beer Sales")

lines(Beer_Trend, col="red")

# Beer trend line


plot(Beer_Trend,col="red",main="Trend Line in Beer Sales series")

# Detrend beer time series

detrend_beer = TS_Beer - Beer_Trend

plot(detrend_beer, col="blue", main = "Time Series after removing the Trend Component")

# Stable data

matrix_beer = t(matrix(data = detrend_beer, nrow = 4))

matrix_beer

# Seasonality in beer

seasonal_beer = colMeans(matrix_beer, na.rm = T)

seasonal_beer

seasonal = rep(seasonal_beer,18)

plot.ts(seasonal, col="green", main="Seasonal Component of Time Series")


# Randomization in beer

random_beer = detrend_beer-seasonal

plot(random_beer,col="violet", main = "Random Noise")

# Reconstruct the original time series

reconstruct = Beer_Trend + seasonal + random_beer

plot(reconstruct,col="Blue", main = "Getting the original time series")

#----------------------Compare with original time series---------------------------#

# Decompose the beer_ts time series

decompose_beer <- decompose(TS_Beer)

plot(decompose_beer)
# Seasonal decomposition

sd_fitness <- stl(TS_Beer, s.window="period")

plot(sd_fitness)

#------------------------MODELLING TECHNIQUES--------------------------------#

# Winter Holt’s method

autoplot(diff_beer)

hw_beer <- hw(TS_Beer,seasonal = "additive")

summary(hw_beer)

autoplot(forecast(hw_beer,n.ahead=8))

# Decomposing the HW forecast)

states=hw_beer$model$states[,1:3]
colnames(states)= cbind('level','trend','seasonality')

plot(states,col="blue",main = "Decomposing the forecast")

# Residual Check

checkresiduals(hw_beer)

# Exponential Smoothing (ETS) Method

ETS_beer <- ets(TS_Beer)

ETS_beer

# ------------------FORCASTING FOR THE NEXT 2 YEARS ------------------#

ETS_beer %>% forecast(h=8) %>% autoplot()

You might also like