Long gone (can) be the days of forecasting simply by dropping a trendline on some data. This example uses the Holt-Winters method (which uses time-series decomposition – a topic you can jump ahead to if you must) to apply some smoothing and seasonality to the base data to build a forecast that includes the likely range of values.


# Load up a few libraries we'll need to retrieve and work with the data
library(highcharter)
library(googleAnalyticsR)
library(forecast)

# Set the view ID that we'll be using. You can get the view ID for a specific view
# that you have access to by logging into the Google Analytics Query Explorer at
# https://ga-dev-tools.appspot.com/query-explorer/. It's the "ids" value.
view_id <- 81416156

# Authorize Google Analytics
ga_auth()

# Get the data from Google Analytics
gadata <- google_analytics_4(view_id, 
                             date_range = c("2013-08-01", "2016-07-31"),
                             metrics = "sessions", 
                             dimensions = c("yearMonth"),
                             max = -1)
                             
# Convert the data to be officially "time-series" data
ga_ts <- ts(gadata$sessions, start = c(2013,08), end = c(2016,07), frequency = 12)

# Compute the Holt-Winters filtering for the data
forecast1 <- HoltWinters(ga_ts)

# Generate a forecast for next 12 months of the blog sessions
hchart(forecast(forecast1, h = 12))