library(tidyverse) library(zoo)
data <- read.csv(“C:/Users/asus/Downloads/ApplianceShipments.csv”)
ts_data <- ts(data$Shipments, start = c(1985, 1), frequency = 4)
train_data <- window(ts_data, end = c(1988, 4)) validation_data <- window(ts_data, start = c(1989, 1))
ma4 <- rollmean(train_data, k = 4, align = “right”)
plot(train_data, main = “Moving Average (w=4) of Appliance Shipments”, ylab = “Shipments (in 000s)”, xlab = “Time”) lines(ma4, col = “blue”)
forecast_q1_1990 <- tail(ma4, 1) forecast_q1_1990
forecast_q1_1991 <- mean(tail(ma4, 4)) forecast_q1_1991
hw_model <- HoltWinters(train_data)
pred_hw <- predict(hw_model, n.ahead = length(validation_data)) MAPE_hw <- mean(abs((validation_data - pred_hw) / validation_data)) * 100 MAPE_hw
time_index <- as.numeric(time(train_data)) seasonal_factor <- factor(cycle(train_data))
reg_model <- lm(train_data ~ time_index + seasonal_factor)
new_data <- data.frame( time_index = as.numeric(time(validation_data)), seasonal_factor = factor(cycle(validation_data), levels = levels(seasonal_factor)) )
pred_reg <- predict(reg_model, newdata = new_data)
MAPE_reg <- mean(abs((validation_data - pred_reg) / validation_data)) * 100 MAPE_reg