【问题标题】:Prediction at a new value using lowess function in R使用 R 中的 lowess 函数预测新值
【发布时间】:2016-10-08 11:35:40
【问题描述】:

我正在使用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)

【问题讨论】:

    标签: r loess


    【解决方案1】:

    局部回归(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 函数,要么推出自己的插值算法。

    【讨论】:

    • 谢谢。在loess 中,您可以使用cars.lo &lt;- loess(dist ~ speed, cars); predict(cars.lo, data.frame(speed = seq(5, 30, 1)), se = TRUE) 以新值x 获得预测。你碰巧知道这里使用的是什么插值方法吗?我在它的帮助文件中找不到它。
    • @PatrickLi 正如我所解释的,该函数正在为您进行插值。我正在看它使用什么方案,一旦找到,我会更新答案。
    • @PatrickLi 我试图追踪它,但没有完全成功。看看我的编辑。
    • 非参数局部加权回归是一个完全有效的统计模型,就像参数回归一样。给定一组值 {y_i, X_i},您可以为任何新的 X 值获得 y 的估计值。只是需要更多的工作来编写代码。
    • 另一种解决方案在这里:stats.stackexchange.com/questions/126699/…
    猜你喜欢
    • 1970-01-01
    • 2016-07-15
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 2017-01-24
    • 2016-10-15
    • 2022-11-22
    相关资源
    最近更新 更多