Time Series Summaries
Rolling Average
Summarize Recent Values
A rolling average smooths the most recent observations in an ordered series.
Program
Play the script to change the window size and see how the recent average moves.
rolling_average.R
Replay: real traced execution (multi-file project)
window <- 3
sales <- c(10, 12, 15, 18, 21)
recent <- tail(sales, window)
average <- round(mean(recent), 1)
label <- paste("avg", average, sep = ":")
cat(label, "\n", sep = "")
window <- 2
sales <- c(10, 12, 15, 18, 21)
recent <- tail(sales, window)
average <- round(mean(recent), 1)
label <- paste("avg", average, sep = ":")
cat(label, "\n", sep = "")
window <- 4
sales <- c(10, 12, 15, 18, 21)
recent <- tail(sales, window)
average <- round(mean(recent), 1)
label <- paste("avg", average, sep = ":")
cat(label, "\n", sep = "")
window ← 3
1window <- 32sales <- c(10, 12, 15, 18, 21)values this step3windowsales ← 10, 12, 15, 18, 21
1window <- 32sales <- c(10, 12, 15, 18, 21)3recent <- tail(sales, window)values this step10, 12, 15, 18, 21salesrecent ← 15, 18, 21
2sales <- c(10, 12, 15, 18, 21)3recent <- tail(sales, window)4average <- round(mean(recent), 1)values this step15, 18, 21recent5 observationssales3windowaverage ← 18
3recent <- tail(sales, window)4average <- round(mean(recent), 1)5label <- paste("avg", average, sep = ":")values this step18average15, 18, 21recentlabel ← avg:18
4average <- round(mean(recent), 1)5label <- paste("avg", average, sep = ":")6cat(label, "\n", sep = "")values this stepavg:18label18averagecat(label, " ", sep = "")
5label <- paste("avg", average, sep = ":")6cat(label, "\n", sep = "")outputavg:18values this stepavg:18label
window ← 2
1window <- 22sales <- c(10, 12, 15, 18, 21)values this step2windowsales ← 10, 12, 15, 18, 21
1window <- 22sales <- c(10, 12, 15, 18, 21)3recent <- tail(sales, window)values this step10, 12, 15, 18, 21salesrecent ← 18, 21
2sales <- c(10, 12, 15, 18, 21)3recent <- tail(sales, window)4average <- round(mean(recent), 1)values this step18, 21recent5 observationssales2windowaverage ← 19.5
3recent <- tail(sales, window)4average <- round(mean(recent), 1)5label <- paste("avg", average, sep = ":")values this step19.5average18, 21recentlabel ← avg:19.5
4average <- round(mean(recent), 1)5label <- paste("avg", average, sep = ":")6cat(label, "\n", sep = "")values this stepavg:19.5label19.5averagecat(label, " ", sep = "")
5label <- paste("avg", average, sep = ":")6cat(label, "\n", sep = "")outputavg:19.5values this stepavg:19.5label
window ← 4
1window <- 42sales <- c(10, 12, 15, 18, 21)values this step4windowsales ← 10, 12, 15, 18, 21
1window <- 42sales <- c(10, 12, 15, 18, 21)3recent <- tail(sales, window)values this step10, 12, 15, 18, 21salesrecent ← 12, 15, 18, 21
2sales <- c(10, 12, 15, 18, 21)3recent <- tail(sales, window)4average <- round(mean(recent), 1)values this step12, 15, 18, 21recent5 observationssales4windowaverage ← 16.5
3recent <- tail(sales, window)4average <- round(mean(recent), 1)5label <- paste("avg", average, sep = ":")values this step16.5average12, 15, 18, 21recentlabel ← avg:16.5
4average <- round(mean(recent), 1)5label <- paste("avg", average, sep = ":")6cat(label, "\n", sep = "")values this stepavg:16.5label16.5averagecat(label, " ", sep = "")
5label <- paste("avg", average, sep = ":")6cat(label, "\n", sep = "")outputavg:16.5values this stepavg:16.5label
ordered series
The vector order represents time order.
window
`tail(sales, window)` selects the most recent observations.
smoothing
`mean(recent)` summarizes the current window.