El resultado seria una tabla así:
NOTA: Existen otros metodos estadisticos para seleccion de variable, como Backward Stepwise, Fordward Stepwise, Stepwise, etc.
Para lograr esto, puede usarse el siguiente script que combina variables de forma aleatoria para predecir el precio de un automóvil, y guarda el "R Ajustado" en cada iteración:
# MEJORES VARIABLES EN REGRESION LINEAL #--------------------------------------------------------------- # Cargar datos desde dropbox datos.url <- 'https://www.dropbox.com/s/2kj20ulep93hssa/cars04.csv?dl=1' datos <- read.csv(datos.url) #--------------------------------------------------------------- # Crea vectores con datos de variables variables <- names(within(datos,rm(Cost))) total.variable <- length(variables) resultado <- data.frame(r.ajustado=NULL, cant.variables=NULL,variables=NULL) #--------------------------------------------------------------- # Iteracion de modelos lm con distintas variables for (i in 1:50) { cant.var.selec <- sample(total.variable,1) variables.select <- variables[sample(total.variable,cant.var.selec)] formula_lm <- reformulate(termlabels = variables.select, response = 'Cost') modelo.lm <- lm(formula_lm, datos) resultado <- rbind(resultado, data.frame( r.ajustado = summary(modelo.lm)$adj.r.squared, cant.variables = length(variables.select), variables = paste(variables.select,collapse="+"))) print(i) } #--------------------------------------------------------------- # Modelo final. Crea modelo con mejor set de variables variables.final <- resultado[resultado$r.ajustado==max(resultado$r.ajustado),3] formula.final <- as.formula(paste("Cost ~ ", variables.final)) modelo.lm.final <- lm(formula.final, datos)
Para incluir variables logarítmicas, después de crear el vector "varaibles", agregar:
No hay comentarios:
Publicar un comentario