knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  fig.path = "man/figures/README-",
  out.width = "100%",
  message = FALSE,
  warning = FALSE
)

outfit

Project Status: WIP ? Initial development is in progress, but there has not yet been a stable, usable release suitable for the public. Build Status Licence CRAN_Status_Badge

Last-changedate

The goal of outfit is to detect outliers in multivariate functional data

Installation

You can install the released version of outfit from CRAN with:

install.packages("outfit")

And the development version from GitHub with:

# install.packages("devtools")
devtools::install_github("pridiltal/outfit")

Explore utilization_curves dataset

library(outfit)
library(tidyverse)
## basic example code
head(utilization_curves)

p <- utilization_curves %>%
  ggplot(aes(x = cpu, y = y, group = id, color= subspaceid)) +
  geom_line() +
  facet_wrap(~subspaceid, scales = "free_y", nrow = 2) +
  theme(text = element_text(size=10), legend.position = "bottom" )+
  scale_color_viridis_d()

print(p)

frq <- utilization_curves %>%
  dplyr::select(id, subspaceid) %>%
  unique() %>% 
  group_by(subspaceid) %>% 
  tally()

print(frq)

Outlying Series

types <- unique(utilization_curves$subspaceid)

out_data <- utilization_curves %>%
  filter(subspaceid %in% c("0 anomaly_location_shift", "0 anomaly_scale_shift", "0 anomaly_shape_shift", "0 anomaly_rw" ))

p <- out_data %>%
  ggplot(aes(x = cpu, y = y, group = subspaceid, color= subspaceid)) +
  geom_line() +
  facet_wrap(vars(subspaceid, id), scales = "free_y", nrow = 2) +
  theme(text = element_text(size=10), legend.position = "bottom" )+
  scale_color_viridis_d()
p

Extract features

library(GGally)
data <- utilization_curves %>%
  dplyr::select(id, y)
features <- outfit::get_features(data = data, family = "NO")

d <- utilization_curves %>%
  dplyr::select(id, subspaceid) %>%
  unique()

features <- dplyr::full_join(features, d, by = "id" )



p <- GGally::ggparcoord(features,
  columns = 2: (ncol(features)-1), groupColumn = ncol(features), order = "Outlying",
  showPoints = TRUE,
  alphaLines = 0.4, scale = "uniminmax"
) +
  #scale_color_brewer(palette = "RdYlGn") +
  scale_color_viridis_d() +
  theme(legend.position = "bottom") +
  xlab("Features") +
  ylab("Values")

# plotly::ggplotly(p)
print(p)
out <- stray::find_HDoutliers(features[, 2:(ncol(features)-1)], alpha = 0.01
)

utilization_curves %>%
  filter(id %in%(out$outliers)) %>%
  select(id, subspaceid) %>%
  unique()

score <- data.frame(id = 1:nrow(features), score = out$out_scores)

d <- utilization_curves %>%
  dplyr::select(id, subspaceid) %>%
  unique()

data_score <- full_join(d,score, by = "id")
data_score %>% arrange(desc(score)) %>% head(10)


pridiltal/outfit documentation built on Aug. 13, 2020, 12:32 a.m.