## ----include = FALSE---------------------------------------------------------- knitr::opts_chunk$set(collapse = TRUE, comment = "#>", fig.width = 7, fig.height = 4.2) ## ----setup, message = FALSE--------------------------------------------------- library(shewhartr) library(ggplot2) library(dplyr) ## ----------------------------------------------------------------------------- # A 0.5-sigma sustained shift after observation 40 set.seed(2026) n <- 80 shift <- c(rnorm(40, mean = 0, sd = 1), rnorm(40, mean = 0.5, sd = 1)) df <- tibble::tibble(t = seq_len(n), y = shift) imr <- shewhart_i_mr(df, value = y, index = t) ewma <- shewhart_ewma(df, value = y, index = t) cusum <- shewhart_cusum(df, value = y, index = t) # Position of the first alarm under each chart first_alarm <- function(fit) { hits <- which(fit$augmented$.flag_any) if (length(hits) == 0L) NA_integer_ else min(hits) } tibble::tibble( chart = c("I-MR", "EWMA", "CUSUM"), alarm = c(first_alarm(imr), first_alarm(ewma), first_alarm(cusum)) ) ## ----------------------------------------------------------------------------- fit <- shewhart_ewma(df, value = y, index = t, lambda = 0.2, L = 2.7) fit autoplot(fit) ## ----------------------------------------------------------------------------- shewhart_ewma(df, value = y, index = t, steady_state = TRUE) |> autoplot() ## ----------------------------------------------------------------------------- fit <- shewhart_cusum(df, value = y, index = t, k = 0.5, h = 4) fit autoplot(fit) ## ----------------------------------------------------------------------------- set.seed(1) baseline <- tibble::tibble(t = 1:60, y = rnorm(60, mean = 100, sd = 2)) mu_hat <- mean(baseline$y) sd_hat <- sd(baseline$y) new_data <- tibble::tibble( t = 61:100, y = rnorm(40, mean = 100.8, sd = 2) # 0.4 sigma shift ) shewhart_ewma(new_data, value = y, index = t, target = mu_hat, sigma = sd_hat, lambda = 0.2, L = 2.7) |> autoplot()