Mam zestaw danych z 9 ciągłymi zmiennymi niezależnymi. Staram się wybierać między tymi zmiennymi, aby dopasować model do jednego procentu (zależnej) zmiennej Score
. Niestety wiem, że między kilkoma zmiennymi wystąpi poważna kolinearność.
Próbowałem użyć stepAIC()
funkcji w R do wyboru zmiennych, ale ta metoda, co dziwne, wydaje się wrażliwa na kolejność, w której zmienne są wymienione w równaniu ...
Oto mój kod R (ponieważ są to dane procentowe, używam transformacji logit dla Score):
library(MASS)
library(car)
data.tst = read.table("data.txt",header=T)
data.lm = lm(logit(Score) ~ Var1 + Var2 + Var3 + Var4 + Var5 + Var6 + Var7 +
Var8 + Var9, data = data.tst)
step = stepAIC(data.lm, direction="both")
summary(step)
Z jakiegoś powodu odkryłem, że zmienne wymienione na początku równania są ostatecznie wybierane przez stepAIC()
funkcję, a wynikiem można manipulować przez listowanie, np. Var9
Najpierw (po tyldie).
Jaki jest bardziej skuteczny (i mniej kontrowersyjny) sposób dopasowania modelu tutaj? W rzeczywistości nie jestem całkowicie zdeterminowany, aby zastosować regresję liniową: jedyne, czego chcę, to móc zrozumieć, która z 9 zmiennych naprawdę napędza zmianę w Score
zmiennej. Najlepiej byłoby, gdyby była to metoda uwzględniająca duży potencjał kolinearności w tych 9 zmiennych.
Score
zmiennej”, czyli zdanie, na którym mogłem się nadmiernie skoncentrować. W obecności silnej kolinearności lasso nie pomoże w tym, przynajmniej w bardziej rygorystycznych interpretacjach uwagi OP.Odpowiedzi:
Po pierwsze, bardzo dobrym źródłem tego problemu jest T. Keith, Multiple Regression i Beyond. Książka zawiera wiele materiałów na temat modelowania ścieżek i wyboru zmiennych i myślę, że znajdziesz tam wyczerpujące odpowiedzi na swoje pytania.
Jednym ze sposobów rozwiązania problemu wielokoliniowości jest wyśrodkowanie predyktorów, czyli odjęcie średniej z jednej serii od każdej wartości. Regresji grzbietu można również użyć, gdy dane są wysoce współliniowe. Wreszcie regresja sekwencyjna może pomóc w zrozumieniu związków przyczynowo-skutkowych między predyktorami, w połączeniu z analizą sekwencji czasowej zdarzeń predykcyjnych.
Czy wszystkie 9 zmiennych wykazuje kolinearność? Do diagnozy można użyć współczynnika inflacji wariancji Cohena 2003. Wartość VIF> = 10 wskazuje na wysoką kolinearność i zawyżone błędy standardowe. Rozumiem, że jesteś bardziej zainteresowany relacją przyczynowo-skutkową między predyktorami a wynikami. Jeśli nie, multikolinearność nie jest uważana za poważny problem z prognozowaniem, co można potwierdzić, sprawdzając MAE danych nieobjętych próbką w porównaniu z modelami zbudowanymi z dodaniem predyktorów jednocześnie. Jeśli twoje predyktory mają marginalną moc predykcyjną, przekonasz się, że MAE zmniejsza się nawet w obecności wielokoliniowości modelu.
źródło
Ponieważ tak trudno jest określić, które zmienne mają zostać upuszczone, często lepiej jest nie upuszczać zmiennych. Dwa sposoby postępowania wzdłuż tej linii to (1) zastosowanie metody redukcji danych (np. Grupowanie zmiennych lub główne składniki) i umieszczenie podsumowań w modelu zamiast poszczególnych zmiennych oraz (2) umieszczenie wszystkich zmiennych w modelu, ale nie testowanie dla efektu jednej zmiennej skorygowanej o skutki zmiennych konkurencyjnych. W przypadku (2) testy fragmentów konkurencyjnych zmiennych są potężne, ponieważ zmienne współliniowe łączą siły w ogólnym teście asocjacji wielokrotnego stopnia swobody, zamiast konkurować ze sobą, jak w przypadku testowania zmiennych indywidualnie.
źródło
and put summary scores into the model
Jeśli chcesz dokonać wyboru zmiennej w obecności wysokiej kolinearności, mogę polecić pakiet L0ara , który pasuje do karanych GLM L0 za pomocą iteracyjnej adaptacyjnej procedury grzbietu . Ponieważ metoda ta ostatecznie opiera się na regresji regularnej grzbietu, może bardzo dobrze radzić sobie z kolinearnością, aw moich symulacjach dawała znacznie mniej fałszywych wyników dodatnich, a jednocześnie zapewnia doskonałą wydajność przewidywania, w porównaniu np. Z LASSO, elastyczną siatką lub adaptacyjnym LASSO. Możesz też wypróbować pakiet L0Learnz kombinacją kary L0 i L2. Kara L0 sprzyja wtedy rzadkości (tj. Małym modelom), podczas gdy kara L2 reguluje kolinearność. Często sugerowana jest również elastyczna siatka (która wykorzystuje kombinację kary L1 i L2), ale w moich testach spowodowało to znacznie więcej fałszywych trafień, a także współczynniki będą mocno tendencyjne. To uprzedzenie możesz pozbyć się, jeśli zamiast tego zastosujesz metody karane L0 (znany również jako najlepszy podzbiór) - jest to tak zwany estymator wyroczni, który jednocześnie uzyskuje spójne i obiektywne współczynniki parametrów. Parametry regularyzacji we wszystkich tych metodach należy zoptymalizować poprzez krzyżową weryfikację, aby uzyskać optymalną wydajność prognozowania poza próbą. Jeśli chcesz również uzyskać poziomy istotności i przedziały ufności dla swoich parametrów, możesz to również zrobić za pomocą nieparametrycznego ładowania początkowego.
Iteracyjny algorytm adaptacyjnego grzbietu
l0ara
(czasami nazywany zepsutym adaptacyjnym grzbietem), podobnie jak elastyczna siatka, ma efekt grupowania, który spowoduje, że wybierze wysoce skorelowane zmienne w grupach, gdy tylko wejdą do twojego modelu. Ma to sens - np. Gdybyś miał dwie zmienne prawie kolinearne w swoim modelu, podzieliłby efekt równomiernie na oba.Jeśli analizujesz dane proporcji, lepiej użyć modelu regresji logistycznej btw -
l0ara
pakiet pozwala to zrobić w połączeniu z karą L0; w przypadkuL0Learn
pakietu będzie to wkrótce obsługiwane.źródło