A period change compares the current observation with an earlier point in the same series.

Program

Play the script to change the lookback distance and see the difference.

periods_back
period_change.R
Replay: real traced execution (multi-file project)
periods_back <- 1
values <- c(100, 108, 111, 120)
current <- values[length(values)]
previous <- values[length(values) - periods_back]
change <- current - previous
label <- paste("change", change, sep = ":")
cat(label, "\n", sep = "")
periods_back <- 2
values <- c(100, 108, 111, 120)
current <- values[length(values)]
previous <- values[length(values) - periods_back]
change <- current - previous
label <- paste("change", change, sep = ":")
cat(label, "\n", sep = "")
periods_back <- 3
values <- c(100, 108, 111, 120)
current <- values[length(values)]
previous <- values[length(values) - periods_back]
change <- current - previous
label <- paste("change", change, sep = ":")
cat(label, "\n", sep = "")
  1. periods_back ← 1

    1periods_back <- 12values <- c(100, 108, 111, 120)
    values this step1periods_back
  2. values ← 100, 108, 111, 120

    1periods_back <- 12values <- c(100, 108, 111, 120)3current <- values[length(values)]
    values this step100, 108, 111, 120values
  3. current ← 120

    2values <- c(100, 108, 111, 120)3current <- values[length(values)]4previous <- values[length(values) - periods_back]
    values this step120currentlatest is lastvalues
  4. previous ← 111

    3current <- values[length(values)]4previous <- values[length(values) - periods_back]5change <- current - previous
    values this step111previous1periods_back
  5. change ← 9

    4previous <- values[length(values) - periods_back]5change <- current - previous6label <- paste("change", change, sep = ":")
    values this step9change120current111previous
  6. label ← change:9

    5change <- current - previous6label <- paste("change", change, sep = ":")7cat(label, "\n", sep = "")
    values this stepchange:9label9change
  7. cat(label, " ", sep = "")

    6label <- paste("change", change, sep = ":")7cat(label, "\n", sep = "")
    outputchange:9
    values this stepchange:9label
  1. periods_back ← 2

    1periods_back <- 22values <- c(100, 108, 111, 120)
    values this step2periods_back
  2. values ← 100, 108, 111, 120

    1periods_back <- 22values <- c(100, 108, 111, 120)3current <- values[length(values)]
    values this step100, 108, 111, 120values
  3. current ← 120

    2values <- c(100, 108, 111, 120)3current <- values[length(values)]4previous <- values[length(values) - periods_back]
    values this step120currentlatest is lastvalues
  4. previous ← 108

    3current <- values[length(values)]4previous <- values[length(values) - periods_back]5change <- current - previous
    values this step108previous2periods_back
  5. change ← 12

    4previous <- values[length(values) - periods_back]5change <- current - previous6label <- paste("change", change, sep = ":")
    values this step12change120current108previous
  6. label ← change:12

    5change <- current - previous6label <- paste("change", change, sep = ":")7cat(label, "\n", sep = "")
    values this stepchange:12label12change
  7. cat(label, " ", sep = "")

    6label <- paste("change", change, sep = ":")7cat(label, "\n", sep = "")
    outputchange:12
    values this stepchange:12label
  1. periods_back ← 3

    1periods_back <- 32values <- c(100, 108, 111, 120)
    values this step3periods_back
  2. values ← 100, 108, 111, 120

    1periods_back <- 32values <- c(100, 108, 111, 120)3current <- values[length(values)]
    values this step100, 108, 111, 120values
  3. current ← 120

    2values <- c(100, 108, 111, 120)3current <- values[length(values)]4previous <- values[length(values) - periods_back]
    values this step120currentlatest is lastvalues
  4. previous ← 100

    3current <- values[length(values)]4previous <- values[length(values) - periods_back]5change <- current - previous
    values this step100previous3periods_back
  5. change ← 20

    4previous <- values[length(values) - periods_back]5change <- current - previous6label <- paste("change", change, sep = ":")
    values this step20change120current100previous
  6. label ← change:20

    5change <- current - previous6label <- paste("change", change, sep = ":")7cat(label, "\n", sep = "")
    values this stepchange:20label20change
  7. cat(label, " ", sep = "")

    6label <- paste("change", change, sep = ":")7cat(label, "\n", sep = "")
    outputchange:20
    values this stepchange:20label
current The current value is the last observation in the ordered vector.
lookback `periods_back` selects how far back to compare.
difference `current - previous` is the absolute period change.