R:使用 mvBACON 查找异常值

R: Find outliers with mvBACON

我是 R 的新手,正在做一项作业,我应该复制线性回归的结果(具有 1360 个观察值和 52 个变量(回归模型中的 11 个变量)的时间序列数据)。在最初的研究中,研究人员使用 Hadi 方法识别异常值。似乎这在 R 中用 mvBacon 函数做得最好,这是正确的吗?不过,我似乎找不到关于如何使用它的好答案,有人能告诉我如何使用这个函数来找到异常值吗? (我非常感谢尽可能简单地解释的答案,因为 R 对我来说是非常新的)。 非常感谢!

是的,mvBACON 用于基于一些距离的离群值识别。默认的是马氏距离。 以下代码将引导您通过 mtcars 子数据集上的一个简单示例,了解如何使用 mvBACON 识别异常值:

# load packages
library(dplyr)
library(magrittr)

# Use mtcars (sub)dataset and plot it
data <- mtcars %>% select(mpg, disp)
plot(data, main = "mtcars")

# Add some outliers and plot again
data <- rbind(data, 
              data.frame(mpg = c(1, 80), disp = c(800, 1000)))
plot(data, main = "mtcars")

# Use mvBacon to calculate the distances and get the ouliers
# install.packages("robustX) # uncomment line to install package
library(robustX)

#compute distance - default is Mahalonobis
distances <- mvBACON(data)

# Plot it again...
plot(data, main = "mtcars")

# ...with highlighting the outliers
points(data[!distances$subset, ], col = "red", pch = 19)

# Some fine tuning, since many of the outliers seem to be still good for regression
distances <- mvBACON(data, alpha = 0.6)

# update plot
plot(data, main = "mtcars")
points(data[!distances$subset, ], col = "red", pch = 19)