Leess предсказывает с новыми значениями 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 онлайн, но не могу найти, где это обсуждается.

Ответ 1

Однако, поскольку нет сохраняемых коэффициентов, "модель" в этом случае - это просто детали того, что использовалось для предсказания каждого y_hat

Возможно, вы использовали команду print(mdl) или просто mdl, чтобы увидеть, что содержит модель mdl, но это не так. Модель действительно сложна и хранит большое количество параметров.

Чтобы понять, что внутри, вы можете использовать unlist(mdl) и увидеть большой список параметров в нем.

Это часть руководства по команде, описывающей, как это работает:

Монтаж выполняется локально. То есть, для подгонки в точке x, подгонка выполняется с использованием точек в окрестности x, взвешенных по их расстоянию от x (при разнице в "параметрических переменных игнорируются при вычислении расстояния). Размер окрестности контролируется α (задается диапазоном или enp.target). Для α < 1, окрестность включает в себя долю α точек, и они имеют трикубическое взвешивание (пропорциональное (1 - (dist/maxdist) ^ 3) ^ 3). При α > 1 используются все точки, причем" максимальное расстояние, принятое как α ^ (1/p), умножает фактическое максимальное расстояние для p объясняющих переменных.

Для семейства по умолчанию подгонка по (взвешенным) наименьшим квадратам. Для family = "симметричный" несколько итераций процедуры M-оценки с Используются тукси-биугбайты. Имейте в виду, что в качестве начального значения наименьшие квадраты подходят, это не должно быть очень устойчивой посадкой.

Я считаю, что он пытается сопоставить полиномиальную модель в окрестности каждой точки (а не только один многочлен для всего множества). Но окрестность не означает только одну точку раньше и одну точку после, если я выполнял такую ​​функцию, я придавал большой вес ближайшим точкам к точке x и уменьшал весы до дистальных точек и пытался подогнать многочлен, который соответствует максимальному суммарному весу.

Тогда, если заданное x ', для которого высота должно быть предсказано, ближе всего к точке x, я попытался использовать полином, установленный на окрестностях точки x - например, P (x) - и применил его по x' - скажем, P (x ') - и это будет предсказание.

Сообщите мне, если вы ищете что-то особенное.

Ответ 2

Чтобы лучше понять, что происходит в лёссовой подгонке, попробуйте запустить функцию loess.demo из пакета TeachingDemos. Это позволяет интерактивно нажимать на график (даже между точками), а затем показывает набор точек и их веса, используемых в предсказании, и прогнозируемую линию/кривую для этой точки.

Обратите также внимание на то, что по умолчанию для loess следует выполнить второе сглаживание/интерполяцию на подходе к лессе, поэтому то, что вы видите в приспособленном объекте, вероятно, не является истинной информацией, связанной с лессой, но с дополнительным сглаживанием.

Ответ 3

Найден ответ на стр. 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.