Problem 1: Time Series Data
week <-1:6
values <- c(17, 13, 15, 11, 17, 14)
Forecast for each week using the naive method
forecast <- values[-length(values)]
actual <- values[-1]
Mean Absolute Error (MAE)
mae <- mean(abs(actual - forecast))
mae
## [1] 3.8
Mean Squared Error (MSE)
mse <- mean((actual - forecast)^2)
mse
## [1] 16.2
Mean Absolute Percentage Error (MAPE)
mape <- mean(abs((actual - forecast) / actual) * 100)
mape
## [1] 27.43778
Forecast for Week 7 (naive method: most recent value)
forecast_week7 <- tail(values, 1)
forecast_week7
## [1] 14
Problem 2: Monthly Data
library(ggplot2)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
months <- 1:12
contracts <- c(240, 352, 230, 260, 280, 322, 220, 310, 240, 310, 240, 230)
df1<-data.frame(months, contracts)
ggplot(df1, aes(x=months, y=contracts))+
geom_line()+
geom_point()+
xlab("months")+
ylab("contracts")+
ggtitle("Time Series Plot of Building Contracts")

df1$contracts_average <- c(NA, NA, NA,
(df1$contracts[1] + df1$contracts[2] + df1$contracts[3]) / 3,
(df1$contracts[2] + df1$contracts[3] + df1$contracts[4]) / 3,
(df1$contracts[3] + df1$contracts[4] + df1$contracts[5]) / 3,
(df1$contracts[4] + df1$contracts[5] + df1$contracts[6]) / 3,
(df1$contracts[5] + df1$contracts[6] + df1$contracts[7]) / 3,
(df1$contracts[6] + df1$contracts[7] + df1$contracts[8]) / 3,
(df1$contracts[7] + df1$contracts[8] + df1$contracts[9]) / 3,
(df1$contracts[8] + df1$contracts[9] + df1$contracts[10]) / 3,
(df1$contracts[9] + df1$contracts[10] + df1$contracts[11]) / 3
)
df1 <- df1 %>%
mutate(squared_error = (contracts - contracts_average)^2)
# Compute Mean Squared Error (MSE)
mse <- mean(df1$squared_error, na.rm = TRUE)
mse
## [1] 2040.444
Exponential Smoothing
alpha<-0.2
exp_smooth<-rep(NA, length(df1$contracts))
exp_smooth[1]<-df1$contracts[1]
for(i in 2: length(df1$contracts)){
exp_smooth[i]<-alpha*df1$contracts[i-1]+(1-alpha)*exp_smooth[i-1]
}
mse_exp_smooth<-mean((df1$contracts[2:12]-exp_smooth[2:12])^2)
mse_exp_smooth
## [1] 2593.762
better_method<- ifelse(mse< mse_exp_smooth, "Three-month moving average", "Exponential Smoothing")
better_method
## [1] "Three-month moving average"
library(readxl)
df <- read_excel("Mortgage.xlsx")
head(df)
## # A tibble: 6 × 3
## Year Period Interest_Rate
## <dttm> <dbl> <dbl>
## 1 2000-01-01 00:00:00 1 8.05
## 2 2001-01-01 00:00:00 2 6.97
## 3 2002-01-01 00:00:00 3 6.54
## 4 2003-01-01 00:00:00 4 5.83
## 5 2004-01-01 00:00:00 5 5.84
## 6 2005-01-01 00:00:00 6 5.87
ggplot(df, aes(x=Period, y=Interest_Rate))+
geom_line()+
geom_point()+
xlab("Period")+
ylab("Interest_Rate")+
ggtitle("Time Series Plot of Fixed-rate Mortgage")

model<-lm(Interest_Rate~Period,data=df)
summary(model)
##
## Call:
## lm(formula = Interest_Rate ~ Period, data = df)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.3622 -0.7212 -0.2823 0.5015 3.1847
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 6.69541 0.43776 15.295 3.32e-13 ***
## Period -0.12890 0.03064 -4.207 0.000364 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.039 on 22 degrees of freedom
## Multiple R-squared: 0.4459, Adjusted R-squared: 0.4207
## F-statistic: 17.7 on 1 and 22 DF, p-value: 0.0003637
forecast_period_25<-predict(model,newdata=data.frame(Period =25))
forecast_period_25
## 1
## 3.472942