Nauczyłem się, że stosując vif()
metodę car
pakietu, możemy obliczyć stopień wielokoliniowości danych wejściowych w modelu. Z wikipedii , jeśli vif
wartość jest większa niż 5
wtedy, możemy uznać, że dane wejściowe cierpią z powodu problemu wielokoliniowości. Na przykład opracowałem model regresji liniowej przy użyciu lm()
metody i vif()
daje on następujące wyniki. Jak widzimy, wejścia ub
, lb
i tb
cierpi Współliniowość.
vif(lrmodel)
tb ub lb ma ua mb sa sb
7.929757 50.406318 30.826721 1.178124 1.891218 1.364020 2.113797 2.357946
W celu uniknięcia tego problemu Współliniowość a tym samym, aby mój model bardziej wytrzymałe, brałem interakcji pomiędzy ub
a lb
i teraz Vif stół nowego modelu jest następująca:
tb ub:lb ma mb sa sb ua
1.763331 1.407963 1.178124 1.327287 2.113797 1.860894 1.891218
Nie ma dużej różnicy w R^2
wartościach, a także nie ma dużej różnicy w błędach z jednoznacznych testów CV w obu powyższych dwóch przypadkach.
Moje pytania to:
Czy można uniknąć problemu wielokoliniowości, biorąc interakcję jak pokazano powyżej?
Czy istnieje lepszy sposób przedstawienia problemu wielokoliniowości w porównaniu z powyższymi wynikami metody vif.
Proszę podać mi swoje sugestie.
Dzięki.
źródło
Odpowiedzi:
Wydaje się, zawierają określenie interakcji
ub:lb
, ale nieub
ilb
siebie jako oddzielnych predyktorów. Naruszyłoby to tak zwaną „zasadę marginalności”, która stwierdza, że terminy wyższego rzędu powinny obejmować tylko zmienne występujące w kategoriach niższego rzędu ( na początek Wikipedia ). W efekcie zawierasz teraz predyktor, który jest po prostu elementarnym produktemub
ilb
.to tylko 1V.jafajot gdzieR 2 j jest wartościąR2,gdy przeprowadzasz regresję z oryginalną zmienną predykcyjnąjjako kryterium przewidywanym przez wszystkie pozostałe predyktory (jest to równieżj-ty element przekątnyR - 1 x , odwrotność macierzy korelacji predyktorów). VIF-wartość 50 oznacza zatem, że maszR2z .98 gdy przewidywaniaz innymi czynnikami prognostycznymi, wskazując, żejest prawie całkowicie zbędny (taka sama dla,R2z .97).11 - R2)jot R2)jot R2) jot jot R- 1x R2) R2)
ub
ub
lb
Zaczynam robić wszystkie korelacje parami między predyktorami i uruchamiać wyżej wymienione regresje, aby zobaczyć, które zmienne przewidują,
ub
ilb
sprawdzić, czy nadmiarowość można łatwo wyjaśnić. Jeśli tak, możesz usunąć zbędne predyktory. Możesz także zajrzeć do regresji grzbietu (lm.ridge()
z pakietuMASS
w R).Bardziej zaawansowane diagnostyki Współliniowość użyciu wartości własnej-strukturę gdzie X jest macierzą konstrukcyjnej regresji (czyli wszystkie predykcyjne jako wektorów kolumnowych). Warunek κ to √XtX X κ , gdzieλmwXiλm: insą największej i najmniejszej (≠0) wartości własneXtX. W R można użyć, gdymodel zwykle używa standardowych zmiennych.λm a x√λm i n√ λm a x λm i n ≠ 0 XtX
kappa(lm(<formula>))
lm()
Geometrycznie daje wyobrażenie o kształcie chmury danych utworzonej przez predyktory. Z 2 predyktorami wykres rozrzutu może wyglądać jak elipsa z 2 głównymi osiami. κ następnie mówi, jak „płaska” jest ta elipsa, tzn. jest miarą stosunku długości największej osi do długości najmniejszej głównej osi. Z 3 predyktorami możesz mieć kształt cygara i 3 główne osie. Im bardziej „płaska” jest twoja chmura danych, tym bardziej zbędne są zmienne, jeśli zostaną wzięte razem.κ κ
vif(lm(y ~ x1 + x2))
vif(lm(scale(y) ~ scale(x1) + scale(x2)))
kappa(lm(y ~ x1 + x2))
kappa(lm(scale(y) ~ scale(x1) + scale(x2)))
źródło
ub
lb
pairs()
scatterplot3d
perturb
Powinieneś również wziąć pod uwagę wartość P podczas rozważania zmiennej.
źródło