Вопрос по regression, r, loess, smoothing – Loess предсказать с новыми значениями х

11

Я пытаюсь понять, как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 Документация онлайн, но я не могу найти, где это обсуждается.

Интерполяция, экстраполяция или оба? Я думаю, что вы имеете в виду только интерполяцию. smci

Ваш Ответ

3   ответа
5

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

Обратите внимание, что по умолчанию для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.
Какое руководство? Я пытаюсь найти ответ сам и хотел бы видеть функции смешивания.
Я думаю, что вы цитируете этот документ:netlib.org/a/cloess.pdf который, кажется, является приложением к статье или докладу Уильяма С. Кливленда, Эрика Гроссе и Минг-Джен Шью. Хотя я не уверен насчет цитирования, потому что я не нашел основной документ, только приложение.
5

However, because there are no coefficients being stored, the "model" in this case is simply the details of what was used to predict each y_hat

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

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

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

Fitting is done locally. That is, for the fit at point x, the fit is made using points in a neighbourhood of x, weighted by their distance from x (with differences in ‘parametric’ variables being ignored when computing the distance). The size of the neighbourhood is controlled by α (set by span or enp.target). For α < 1, the neighbourhood includes proportion α of the points, and these have tricubic weighting (proportional to (1 - (dist/maxdist)^3)^3). For α > 1, all points are used, with the ‘maximum distance’ assumed to be α^(1/p) times the actual maximum distance for p explanatory variables.

For the default family, fitting is by (weighted) least squares. For family="symmetric" a few iterations of an M-estimation procedure with Tukey's biweight are used. Be aware that as the initial value is the least-squares fit, this need not be a very resistant fit.

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

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

Дайте мне знать, если вы ищете что-то особенное.

Спасибо, да, это именно то, что я описываю в вопросе. Обратите внимание: «подбор в точке x, подбор производится с использованием точек в окрестности x». вопрос в том, что происходит между x_1 и x_2 .. например, в x_1 + epsilon, которого нет в наборе данных Alex
Еще добавлено два абзаца. Не стесняйтесь, если какая-либо часть не ясна
Спасибо за ваш ответ. однако логика / математика, лежащая в основе полиномиальной регрессии, описана в моем вопросе. Я пытаюсь понять, как можно вычислить промежуточные точки. это должно быть через какую-то интерполяцию? Alex
Если бы каждая точка (скажем, 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).
Я обновил ответ

Похожие вопросы