R интерполировать между кривой Лёсса - PullRequest
1 голос
/ 19 марта 2019

Кривая Лёсса соответствует следующим данным:

library(tidyverse)
data <- tribble(~x, ~y,
    1,  0.254334545,
    2,  0.495754951,
    3,  0.711091409,
    4,  0.864910881,
    5,  0.941040554,
    6,  0.97463615,
    7,  0.989459747,
    8,  0.995969154,
    9,  0.998773181,
    10, 1)
x <- data$x
y <- data$y

lo <- loess(y~x)
plot(x,y)
xl <- seq(min(x),max(x), (max(x) - min(x))/1000)
lines(xl, predict(lo,xl), col='red', lwd=2)

Как извлечь значение сглаженной функции, y для x = c (1,5, 2,5, 3,5), скажем?

Спасибо.

1 Ответ

2 голосов
/ 19 марта 2019

Вы можете использовать predict.loess, чтобы делать прогнозы из проигрыша

# Fit LOESS model
fit <- loess(y ~ x, data = data)

# Predict y values for x = c(1.5, 2.5, 3.5)
predict(fit, data.frame(x = c(1.5, 2.5, 3.5)))
#        1         2         3
#0.3849209 0.6154395 0.7926339

Или для возврата data.frame

df <- data.frame(x = c(1.5, 2.5, 3.5))
transform(df, y.pred = predict(fit, df))
#    x    y.pred
#1 1.5 0.3849209
#2 2.5 0.6154395
#3 3.5 0.7926339
...