1

我需要通过测试从非线性参数中检测出许多异常值。我使用了一些方法,比如异常值包,但是在很多情况下常规方法不符合测试假设。

这里有一个大量数据的小例子,

两个向量,“x”和“y”:

x <- c(50.012, 2.0255, 1.4552, 1.4186, 1.1831, 0.9782, -0.4291, -7.0972, -37.1922, -41.3537, -41.817, -45.3403, -53.7224, -74.8426, -184.1533, -208.8941, -248.6897, -344.1792, -347.6185, -354.0921, -523.5459, -573.9206, -694.4206, -694.6722, -1039.5303, -1303.6301, -1640.6454, -1645.6708)
y <- c(0.0000, 0.0002, 0.0000, 0.0004, 0.0019, 0.0002, 0.0043, 0.0448, 0.0513, 0.1482, 0.0112, 0.0451, 0.0000, 0.1492, 0.1583, 0.3885, 0.3000, 0.2033, 0.3656, 0.2368, 0.4934, 0.2180, 0.5161, 0.4920, 0.5229, 0.5394, 1.3575, 1.4175)

当我通过以下方式绘制“x”和“y”时:

plot(x, y)

很明显,存在两个异常值:

x[27:28]
y[27:28]

我有很多这样的数据,我需要通过非线性回归进行良好的 nls 估计,如下所示:

sigmoid <- function(x, x0, a, b) {
  a*exp(-exp(-(x-x0)/b))
}

nlsfit <-nls2(y ~ sigmoid(x, x0, a, b), start = data.frame(x0 = c(0, -5), a = c(0, 1), b= c(-0.01, -5)))

通过测试,我如何检测和去除许多异常值?,无论“x”和“y”的长度如何。

4

0 回答 0