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