After the decomposition is obtained and a grouping is selected using a variety of techniques (see the Functional Singular Spectrum Analysis: Functional Time Series Decomposition webpage for more information), the user may choose to perform forecasting of the FTS. The fforecast function takes an argument of class fssa, an argument that captures the selected grouping as expressed in a list, and the forecast length. The function returns an object of class fforecast. We note that currently, forecasting is available only for FTS variables observed over a one-dimensional domain and forecasting FTS variables observed over a two-dimensional domain is under development. The following code executes the forecasting process applied to the decompositions of the call center data to predict three weeks into the future (length is 21 days). As a reminder the suggested grouping for the call center funts is one by itself, two with three, four with five, and six with seven.

## Call center data ##
gr_C <- list(1, 2:3, 4:5, 6:7, 1:7)
Q_C <- fforecast(U_C, gr_C, len = 21)

The following plots show the individual forecasted signals as according to the specified groups, the original FTS, and the three weeks into the future forecast using all of the suggested eigentriples of interest together. All forecasts were performed using the FSSA recurrent forecasting algorithm. Alternatively the user can leverage the plot method of the fforecast object to see the forecasts, specified by the groupings, in successive plots.

## Call center data ##
plotly_funts(Q_C[[1]], main = "Call Center Mean Component Forecast",xlab = "Time (6 minutes aggregated)",
ylab = "Sqrt of Call Numbers",type="line",xticklabels = list(c("00:00","06:00","12:00","18:00","24:00")),xticklocs =
 list(c(1,60,120,180,240)))
plotly_funts(Q_C[[2]], main = "Call Center First Periodic Component Forecast",xlab = "Time (6 minutes aggregated)",
ylab = "Sqrt of Call Numbers",type="line",xticklabels = list(c("00:00","06:00","12:00","18:00","24:00")),xticklocs =
 list(c(1,60,120,180,240)))
plotly_funts(Q_C[[3]], main = "Call Center Second Periodic Component Forecast",xlab = "Time (6 minutes aggregated)",
ylab = "Sqrt of Call Numbers",type="line",xticklabels = list(c("00:00","06:00","12:00","18:00","24:00")),xticklocs =
 list(c(1,60,120,180,240)))
plotly_funts(Q_C[[4]], main = "Call Center Third Periodic Component Forecast",xlab = "Time (6 minutes aggregated)",
ylab = "Sqrt of Call Numbers",type="line",xticklabels = list(c("00:00","06:00","12:00","18:00","24:00")),xticklocs =
 list(c(1,60,120,180,240)))
plotly_funts(Y_C, main = c("Call Center Data Line Plot"),xlab = "Time (6 minutes aggregated)",
ylab = "Sqrt of Call Numbers",type="line",xticklabels = list(c("00:00","06:00","12:00","18:00","24:00")),xticklocs =
 list(c(1,60,120,180,240)))
plotly_funts(Q_C[[5]], main = "Call Center All Chosen Eigentriples Forecast",xlab = "Time (6 minutes aggregated)",
ylab = "Sqrt of Call Numbers",type="line",xticklabels = list(c("00:00","06:00","12:00","18:00","24:00")),xticklocs =
 list(c(1,60,120,180,240)))

In the previous plots, the user can investigate the patterns present in different forecasts. In particular, the forecast using all of the chosen eigentriples together (the group consisting of eigentriples one through seven) reflects that the FSSA-based forecasting technique seems to do well in predicting the mean and periodic behaviors in the call center FTS. In addition, the fpredinterval function may be leveraged to obtain bootstrap prediction intervals to give the user a measure of goodness-of-prediction.