diff options
Diffstat (limited to 'inst/bin/strats')
-rwxr-xr-x | inst/bin/strats | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/inst/bin/strats b/inst/bin/strats new file mode 100755 index 0000000..13e5994 --- /dev/null +++ b/inst/bin/strats @@ -0,0 +1,42 @@ +#!/usr/bin/env Rscript + +files <- commandArgs (trailingOnly = TRUE) + +`%>%` <- magrittr::`%>%` + +for (f in files) { + n_train <- basename (f) + splits <- strsplit (n_train, ".", fixed = TRUE)[[1]] + if (length (splits) != 2) { + cat (sprintf ("Skipping file %s.\n", f), file = stderr ()) + next + } + n_train <- splits[1] + n_train <- as.numeric (rev (strsplit (n_train, "_", fixed = TRUE)[[1]])[1]) + if (is.na (n_train)) { + cat (sprintf ("Skipping file %s.\n", f), file = stderr ()) + next + } + data <- as.matrix (readr::read_csv (f, col_names = FALSE)) + n <- nrow (data) + if (ncol (data) == 1) { + data <- cbind (data, data ^ 2, c (data[n], data[1:(n - 1)])) + } + data <- scale (data) + dependency <- exp (-0.1 * 1:100) + T_normal <- data[seq_len (n_train),, drop = FALSE] + T <- data[n_train - 1 + seq_len (nrow (data) - n_train),, drop = FALSE] + if (nrow (T_normal) > 1000) { + i <- ceiling (nrow (T_normal) * ((1:1000) / 1000)) + T_normal <- T_normal[i,, drop = FALSE] + } + tuning <- (strats::strats_tune (T, dependency, T_normal) + %>% dplyr::arrange (error)) + alpha <- tuning$alpha[1] + beta <- tuning$beta[1] + gamma <- tuning$gamma[1] + model <- strats::strats (T, alpha, beta, gamma, dependency, T_normal) + cat (sprintf ("%s: %s (%g, %g, %g)\n", f, + model$anomalies$observation[1], + alpha, beta, gamma)) +} |