Anche se @kith aperto la strada, non v'è più che può essere fatto. In realtà, l'intero processo può essere automatizzato. In primo luogo, creiamo alcuni dati:
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)))
Il nostro modello è quindi:
model <- glm(formula=y~x1+x2+x3+x4,data=mydata)
E il booleano vettore dei coefficienti può infatti essere estratto da:
toselect.x <- summary(model)$coeff[-1,4] < 0.05 # credit to kith
Ma questo non è tutti! Inoltre, siamo in grado di fare questo:
# 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: come poster successivi hanno sottolineato, quest'ultima linea dovrebbe essere sig.formula <- as.formula(paste("y ~",paste(relevant.x, collapse= "+")))
per includere tutte le variabili.
E la regressione con variabili solo significative OP origine voleva:
sig.model <- glm(formula=sig.formula,data=mydata)
In questo caso la stima sarà uguale a 1 abbiamo definito x4 come y + 5, che implica il rapporto perfetto.
Provate il pacchetto [glmulti] (http://www.jstatsoft.org/v34/i12/paper). – krlmlr
Inoltre, devi essere avvisato di non selezionare variabili "significative" in questo modo. La significatività statistica può essere modificata con l'aggiunta/rimozione di una singola variabile indipendente.La tua domanda suggerisce la rimozione di * tutte * variabili insignificanti alla prima esecuzione. Facendo ciò, alcune delle variabili inizialmente significative diventeranno insignificanti, mentre alcune delle variabili che hai rimosso potrebbero avere un buon valore predittivo. Quello che vuoi veramente è la rimozione uno per uno, e il confronto stepwise del modello in forma. Vedi questo thread: http://bit.ly/ZLVaD5 –
Vedi anche questo: http://www.statmethods.net/stats/regression.html –