Jak dostroić wygładzanie w modelu GAM mgcv

14

Próbuję dowiedzieć się, jak kontrolować parametry wygładzania w modelu mgcv: gam.

Mam zmienną dwumianową, którą próbuję zamodelować jako przede wszystkim funkcję współrzędnych xiy na ustalonej siatce plus kilka innych zmiennych o mniejszych wpływach. W przeszłości zbudowałem dość dobry model regresji lokalnej, używając locfit pakietu i tylko wartości (x, y).

Chciałbym jednak spróbować włączyć inne zmienne do modelu i wyglądało na to, że uogólnione modele addytywne (GAM) były dobrą możliwością. Po przyjrzeniu się pakietom gam i mgcv, z których oba mają funkcję GAM, zdecydowałem się na ten drugi, ponieważ wydaje się, że poleca go szereg komentarzy w wątkach na liście mailingowej. Jednym minusem jest to, że wydaje się, że nie obsługuje ono łagodniejszej regresji lokalnej, takiej jak less lub locfit.

Na początek chciałem po prostu spróbować zreplikować w przybliżeniu model locfit, używając tylko współrzędnych (x, y). Próbowałem z gładkimi produktami zarówno zwykłymi, jak i tensorowymi:

my.gam.te <- gam(z ~ te(x, y), family=binomial(logit), data=my.data, scale = -1)

my.gam.s  <- gam(z ~  s(x, y), family=binomial(logit), data=my.data, scale = -1)

Jednak wykreślając prognozy z modelu, są one znacznie bardziej wygładzone w porównaniu do modelu locfit. Próbowałem więc dostroić model, aby nie przesadził. Próbowałem dostosować parametry sp i k, ale nie jest dla mnie jasne, jak wpływają na wygładzanie. W locfit parametr nn kontroluje rozpiętość używanego sąsiedztwa, przy czym mniejsze wartości pozwalają na mniej wygładzanie i więcej „poruszania się”, co pomaga uchwycić niektóre obszary na siatce, w których prawdopodobieństwo wyników dwumianowych zmienia się gwałtownie. Jak powinienem skonfigurować model gry, aby działał podobnie?

pułkownik triq
źródło

Odpowiedzi:

23

kArgumentu skutecznie tworzy wymiarowości matrycy wyrównawczego dla każdego okresu. gam()korzysta z oceny GCV lub UBRE, aby wybrać optymalną ilość gładkości, ale może działać tylko w obrębie wymiarów matrycy wygładzającej. Domyślnie te()wygładzenia mają k = 5^2powierzchnie 2d. Zapomniałem, po co to jest, s()więc sprawdź dokumenty. Obecna rada od Simona Wooda, autora mgcv , jest taka , że jeśli stopień gładkości wybrany przez model jest zbliżony do granicy wymiarów narzuconej przez zastosowaną wartość lub kpowinien ją zwiększyć, należy zwiększyć ki ponownie zamontować model, aby sprawdzić, czy bardziej złożony model jest wybierany z macierzy wygładzania o wyższych wymiarach.

Nie wiem jednak, jak działa locfit , ale musisz mieć coś, co powstrzyma Cię przed dopasowaniem zbyt złożonej powierzchni (GCV i UBRE lub (RE) ML, jeśli zdecydujesz się ich użyć [nie możesz tak jak Ty set scale = -1], próbują to zrobić), który nie jest obsługiwany przez dane. Innymi słowy, możesz dopasować bardzo lokalne cechy danych, ale czy dopasowujesz szum do próbki zebranych danych, czy dopasowujesz średnią rozkład prawdopodobieństwa? gam() może mówić ci coś o tym, co można oszacować na podstawie twoich danych, zakładając, że uporządkowałeś wymiarowość podstawową (powyżej).

Inną rzeczą, na którą należy zwrócić uwagę, jest to, że wygładzacze, których obecnie używasz, są globalne w tym sensie, że wybrana gładkość jest stosowana w całym zakresie gładkości. Adaptacyjne wygładzacze mogą wydawać przydzielone „wyrównanie” gładkości w częściach danych, w których odpowiedź szybko się zmienia. gam()ma możliwości korzystania z adaptacyjnych wygładzaczy.

Zobacz ?smooth.termsi ?adaptive.smoothzobacz, co można dopasować za pomocą gam(). te()może łączyć większość, jeśli nie wszystkie z tych wygładzaczy (sprawdź dokumentację, dla której można i nie można uwzględnić w produktach tensorowych), abyś mógł użyć adaptacyjnej, płynniejszej podstawy, aby spróbować uchwycić dokładniejszą skalę lokalną w częściach danych, w których odpowiedź zmienia się szybko.

Powinienem dodać, że R możesz oszacować model ze stałym zestawem stopni swobody używanym przez gładki termin, używając fx = TRUEargumentu do s()i te(). Zasadniczo zestaw k, aby to, co chcesz i fx = TRUEi gam()będzie po prostu dopasować splajn regresji stałych stopni swobody nie jest karane spline regresji.

Przywróć Monikę - G. Simpson
źródło
Dziękuję bardzo, Gavin, za tak szczegółową odpowiedź. Całkowicie przegapiłem adaptacyjne wygładzacze i dam im szansę. Rozumiem obawy związane z nadmiernym wyposażeniem, ale to, co dotychczas robiłem z grą, nie pokazywało cech danych, o których wiadomo, że są dostępne dzięki wiedzy specjalistycznej w tej dziedzinie.
pułkownik triq