Как поставлено, вопрос почти бессмысленный.Не существует такой вещи, как «лучшая» линия соответствия, поскольку «лучшая» зависит от целей вашего обучения.Довольно просто сгенерировать сглаженную линию, чтобы она подходила для каждой отдельной точки данных (например, полином 18-го порядка будет идеально соответствовать вашим данным, но, скорее всего, будет совершенно бессмысленным).количество гладкости модели loess
путем изменения аргумента span
.Чем больше значение span, тем более плавная кривая, чем меньше значение span, тем больше он будет соответствовать каждой точке:
Вот график со значением span=0.25
:
x <- seq(1, 10, 0.5)
y <- c(1, 1.5, 1.6, 1.7, 2.1,
2.2, 2.2, 2.4, 3.1, 3.3,
3.7, 3.4, 3.2, 3.1, 2.4,
1.8, 1.7, 1.6, 1.4)
xl <- seq(1, 10, 0.125)
plot(x, y)
lines(xl, predict(loess(y~x, span=0.25), newdata=xl))
Альтернативный подход заключается в подборе сплайнов через ваши данные.Сплайн должен проходить через каждую точку (тогда как сглаживатель, такой как lowess
, не может.)
spl <- smooth.spline(x, y)
plot(x, y)
lines(predict(spl, xl))