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.