Base Chunks
Libraries
## Loading required package: fredr
## Warning: package 'fredr' was built under R version 4.3.2
## Loading required package: fpp3
## Warning: package 'fpp3' was built under R version 4.3.2
## ── Attaching packages ────────────────────────────────────────────── fpp3 0.5 ──
## ✔ tibble 3.2.1 ✔ tsibble 1.1.4
## ✔ dplyr 1.1.4 ✔ tsibbledata 0.4.1
## ✔ tidyr 1.3.0 ✔ feasts 0.3.2
## ✔ lubridate 1.9.3 ✔ fable 0.3.3
## ✔ ggplot2 3.5.1 ✔ fabletools 0.4.2
## Warning: package 'tibble' was built under R version 4.3.2
## Warning: package 'dplyr' was built under R version 4.3.2
## Warning: package 'tidyr' was built under R version 4.3.2
## Warning: package 'lubridate' was built under R version 4.3.2
## Warning: package 'ggplot2' was built under R version 4.3.3
## Warning: package 'tsibble' was built under R version 4.3.3
## Warning: package 'tsibbledata' was built under R version 4.3.2
## Warning: package 'feasts' was built under R version 4.3.3
## Warning: package 'fabletools' was built under R version 4.3.3
## Warning: package 'fable' was built under R version 4.3.2
## ── Conflicts ───────────────────────────────────────────────── fpp3_conflicts ──
## ✖ lubridate::date() masks base::date()
## ✖ dplyr::filter() masks stats::filter()
## ✖ tsibble::intersect() masks base::intersect()
## ✖ tsibble::interval() masks lubridate::interval()
## ✖ dplyr::lag() masks stats::lag()
## ✖ tsibble::setdiff() masks base::setdiff()
## ✖ tsibble::union() masks base::union()
API Key (Hidden)
Load Data
mydata=read.csv('c:/users/lfult/downloads/solar.csv')
mydata=mydata %>% mutate(date = yearmonth(Date))
mydata=as_tsibble(mydata, index=date)
Convert to tsibble
ts=as_tsibble(mydata, index = date)
train=as_tsibble(ts[1:252,], index=date)
test=as_tsibble(ts[253:nrow(ts),], index=date)
Build Models
m1=train %>%model(ARIMA(Solar.Energy))
m2=train %>% model(ETS(Solar.Energy))
Plots
## Plot variable not specified, automatically selected `.vars = Solar.Energy`

ts%>%ACF(Solar.Energy)%>%autoplot()

ts%>%PACF(Solar.Energy)%>%autoplot()

Forecast
f1=m1 %>% forecast(test)
f2=m2 %>% forecast(test)
Accuracy on Test Set
a1=accuracy(f1, test)
a2=accuracy(f2, test)
rbind(a1, a2)
## # A tibble: 2 × 10
## .model .type ME RMSE MAE MPE MAPE MASE RMSSE ACF1
## <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 ARIMA(Solar.Energy) Test 2.93 3.81 2.94 17.3 17.3 NaN NaN 0.942
## 2 ETS(Solar.Energy) Test 2.01 2.73 2.01 11.9 12.0 NaN NaN 0.944
Report
## Series: Solar.Energy
## Model: ARIMA(0,1,1)(0,1,0)[12]
##
## Coefficients:
## ma1
## 0.1150
## s.e. 0.0596
##
## sigma^2 estimated as 0.01272: log likelihood=182.93
## AIC=-361.85 AICc=-361.8 BIC=-354.9
## # A mable: 1 x 1
## `ARIMA(Solar.Energy)`
## <model>
## 1 <ARIMA(0,1,1)(0,1,0)[12]>
## Series: Solar.Energy
## Model: ETS(M,A,M)
## Smoothing parameters:
## alpha = 0.2686296
## beta = 0.0233078
## gamma = 0.6602268
##
## Initial states:
## l[0] b[0] s[0] s[-1] s[-2] s[-3] s[-4] s[-5]
## 5.258423 0.001545375 0.7897562 0.8289165 1.019765 1.129126 1.250015 1.253833
## s[-6] s[-7] s[-8] s[-9] s[-10] s[-11]
## 1.204373 1.182043 1.068159 0.9492061 0.6842931 0.6405152
##
## sigma^2: 3e-04
##
## AIC AICc BIC
## 226.5055 229.1209 286.5058
## # A mable: 1 x 1
## `ETS(Solar.Energy)`
## <model>
## 1 <ETS(M,A,M)>
Plot
# Plot the forecasts
f1df <- as.data.frame(f1)
f2df <- as.data.frame(f2)
tsdf <- as.data.frame(ts)
# Plot using ggplot2
ggplot(tsdf, aes(x = date, y = Solar.Energy)) +
geom_line(color = "black", linewidth = .5) +
geom_line(data = f1df, aes(x = date, y = .mean, color = "ARIMA Forecast"), linetype = "dashed") +
geom_line(data = f2df, aes(x = date, y = .mean, color = "ETS Forecast"), linetype = "dotted") +
ggtitle("Forecast Comparison") +
xlab("Year") +
ylab("Value") +
scale_color_manual(name = "Forecast",
values = c("ARIMA Forecast" = "blue", "ETS Forecast" = "red")) +
theme_minimal() +
theme(legend.position = "bottom")
