Сделайте функцию мошенничества устойчивой к выбросам - PullRequest
0 голосов
/ 25 января 2019

Я использую 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

lowess: enter image description here

...