使用 R 中的 lowess 函数预测新值
Prediction at a new value using lowess function in R
我正在使用 lowess
函数来拟合两个变量 x
和 y
之间的回归。现在我想知道新值 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
究竟使用什么的信息,所以我试图追踪源代码。
else { ## interpolate
## need to eliminate points outside original range - not in pred_
我确定 R 代码调用了底层 C 实现,但它没有很好的记录,所以我不知道它使用什么算法。
我的建议是:要么相信 predict
函数,要么推出自己的插值算法。
我正在使用 lowess
函数来拟合两个变量 x
和 y
之间的回归。现在我想知道新值 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
究竟使用什么的信息,所以我试图追踪源代码。
else { ## interpolate
## need to eliminate points outside original range - not in pred_
我确定 R 代码调用了底层 C 实现,但它没有很好的记录,所以我不知道它使用什么算法。
我的建议是:要么相信 predict
函数,要么推出自己的插值算法。