wald_path <- function(y, trim = 0.15) { # W(T1) for a break in the mean
n <- length(y); cs <- cumsum(y); W <- rep(NA_real_, n)
for (T1 in ceiling(trim * n):floor((1 - trim) * n)) {
m1 <- cs[T1] / T1; m2 <- (cs[n] - cs[T1]) / (n - T1)
rss <- sum((y[1:T1] - m1)^2) + sum((y[(T1 + 1):n] - m2)^2)
W[T1] <- (m2 - m1)^2 / (rss / (n - 2) * (1 / T1 + 1 / (n - T1)))
}
W
}
set.seed(2026)
y0 <- rnorm(200); y1 <- rnorm(200) + 0.6 * (seq_len(200) > 120) # break at 120
round(c(supW_no_break = max(wald_path(y0), na.rm = TRUE),
supW_break = max(wald_path(y1), na.rm = TRUE),
argmax_break = which.max(wald_path(y1))), 2)supW_no_break supW_break argmax_break
5.72 15.17 118.00


