2012-10-10 16 views
10

Próbuję zrozumieć, w jaki sposób funkcja predict.loess jest w stanie obliczyć nowe przewidywane wartości (y_hat) w punktach x, które nie istnieją w oryginalnych danych. Na przykład (jest to prosty przykład i zdaję sobie sprawę, less nie jest oczywiście potrzebna na przykład tego rodzaju, ale ilustruje punkt):less przewidywanie z nowymi wartościami x

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

loess prace regresji za pomocą wielomianów na każdym x i tym samym tworzy przewidywane y_hat przy każdym y. Ponieważ jednak nie ma zapisanych żadnych współczynników, "model" w tym przypadku jest po prostu szczegółami tego, co było używane do przewidywania każdego z nich, na przykład span lub degree. Kiedy wykonuję predict(mdl, 1.5), w jaki sposób predict może wytworzyć wartość w tym nowym x? Czy interpoluje ona dwie najbliższe istniejące wartości x i powiązane z nimi y_hat? Jeśli tak, jakie są szczegóły tego działania?

Przeczytałem dokumentację cloess online, ale nie mogę znaleźć, gdzie to omawia.

+0

Interpolacja, ekstrapolacja lub jedno i drugie? Myślę, że masz na myśli tylko interpolację. – smci

Odpowiedz

5

Jednakże, ponieważ nie istnieją współczynniki są składowane, „model” jest w tym przypadku po prostu szczegóły, co zostało wykorzystane do przewidzenia każdy y_hat

może masz używane print(mdl) polecenia lub po prostu mdl aby zobaczyć, co zawiera model mdl, ale tak nie jest. Model jest bardzo skomplikowany i przechowuje dużą liczbę parametrów.

Aby zorientować się, co jest w środku, możesz użyć unlist(mdl) i zobaczyć dużą listę parametrów w nim.

Jest to część podręcznika polecenia opisujące, jak to naprawdę działa:

Montaż odbywa się lokalnie. To znaczy, dla dopasowania w punkcie x, dopasowanie jest dokonywane za pomocą punktów w sąsiedztwie x, ważonych przez ich odległość od x (z różnicami w "parametrycznych" zmiennych są ignorowane podczas obliczania odległości). Wielkość okolicy jest kontrolowana przez α (ustawiany przez span lub enp.target). Dla α < 1 sąsiedztwo zawiera proporcje α punktów, które mają współczynnik trójkubowy (proporcjonalny do (1 - (dist/maxdist)^3)^3). Dla α> 1 stosowane są wszystkie punkty, przy czym zakłada się, że "maksymalna odległość" to α^(1/p) razy rzeczywisty maksymalny dystans dla zmiennych objaśniających.

W przypadku rodziny domyślnej dopasowanie odbywa się według (ważonej) najmniejszych kwadratów. Dla family = "symmetric" zastosowano kilka iteracji procedury oszacowania M z . Należy pamiętać, że jako wartość początkowa jest dopasowanie najmniejszych kwadratów , nie musi to być bardzo odporne dopasowanie.

Uważam, że stara się dopasować model wielomianu w sąsiedztwie każdego punktu (a nie tylko jednego wielomianu dla całego zestawu). Ale sąsiedztwo nie oznacza tylko jednego punktu przed i jeden punkt po, jeśli realizowałem taką funkcję, przykładałem dużą wagę do najbliższych punktów do punktu x, a niższe wagi do dalszych punktów i próbowałem dopasować wielomian, który pasuje do najwyższej całkowitej masy.

Następnie, jeśli podane x ', dla którego należy przewidzieć wysokość, jest najbliższe punktowi x, spróbowałem użyć wielomianu dopasowanego w sąsiedztwie punktu x - powiedz P (x) - i zastosowałem go na x' - powiedz P (x ') - i to byłoby przewidywanie.

Daj mi znać, jeśli szukasz czegoś wyjątkowego.

+1

dziękuję za odpowiedź. jednak logika/matematyka za tym, co regresja wielomianu jest opisana w moim pytaniu. Próbuję zrozumieć, jak oblicza się punkty pośrednie. musi to być jakaś interpolacja? – Alex

+0

Zaktualizowałem odpowiedź – Ali

+1

Dziękuję, tak, dokładnie to opisuję w pytaniu. Uwaga: "dopasowanie w punkcie x, dopasowanie jest dokonywane za pomocą punktów w sąsiedztwie x". pytanie brzmi: co dzieje się między x_1 i x_2 .. na przykład na x_1 + epsilon, który nie istnieje w zestawie danych – Alex

2

znaleźć odpowiedź na stronie 42 podręcznika:

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. 
+0

Która instrukcja? Próbuję znaleźć odpowiedź siebie i chciałbym zobaczyć funkcje mieszania –

+0

Myślę, że cytujesz ten dokument: http://www.netlib.org/a/cloess.pdf który wydaje się być dodatkiem do artykułu lub raportu Williama S. Clevelanda , Eric Grosse i Ming-Jen Shyu Chociaż nie jestem pewien co do cytatu, ponieważ nie zlokalizowałem głównego dokumentu, tylko dodatek. –

5

Aby lepiej zrozumieć to, co dzieje się w lessowej dopasowanie spróbuj uruchomić funkcję loess.demo z pakietu TeachingDemos. Umożliwia to interaktywne kliknięcie wykresu (nawet między punktami), a następnie pokazuje zestaw punktów i ich wag używanych w prognozie oraz przewidywaną linię/krzywą dla tego punktu.

Należy również zauważyć, że domyślna dla loess jest zrobić drugi wygładzanie/interpolację na dopasowanie lessowej, więc to, co widzisz w dopasowanego obiektu prawdopodobnie nie jest prawdą less sylwetkę informacji, ale wtórnego wygładzania.