使用 R 中的 lowess 函数预测新值

Prediction at a new value using lowess function in R

我正在使用 lowess 函数来拟合两个变量 xy 之间的回归。现在我想知道新值 x 的拟合值。例如,如何在以下示例中找到 x=2.5 处的拟合值。我知道 loess 可以做到这一点,但我想重现某人的情节,他使用了 lowess

set.seed(1)
x <- 1:10
y <- x + rnorm(x)
fit <- lowess(x, y)
plot(x, y)
lines(fit)

局部回归(lowess)是一种非参数统计方法,它不像线性回归那样可以直接使用模型来估计新值。

您需要从函数中获取值(这就是为什么它只 returns 给您的列表),并选择您自己的插值方案。使用方案来预测你的新点数。

常用技术是样条插值(但还有其他技术):

https://www.r-bloggers.com/interpolation-and-smoothing-functions-in-base-r/

EDIT:我很确定 predict 函数会为您进行插值。我也找不到任何关于 predict 究竟使用什么的信息,所以我试图追踪源代码。

https://github.com/wch/r-source/blob/af7f52f70101960861e5d995d3a4bec010bc89e6/src/library/stats/R/loess.R

else { ## interpolate
## need to eliminate points outside original range - not in pred_

我确定 R 代码调用了底层 C 实现,但它没有很好的记录,所以我不知道它使用什么算法。

我的建议是:要么相信 predict 函数,要么推出自己的插值算法。