For the case where one has to compute the outliers quickly, one could use the idea of Rob Hyndman and Mahito Sugiyama ( https://github.com/BorgwardtLab/sampling-outlier-detection , library(spoutlier), function qsp ) to compute the outliers as follows: library(spoutlier) rapidtsoutliers <- function(x,plot=FALSE,seed=123) { set.seed(seed) x <- as.numeric(x) tt <- 1:length(x) qspscore <- qsp(x) limit <- quantile(qspscore,prob=c(0.95)) score <- pmax((qspscore - limit),0) if(plot) { plot(x,type="l") x2 <- ts(rep(NA,length(x))) x2[score>0] <- x[score>0] tsp(x2) <- tsp(x) points(x2,pch=19,col="red") return(invisible(score)) } else return(score) }