summaryrefslogtreecommitdiff
path: root/inst/bin/strats
diff options
context:
space:
mode:
Diffstat (limited to 'inst/bin/strats')
-rwxr-xr-xinst/bin/strats42
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))
+}