Skip to content

Instantly share code, notes, and snippets.

@ChrisBeeley
Last active May 21, 2021 15:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ChrisBeeley/518321b7fb2e9e08c0c15f3081199416 to your computer and use it in GitHub Desktop.
Save ChrisBeeley/518321b7fb2e9e08c0c15f3081199416 to your computer and use it in GitHub Desktop.
forecasting.R
library(tidyverse)
# produce data
pharmacy_sub <- pharmacy %>%
filter(Site1 == "Site C", NSVCode == "Drug A")
daily_data <- phaRmacyForecasting:::make_tsibble(pharmacy_sub, frequency = "Daily")
daily_data <- daily_data %>%
mutate(inventory = 10000 - cumsum(quantity))
# produce forecast
for(day in 365 : nrow(daily_data)){
daily_forecast <- phaRmacyForecasting:::forecast_series(daily_data %>%
slice(1 : day), 28,
frequency = "Daily")
actual_forecast <- daily_forecast %>%
filter(.model == "SNAIVE") %>%
mutate(mean_demand = cumsum(.mean),
sd_demand = rnorm(n()))
step <- drug_quantity(forecast = actual_forecast, # simulated forecast for now
distribution = lead_time_dis,
min_stock = 100,
max_stock = 800,
p_min = 0.01,
p_max = 0.05,
inv_i = daily_data$inventory[day],
delta_pref = 14)
print(step$Q_i)
print("####")
print(step$Delta_i)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment