使用新的X值进行黄土预测

13

我试图理解predict.loess函数如何能够在原始数据中不存在的点x处计算新的预测值(y_hat)。例如(这是一个简单的例子,我知道loess显然不需要这样的例子,但它说明了重点):

x <- 1:10
y <- x^2
mdl <- loess(y ~ x)
predict(mdl, 1.5)
[1] 2.25
loess回归通过在每个x上使用多项式来创建预测的y_hat,因此它会在每个y处创建一个预测值。然而,由于没有存储任何系数,因此这种情况下的“模型”只是用于预测每个y_hat的细节,例如 spandegree。当我执行 predict(mdl, 1.5) 时,如何使 predict 能够在这个新的x处生成一个值?它是否在两个最近的现有x值及其相关的y_hat之间进行插值?如果是这样,那么它是如何完成这个过程的细节呢?
我已经阅读了在线的cloess文档,但无法找到讨论此问题的地方。

插值、外推或两者兼备?我认为你指的是仅插值。 - smci
这里是一个链接!我希望它能有所帮助。 - Seongje Chae
4个回答

7
然而,由于没有存储系数,因此在这种情况下,“模型”仅是用于预测每个y_hat的详细信息。也许您已经使用了“print(mdl)”命令或者简单地使用了“mdl”来查看模型“mdl”包含什么,但事实并非如此。该模型真的很复杂,并且存储了大量参数。为了了解其内部情况,您可以使用“unlist(mdl)”并查看其中的大量参数列表。以下是该命令的一部分手册描述其实际工作原理的内容:拟合是在本地进行的。也就是说,在点x处的拟合是使用x周围的点加权得出的(在计算距离时忽略“参数化”变量的差异)。邻域的大小由α(由span或enp.target设置)控制。对于α <1,邻域包括α比例的点,并且这些点具有三次立方加权(与(1-(dist / maxdist)^ 3)^ 3成比例)。对于α> 1,将使用所有点,并且假定“最大距离”为p解释变量的α ^(1 / p)倍的实际最大距离。对于默认family,拟合是通过(加权)最小二乘法完成的。对于family =“symmetric”,使用Tukey的双加权M估计过程的几次迭代。请注意,由于初始值是最小二乘拟合,因此这可能不是非常强健的拟合。我认为它试图在每个点的邻域内拟合多项式模型(而不仅是整个集合的单个多项式)。但是,邻域并不意味着仅指前一个点和后一个点。如果我正在实现这样的功能,我会对离点x最近的点施加很大的权重,并对远离点的点施加较低的权重,并尝试拟合适合最高总权重的多项式。然后,如果给定的x'用于预测高度,则最接近点x,我尝试使用在点x附近拟合的多项式(称为P(x)),并将其应用于x'上(称为P(x')),这将是预测。如果您正在寻找特定内容,请告诉我。

1
谢谢您的回答。然而,关于多项式回归背后的逻辑/数学是在我的问题中进行描述的。我正在尝试理解如何计算中间点。这一定是通过某种插值方法来实现的吧? - Alex
1
谢谢,是的,这正是我在问题中描述的。请注意:“在点x处的拟合是使用x附近的点进行的”。问题是:在x_1和x_2之间会发生什么...例如,在x_1 + epsilon处,数据集中不存在的情况。 - Alex
仍然添加了两段。如果有任何不清楚的部分,请不要犹豫。 - Ali
谢谢。但是,我认为我们彼此之间存在误解。假设有一个点(y_1,x_1),我们想要计算g(y)在这个点上的取值。我们使用所有在x_1和y_1范围内的点来进行OLS回归。我们对所有点(x_1..x_n)重复此过程,因此得到g(y_1)...g(y_n)。但是,如果我们查看原始数据集中没有包含的点x_1+epsilon会怎么样?我们没有g(y_1+epsilon)可以查找吗? - Alex
1
如果数据集中包含每个点(比如x_1+epsilon),那么还需要预测什么呢?另一个问题是,我们不只有一个多项式g(x),而是n个多项式g_1(x),g_2(x) ... g_n(x),其中g_i(x)被创建来最好地拟合(x_i, y_i)附近的点。只需使用拟合的多项式来预测数据集中最接近的点(比如x_1)即可(因此您的答案将是g_1(x_1 + epsilon))。 - Ali

5
为了更好地理解loess拟合的过程,可以运行TeachingDemos包中的loess.demo函数。它能让您交互式地点击图表(即使是在点之间),然后显示用于预测的点集及其权重以及预测该点的线/曲线。
还要注意,默认情况下,loess会对loess拟合进行第二次平滑/插值处理,因此在拟合对象中看到的可能不是真正的loess拟合信息,而是二次平滑处理的结果。

2

我在手册的第42页找到了答案:

In this algorithm a set of points typically small in number is selected for direct    
computation using the loess fitting method and a surface is evaluated using an interpolation
method that is based on blending functions. The space of the factors is divided into
rectangular cells using an algorithm based on k-d trees. The loess fit is evaluated at
the cell vertices and then blending functions do the interpolation. The output data
structure stores the k-d trees and the fits at the vertices. This information
is used by predict() to carry out the interpolation.

哪个手册?我正在尝试自己找答案,想要看看混合功能。 - Mark Miller
我认为你引用的是这篇文档:http://www.netlib.org/a/cloess.pdf,它似乎是William S. Cleveland、Eric Grosse和Ming-Jen Shyu的一篇论文或报告的附录。虽然我不确定引文是否正确,因为我只找到了附录而没有找到主要文档。 - Mark Miller

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接