Chociaż @kith utorował drogę, tam jest więcej, co można zrobić. W rzeczywistości cały proces może być zautomatyzowany. Najpierw stwórzmy jakieś dane:
x1 <- rnorm(10)
x2 <- rnorm(10)
x3 <- rnorm(10)
y <- rnorm(10)
x4 <- y + 5 # this will make a nice significant variable to test our code
(mydata <- as.data.frame(cbind(x1,x2,x3,x4,y)))
Nasz model jest następnie:
model <- glm(formula=y~x1+x2+x3+x4,data=mydata)
A Boolean wektor współczynników może być rzeczywiście ekstrakcji przez:
toselect.x <- summary(model)$coeff[-1,4] < 0.05 # credit to kith
Ale to nie jest wszystko! Ponadto, możemy to zrobić:
# select sig. variables
relevant.x <- names(toselect.x)[toselect.x == TRUE]
# formula with only sig variables
sig.formula <- as.formula(paste("y ~",relevant.x))
EDIT: jako kolejne plakaty podkreśliło, druga linia powinna być sig.formula <- as.formula(paste("y ~",paste(relevant.x, collapse= "+")))
obejmować wszystkie zmienne.
i uruchomić regresji ze zmiennymi jak tylko znaczących OP początkowo chciał:
sig.model <- glm(formula=sig.formula,data=mydata)
W tym przypadku oszacowanie będzie równa 1 jak zdefiniowano x4 jako Y + 5, co oznacza, idealny związek.
Wypróbuj pakiet [glmulti] (http://www.jstatsoft.org/v34/i12/paper). – krlmlr
Ponadto należy ostrzec przed wyborem "istotnych" zmiennych w ten sposób. Istotność statystyczną można zmienić za pomocą dodania/usunięcia pojedynczej zmiennej niezależnej.Twoje pytanie sugeruje usunięcie * wszystkich * zmiennych nieistotnych przy pierwszym uruchomieniu. W ten sposób niektóre początkowo istotne zmienne staną się nieistotne, podczas gdy niektóre zmienne, które usunąłeś, mogły mieć dobrą wartość predykcyjną. To, czego naprawdę chcesz, to usuwanie jeden po drugim i stopniowe porównywanie dopasowania modelu. Zobacz ten wątek: http://bit.ly/ZLVaD5 –
Zobacz także: http://www.statmethods.net/stats/regression.html –