###Method 1 :Moving Average and Exponential smoothing approach### # Part A. Moving Average
library(dplyr)
library(zoo)
#Time Series data
df <- data.frame(month=c(1,2,3,4,5,6,7,8,9,10,11,12),
sales =c(240,352,230,260,280,322,220,310,240,310,240,230))
# Descriptive Statistics
summary(df)
#Interpretation: The average sales over 6 week period is 14.50
#Time series plot
plot(df$month, df$sales, type = "o", col ="blue", xlab = "Month", ylab = "Sales",
main = "Alabama Building Contracts in $Millions")
#Interpretation: The time series plot exhibits a trend pattern as
# the points tend to stray away from the mean
# Part A. Moving Average
#Manually calculate the three week moving average
df$avg_sales3 <- c(NA,NA,NA,
df$sales[1] + df$sales[2] + df$sales[3] / 3,
df$sales[2] + df$sales[3] + df$sales[4] / 3,
df$sales[3] + df$sales[4] + df$sales[5] / 3,
df$sales[4] + df$sales[5] + df$sales[6] / 3,
df$sales[5] + df$sales[6] + df$sales[7] / 3,
df$sales[6] + df$sales[7] + df$sales[8] / 3,
df$sales[7] + df$sales[8] + df$sales[9] / 3,
df$sales[8] + df$sales[9] + df$sales[10] / 3,
df$sales[9] + df$sales[10] + df$sales[11] / 3
)
#Calculate the squared errors (only for weeks where moving average is available)
df <- df %>%
mutate(squared_error = ifelse(is.na(avg_sales3), NA, (sales - avg_sales3)^2)
)
#Compute MSE (excluding the initial weeks with NA)
mse <- mean(df$squared_error, na.rm = TRUE)
mse #Output the MSE = 143065.2
#Part B Exponential Smoothing
# Note: were using the same data from line 13
alpha <- 0.2
exp_smooth <- rep(NA, length(df$sales))
exp_smooth[1] <- df$sales[1] #starting point
for(i in 2 : length(df$sales)) {
exp_smooth[i] <-alpha * df$sales [i-1] +(1 - alpha) *exp_smooth[i-1]
}
mse_exp_smooth <- mean((df$sales[2:12] - exp_smooth[2:12]^2)
mse_exp_smooth #Output MSE = -67117.24
#Comparison
better_method <- ifelse(mse < mse_exp_smooth, "Three-Month Moving Average", "Exponential Smoothing")
#Results
list(
MSE_Moving_Average = mse,
MSE_Exponential_Smoothing = mse_exp_smooth,
Better_Method = better_method
)
#Interpretation: Exponential smoothing has better MSE when compared