1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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))
}
|