R/marginal_lift.R

Defines functions window_mean marginal_lift

library(tidyverse)

set.seed(20002)
x <- rnorm(100, mean = 0, sd = 1)
y <- x + sin(x)


window_mean <- function(x, window = 10) {
    out <- vector(mode = "numeric", length = length(x))
    for (i in seq_along(x)) {
        h <- max(1, i-window)
        x.window.mean <- mean(x[h:i])
        out[i] <- x.window.mean
    }
    return(out)
}

marginal_lift <- function(x, window = 10) {
    out <- vector(mode = "numeric", length = length(x))
    for (i in seq_along(x)) {
        sub1   <- `[`(x, max(1, i - window):max(1, i-1))
        sub2   <- `[`(x, max(1, i - window):max(1, i))
        out[i] <- mean(sub2) - mean(sub1)
    }
    return(out)
}

res.x <- marginal_lift(x)

d <- data.frame(position = seq_along(x), value = x, lift = res.x) %>%
    mutate(cum_sum = cumsum(value),
           cum_meam = cummean(value))
d %>% ggplot(aes(x = position, y = cum_sum, group = 1)) +
    geom_line() +
    geom_area(stat = "identity", fill = "lightblue", color = "blue")
burch-cm/fleetreportr documentation built on Nov. 4, 2019, 8:20 a.m.