4

I am using lowess function to fit a regression between two variables x and y. Now I want to know the fitted value at a new value of x. For example, how do I find the fitted value at x=2.5 in the following example. I know loess can do that, but I want to reproduce someone's plot and he used lowess.

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

enter image description here

4

1 回答 1

3

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

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

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

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

编辑:我很确定该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函数,要么推出你自己的插值算法。

于 2016-10-08T11:45:42.960 回答