Performs a t-score test for outliers.

outlier_tscore(
  x,
  mask = !is.na(x),
  threshold = c(0.9, 0.95),
  return.score = FALSE
)

Arguments

x

A vector of data.

mask

A logical vector that defines which values in x will used when computing statistics. Useful when a subset of quality-assured data is available. Default mask is non-NA Values.

threshold

A length-two vector identifying thresholds for "mild" and "extreme" outliers.

return.score

if TRUE, return the numeric outlier score. If FALSE, return an ordered factor classifying the observations as one of "not outlier" (1), "mild outlier" (2), or "extreme outlier" (3).

Details

The values of threshold identify the quantiles of the t-distribution used to identify mild and extreme outliers. Default values are 0.9 for "mild" outliers and 0.95 for "extreme" outliers.

The t-score is equivalent to the z-score for sample sizes greater than 30.

Examples

x = seq(0, 34, by = 0.25)*pi noise = rnorm(length(x), mean = 1, sd = 3) y = sin(x) + noise mask = noise < 1 outlier_tscore(y)
#> [1] not outlier mild outlier not outlier not outlier #> [5] not outlier not outlier not outlier not outlier #> [9] not outlier not outlier not outlier not outlier #> [13] not outlier not outlier not outlier not outlier #> [17] not outlier not outlier mild outlier not outlier #> [21] not outlier not outlier not outlier mild outlier #> [25] not outlier not outlier not outlier not outlier #> [29] extreme outlier mild outlier mild outlier not outlier #> [33] not outlier not outlier not outlier extreme outlier #> [37] not outlier not outlier extreme outlier mild outlier #> [41] not outlier not outlier mild outlier not outlier #> [45] not outlier not outlier extreme outlier not outlier #> [49] not outlier mild outlier mild outlier not outlier #> [53] mild outlier extreme outlier not outlier not outlier #> [57] mild outlier not outlier not outlier not outlier #> [61] not outlier not outlier mild outlier not outlier #> [65] not outlier not outlier not outlier not outlier #> [69] not outlier not outlier not outlier not outlier #> [73] not outlier not outlier mild outlier not outlier #> [77] not outlier not outlier not outlier not outlier #> [81] not outlier not outlier not outlier not outlier #> [85] not outlier mild outlier not outlier not outlier #> [89] not outlier not outlier not outlier not outlier #> [93] not outlier mild outlier not outlier not outlier #> [97] not outlier not outlier not outlier not outlier #> [101] extreme outlier not outlier mild outlier not outlier #> [105] not outlier not outlier not outlier not outlier #> [109] not outlier not outlier not outlier not outlier #> [113] not outlier not outlier not outlier mild outlier #> [117] not outlier not outlier not outlier extreme outlier #> [121] not outlier extreme outlier not outlier not outlier #> [125] not outlier extreme outlier not outlier not outlier #> [129] mild outlier not outlier not outlier extreme outlier #> [133] not outlier not outlier not outlier not outlier #> [137] extreme outlier #> Levels: not outlier < not evaluated < mild outlier < extreme outlier
outlier_tscore(y, mask)
#> [1] extreme outlier extreme outlier extreme outlier extreme outlier #> [5] not outlier extreme outlier extreme outlier not outlier #> [9] extreme outlier extreme outlier not outlier extreme outlier #> [13] not outlier not outlier not outlier extreme outlier #> [17] not outlier extreme outlier extreme outlier extreme outlier #> [21] not outlier not outlier extreme outlier extreme outlier #> [25] not outlier not outlier mild outlier mild outlier #> [29] mild outlier not outlier not outlier not outlier #> [33] not outlier not outlier not outlier mild outlier #> [37] not outlier extreme outlier extreme outlier extreme outlier #> [41] not outlier extreme outlier not outlier extreme outlier #> [45] not outlier not outlier extreme outlier not outlier #> [49] extreme outlier extreme outlier extreme outlier not outlier #> [53] not outlier extreme outlier not outlier extreme outlier #> [57] extreme outlier not outlier mild outlier mild outlier #> [61] not outlier not outlier mild outlier not outlier #> [65] not outlier not outlier extreme outlier extreme outlier #> [69] mild outlier extreme outlier extreme outlier not outlier #> [73] extreme outlier not outlier extreme outlier mild outlier #> [77] extreme outlier not outlier extreme outlier not outlier #> [81] extreme outlier mild outlier extreme outlier not outlier #> [85] not outlier extreme outlier mild outlier extreme outlier #> [89] mild outlier not outlier extreme outlier extreme outlier #> [93] extreme outlier extreme outlier not outlier not outlier #> [97] not outlier not outlier not outlier not outlier #> [101] mild outlier not outlier not outlier mild outlier #> [105] extreme outlier mild outlier extreme outlier extreme outlier #> [109] mild outlier extreme outlier extreme outlier not outlier #> [113] not outlier not outlier not outlier extreme outlier #> [117] mild outlier extreme outlier extreme outlier extreme outlier #> [121] not outlier extreme outlier extreme outlier extreme outlier #> [125] not outlier extreme outlier not outlier not outlier #> [129] extreme outlier extreme outlier not outlier extreme outlier #> [133] extreme outlier not outlier not outlier not outlier #> [137] extreme outlier #> Levels: not outlier < not evaluated < mild outlier < extreme outlier
outlier_tscore(y, mask, threshold = c(0.8, 0.9))
#> [1] extreme outlier extreme outlier extreme outlier extreme outlier #> [5] not outlier extreme outlier extreme outlier not outlier #> [9] extreme outlier extreme outlier mild outlier extreme outlier #> [13] not outlier not outlier not outlier extreme outlier #> [17] not outlier extreme outlier extreme outlier extreme outlier #> [21] not outlier not outlier extreme outlier extreme outlier #> [25] not outlier mild outlier extreme outlier extreme outlier #> [29] extreme outlier mild outlier mild outlier not outlier #> [33] mild outlier mild outlier mild outlier extreme outlier #> [37] not outlier extreme outlier extreme outlier extreme outlier #> [41] mild outlier extreme outlier mild outlier extreme outlier #> [45] not outlier not outlier extreme outlier mild outlier #> [49] extreme outlier extreme outlier extreme outlier not outlier #> [53] mild outlier extreme outlier mild outlier extreme outlier #> [57] extreme outlier not outlier extreme outlier extreme outlier #> [61] not outlier not outlier extreme outlier not outlier #> [65] not outlier not outlier extreme outlier extreme outlier #> [69] extreme outlier extreme outlier extreme outlier not outlier #> [73] extreme outlier not outlier extreme outlier extreme outlier #> [77] extreme outlier not outlier extreme outlier mild outlier #> [81] extreme outlier extreme outlier extreme outlier not outlier #> [85] not outlier extreme outlier extreme outlier extreme outlier #> [89] extreme outlier mild outlier extreme outlier extreme outlier #> [93] extreme outlier extreme outlier not outlier mild outlier #> [97] mild outlier not outlier not outlier not outlier #> [101] extreme outlier not outlier mild outlier extreme outlier #> [105] extreme outlier extreme outlier extreme outlier extreme outlier #> [109] extreme outlier extreme outlier extreme outlier not outlier #> [113] not outlier mild outlier not outlier extreme outlier #> [117] extreme outlier extreme outlier extreme outlier extreme outlier #> [121] not outlier extreme outlier extreme outlier extreme outlier #> [125] not outlier extreme outlier not outlier mild outlier #> [129] extreme outlier extreme outlier not outlier extreme outlier #> [133] extreme outlier not outlier mild outlier mild outlier #> [137] extreme outlier #> Levels: not outlier < not evaluated < mild outlier < extreme outlier
outlier_tscore(y, return.score = TRUE)
#> [1] 0.41834366 1.42135160 0.42469896 0.27419651 -0.98798801 0.27586714 #> [7] 0.57608687 -0.84162554 0.27920835 0.95684693 -0.18784694 0.82707994 #> [13] -0.92681785 -0.92694006 -1.22765954 0.28496155 -1.22876595 1.06310163 #> [19] 1.41365760 0.31118587 -1.26782296 -0.88499470 1.20906745 1.47560827 #> [25] -1.02536342 -0.19536086 0.12549313 0.08049335 -1.65690204 -1.37092002 #> [31] -1.41235877 -0.35331517 -0.10148815 -0.21007100 -0.08463409 -1.68328841 #> [37] -0.41458048 0.60424485 -2.19682448 1.61696552 -0.04233134 0.84270822 #> [43] -1.33779705 0.53047388 -0.31972581 -0.93530289 -2.67516324 -0.24350727 #> [49] 0.27808603 1.48648551 1.29698413 -1.16354584 -1.35437255 -2.25390786 #> [55] -0.04658846 0.72195659 1.34113797 -1.05597068 0.23558143 0.15702787 #> [61] -0.45863182 -1.04525722 -1.61258232 -1.12014949 -0.73029275 -1.12759324 #> [67] 1.05331321 1.00718570 0.25816298 1.09770820 1.04886163 -0.57528268 #> [73] 0.45223507 -0.48018098 1.34169144 0.26724264 0.38865953 -0.42497910 #> [79] 0.71890309 0.02838201 0.94303583 0.05721327 0.58988700 -0.43193507 #> [85] -1.24075882 1.53059137 0.16411166 0.50686195 0.23132794 -0.03227579 #> [91] 0.72820751 0.55503365 0.36078620 1.37321361 -1.02982548 -0.24475203 #> [97] -0.23287845 -0.83873242 -0.36966194 -0.42898348 -1.76575699 -0.75061218 #> [103] -1.49161174 0.24360158 0.85944232 0.14432420 0.62038002 0.55234149 #> [109] 0.13879988 0.60458825 0.47434087 -0.37251795 -0.28103294 -0.21947974 #> [115] -1.08652853 1.38583861 0.04531187 1.24160347 0.79114612 -1.92233303 #> [121] -0.79767875 2.55013067 0.61052041 0.38831970 -0.50160333 2.40853608 #> [127] -0.43446013 -0.22338039 1.45365763 1.00323009 -0.88002123 1.69273865 #> [133] 0.37879193 -1.16319365 -0.04698895 -0.09905131 2.25562520