问题 黄土用新的x值预测


我试图了解如何 predict.loess 函数能够计算新的预测值(y_hat)在点 x 在原始数据中不存在。例如(这是一个简单的例子,我意识到这种类型的例子显然不需要黄土,但它说明了这一点):

x <- 1:10
y <- x^2
mdl <- loess(y ~ x)
predict(mdl, 1.5)
[1] 2.25

loess 回归通过在每个处使用多项式来工作 x 因此它创造了一个预测 y_hat 在每一个 y。但是,因为没有存储系数,所以在这种情况下的“模型”只是用于预测每个系数的细节 y_hat例如, span 要么 degree。当我做 predict(mdl, 1.5), 怎么 predict 能够在这个新的产生价值 x?它是在两个最近的现有之间进行插值 x 价值观及其相关因素 y_hat?如果是这样,它的具体细节是什么?

我看过了 cloess 在线文档但无法找到它讨论的地方。


12262
2017-10-10 14:40


起源

插值,外推,或两者兼而有之?我认为你的意思是插值。 - smci


答案:


但是,因为没有存储系数,所以在这种情况下的“模型”只是用于预测每个y_hat的细节。

也许你已经习惯了 print(mdl) 命令或简单 mdl 看看模特是什么 mdl 包含,但事实并非如此。该模型非常复杂,并存储了大量参数。

要知道里面有什么,你可以使用 unlist(mdl) 并查看其中的大参数列表。

这是命令手册的一部分,描述它是如何工作的:

配件在当地完成。也就是说,对于点x处的拟合,使用x附近的点进行拟合,通过它们与x的距离加权(在计算距离时忽略“参数”变量的差异)。邻域的大小由α控制(由span或enp.target设置)。对于α<1,邻域包括点的比例α,并且这些具有三重加权(与(1 - (dist / maxdist)^ 3)^ 3成比例。对于α> 1,使用所有点,假设“最大距离”是p解释变量的实际最大距离的α^(1 / p)倍。

对于默认族,拟合是通过(加权)最小二乘法。对于   family =“symmetric”M估计过程的几次迭代   使用Tukey的biweight。请注意,因为初始值是   最小二乘拟合,这不一定非常合适。

我认为它试图在每个点的邻域中拟合多项式模型(不仅仅是整个集合的单个多项式)。但是邻域并不仅仅意味着之前的一个点和之后的一个点,如果我正在实现这样的函数,我会对点x的最近点进行较大的权重,并将权重降低到远点,并尝试拟合多项式适合最高的总重量。

然后,如果应该预测高度的给定x'最接近点x,我试图使用拟合在点x的邻域上的多项式 - 比如P(x) - 并将其应用于x' - 说P(x) ') - 这就是预测。

如果您正在寻找任何特别的东西,请告诉我。


5
2017-10-10 15:10



谢谢您的回答。然而,在我的问题中描述了多项式回归背后的逻辑/数学。我试图理解如何计算中间点。它必须通过某种插值? - Alex
我更新了答案 - Ali
谢谢,是的,这正是我在问题中描述的内容。请注意:“在x点处的拟合,使用x附近的点进行拟合”。问题是:在x_1和x_2之间发生了什么...例如,在数据集中不存在的x_1 + epsilon - Alex
还添加了两段。如果任何部分不清楚,请不要犹豫 - Ali
如果每个点(比如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


为了更好地了解黄土适合的情况,请尝试运行 loess.demo 来自TeachingDemos包的功能。这使您可以交互式地单击绘图(甚至在点之间),然后显示预测中使用的点集及其权重以及该点的预测线/曲线。

另请注意默认值 loess 是在黄土拟合上进行第二次平滑/插值,所以你在拟合物体中看到的可能不是真正的黄土拟合信息,而是二次平滑。


5
2017-10-10 15:56





找到手册第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.

2
2017-10-10 15:32



哪本手册?我试图自己找到答案,并希望看到混合功能。 - Mark Miller
我想你引用这个文件: netlib.org/a/cloess.pdf 这似乎是William S. Cleveland,Eric Grosse和Ming-Jen Shyu的论文或报告的附录。虽然我不确定引用,因为我没有找到主要文件,只是附录。 - Mark Miller