单变量异常值检测

Sha*_*zad 7 statistics regression r outliers

这次我不会像以前在我的一个问题中那样直接询问如何检测异常值.我确实阅读了一些与此主题相关的帖子,但没有得到我需要的内容.我有一组值,如下所示:

y<-c(0.59, 0.61, 0.59, 1.55, 1.33, 3.50, 1.00, 1.22, 2.50, 3.00, 3.79, 3.98, 4.33, 4.45, 4.59, 4.72, 4.82, 4.90, 4.96, 7.92, 5.01, 5.01, 4.94, 5.05, 5.04, 5.03, 5.06, 5.10, 5.04, 5.06, 7.77, 5.07, 5.08, 5.08, 5.12, 5.12, 5.08, 5.17, 5.18)
Run Code Online (Sandbox Code Playgroud)

现在,大多数研究人员都表示异常检测过程不仅取决于数据,还取决于背景.我使用了R中的几个包,如异常值(grubbs test),extremevalues,mvoutlier(pcout方法),但无法找到使用它们的最佳方法.在这种情况下(取决于我的要求),7.77(第31号视网膜),7.92(20视点中的视点)和3.50(视图第6组)是异常值.使用异常值包的grubbs测试我可以检测7.77和7.92作为异常值但不是3.50.我不知道我是否可以在这里发布我的数据图,但是在查看了图或分布上的数据趋势之后,观察No 6将是一个明显的异常值.

我试图将非线性模型拟合到这些数据,但由于这些异常值,我找不到最合适的(最佳拟合不是唯一的要求),无论如何我需要检测这些异常值,因为我将适合单独的这些异常值的模型.

我的问题很简单.我是否可以通过一些标准包检测这3个异常值?或者如何使用我的非线性生成模型来帮助检测这些异常值?

最好的祝福

沙赫扎德

在此输入图像描述

msp*_*msp 5

只是说我尝试detectAO()按照上面的建议使用它并没有找到任何与我的数据有关(看起来有点类似:短期峰值出现连续趋势).谷歌搜索后,我发现Hempel过滤器(hempel()包装功能pracma)可以做我需要的.我想我会在这里添加这个以防其他人正在寻找解决方案.


red*_*ode 4

library(TSA)
ar = TSA::arima(y, c(1,0,0))
detectAO(ar)
Run Code Online (Sandbox Code Playgroud)

准确显示了这 3 点(ind是可能的异常值的索引):

> detectAO(ar)
            [,1]      [,2]      [,3]
ind     6.000000 20.000000 31.000000
lambda2 4.739695  5.957604  5.490739
Run Code Online (Sandbox Code Playgroud)

但要小心地将这种方法应用于任何类型的数据。