Я использую R-пакет «scam» для построения модели сглаживания с монотонным ограничением из диаграммы рассеяния. Тем не менее, я хотел бы, чтобы он был более устойчивым к выбросам, таким как функция lowess.
Есть ли способ изменить использование мошенников для достижения этой цели?
library(scam)
x <- seq(1, 100, length.out = 500)
y <- rnorm(500, mean = 10, sd = 2) + x
y[c(480, 490:495, 500)] <- y[c(480, 490:495, 500)] - 80
data <- data.frame(x=x, y=y)
scam_model <- scam(y~s(x, k= 50, bs="mpi"), data=data)
prediction <- predict(scam_model, newdata = data, type="link", se=T)
lowess.out <- lowess(x, y, f = 0.2)
# scam
plot(x, y)
lines(x, prediction$fit, col="red", lwd=2)
lines(x, prediction$fit + prediction$se.fit * 3, col ="blue", lty=2)
lines(x, prediction$fit - prediction$se.fit * 3, col ="blue", lty=2)
# lowess
plot(x, y)
lines(lowess.out$x, lowess.out$y, col="red", lwd=2)
афера:
![enter image description here](https://i.stack.imgur.com/nQn5T.png)
lowess:
![enter image description here](https://i.stack.imgur.com/OVIMc.png)