## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(collapse = TRUE, comment = "#>")

## -----------------------------------------------------------------------------
library(driftwatch)
sim <- dw_simulate(n_items = 120, n_windows = 30, mean_n = 70,
                   onset_range = c(5, 18), seed = 7)
table(sim$truth$type)

## -----------------------------------------------------------------------------
est <- dw_estimate(sim$responses, sim$bank)
round(est$z[1:4, 1:8], 2)

## -----------------------------------------------------------------------------
tu <- dw_tune(est, target = 0.02, n_rep = 4, seed = 1)
tu$h

## -----------------------------------------------------------------------------
mon <- dw_monitor(est, h = tu$h)
mon
table(alarm = mon$items$alarm, truth = sim$truth$type)

## -----------------------------------------------------------------------------
log <- dw_actions(mon, anchors = sim$bank$item[1:20], analyst = "psychometrics")
head(log[c("item", "alarm_window", "type", "magnitude", "action")])

## -----------------------------------------------------------------------------
flagged <- mon$items$item[mon$items$alarm]
drifted <- sim$truth$item[sim$truth$type != "stable"]
form <- c(head(drifted, 8), head(setdiff(sim$bank$item, drifted), 32))
last <- est$b_hat[, ncol(est$b_hat)]
dw_impact(form, sim$bank, sim$b_path[, ncol(sim$b_path)], flagged,
          recalibrated = last[flagged], cut = 0.5)

