Mam dane z wieloma skorelowanymi funkcjami i chcę zacząć od ograniczenia funkcji z płynną funkcją podstawową przed uruchomieniem LDA. Próbuję użyć naturalnych splajnów sześciennych w splines
pakiecie z ns
funkcją. Jak przejść do przypisywania węzłów?
Oto podstawowy kod R:
library(splines)
lda.pred <- lda(y ~ ns(x, knots=5))
Ale nie mam pojęcia, jak wybrać węzły ns
.
Odpowiedzi:
Jak określić węzły w R.
ns
Funkcja wytwarza naturalne regresji spline podstaw danego wektora wejściowego. Węzły można określić albo za pomocą argumentu stopni swobody,df
który przyjmuje liczbę całkowitą, albo za pomocą argumentu węzłów,knots
który przyjmuje wektor dający pożądane położenie węzłów. Pamiętaj, że w kodzie, który napisałeśnie poprosiłeś o pięć węzłów, ale poprosiłeś o pojedynczy (wewnętrzny) węzeł w lokalizacji 5.
Jeśli użyjesz
df
argumentu, węzły wewnętrzne zostaną wybrane na podstawie kwantyli wektorax
. Na przykład, jeśli wykonasz połączenieWtedy podstawą będą dwa węzły brzegowe i 4 węzły wewnętrzne, umieszczone odpowiednio na 20, 40, 60 i 80 kwantylu
x
. Węzły brzegowe są domyślnie umieszczane na min. I maksx
.Oto przykład, aby określić lokalizacje węzłów
Gdyby zamiast tego zadzwonić
ns(x, df=4)
, otrzymalibyśmy 3 węzły wewnętrzne odpowiednio w lokalizacjach 25, 50 i 75.Możesz także określić, czy chcesz przechwycić termin. Zwykle nie jest to określone, ponieważ
ns
jest najczęściej używane w połączeniu zlm
, co obejmuje niejawnie przechwytywanie (chyba że zmuszone jest tego nie robić). Jeśli użyjeszintercept=TRUE
swojego wezwania dons
, upewnij się, że wiesz, dlaczego to robisz, ponieważ jeśli to zrobisz, a następnie zadzwoniszlm
naiwnie, matryca projektowa skończy się niedoborem rangi.Strategie umieszczania węzłów
Węzły są najczęściej umieszczane w kwantylach, podobnie jak domyślne zachowanie
ns
. Intuicja jest taka, że jeśli masz dużo danych skupionych blisko siebie, możesz potrzebować więcej węzłów, aby modelować wszelkie potencjalne nieliniowości w tym regionie. Ale to nie znaczy, że jest to (a) jedyny wybór lub (b) najlepszy wybór.Oczywiście można dokonać innych wyborów i są one specyficzne dla domeny. Patrzenie na histogramy i szacunki gęstości predyktorów może dostarczyć wskazówek, gdzie potrzebne są węzły, chyba że istnieje jakiś „kanoniczny” wybór, biorąc pod uwagę twoje dane.
Jeśli chodzi o interpretację regresji, chciałbym zauważyć, że chociaż z pewnością możesz „bawić się” z umieszczaniem węzłów, powinieneś zdawać sobie sprawę, że ponosisz karę za wybór modelu, którą powinieneś uważnie ocenić i dostosować wszelkie wnioski jako wynik.
źródło
x <- 0:100
, należy zrobić „właściwy” sposób zdefiniowania punktów przerwaniaknots_x <- quantile(x, probs=c(.2, .35, .5))
, który zostanie następnie wykorzystanyns(x, knots=knots_x)
do zdefiniowania 3 wewnętrznych węzłów odpowiednio w miejscach 25, 50 i 75. To, co mnie pomieszało w odpowiedzi, to to, że spodziewałem się, że będę musiał podać żądane kwantyle wknots
argumencie, podczas gdy muszę wprowadzić rzeczywiste wartości zx
wektora ...