Buenas a todos, acá estoy yo de nuevo con problemas de loops. Tengo el siguiente problema: un vector de datos (y) y una serie de efectos. El loop lo que intenta es evaluar el R² de modelos incrementando por vuelta una variable efecto. Seria algo así: for(i in 1:x) { modelo=lm(y~efectos[,1:i]) ... codigo para guardar R² y otros por cada vuelta... } apply() puede ir columna a columna pero no sé como hacer para que me vaya "acumulando columnas" por así decir. De echo no se si puede hacer. Espero haberme explicado y como siempre agradezco de antemano la atención. Un abrazo! -- Fernando Macedo
Hola Fernando, Podrias considerar las siguientes opciones: R2 <- vector("list", x) for(i in 1:x){ modelo <- lm(y ~ efectos[, 1:i]) R2[[i]] <- summary(modelo)$r.squared } R2 ?opt2 <- sapply(1:x, ?function(i){ modelo <- lm(y ~ efectos[, 1:i]) summary(modelo)$r.squared }) opt2 Para mas información revisa ?sapply, ?lapply y ?lm. En caso de que necesites otros parámetros del modelo de regresión, te sugiero revisar el resultado de modelo <- lm(y ~ efectos[, 2]) names(summary(modelo)) Saludos cordiales, Jorge Velez JCSMR, Canberra 2015-07-04 12:01 GMT+10:00 Fernando Macedo <fermace en gmail.com>:> Buenas a todos, acá estoy yo de nuevo con problemas de loops. > > Tengo el siguiente problema: un vector de datos (y) y una serie de > efectos. El loop lo que intenta es evaluar el R² de modelos incrementando > por vuelta una variable efecto. > > Seria algo así: > > for(i in 1:x) { > modelo=lm(y~efectos[,1:i]) > ... codigo para guardar R² y otros por cada vuelta... > } > > apply() puede ir columna a columna pero no sé como hacer para que me vaya > "acumulando columnas" por así decir. De echo no se si puede hacer. > > Espero haberme explicado y como siempre agradezco de antemano la atención. > > Un abrazo! > > -- > Fernando Macedo > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >[[alternative HTML version deleted]]
Muchas gracias Jorge! Si la opción del loop con for ya la tenía implementada y me demora bastante por eso quería probar con apply o en este caso sapply, muchas gracias! Saludos!! F Macedo El 03/07/15 a las 23:09, Jorge I Velez escribió:> Hola Fernando, > > Podrias considerar las siguientes opciones: > > R2 <- vector("list", x) > for(i in 1:x){ > modelo <- lm(y ~ efectos[, 1:i]) > R2[[i]] <- summary(modelo)$r.squared > } > R2 > > ? opt2 <- sapply(1:x, ?function(i){ > modelo <- lm(y ~ efectos[, 1:i]) > summary(modelo)$r.squared > }) > opt2 > > Para mas información revisa ?sapply, ?lapply y ?lm. En caso de que > necesites otros parámetros del modelo de regresión, te sugiero revisar > el resultado de > > modelo <- lm(y ~ efectos[, 2]) > names(summary(modelo)) > > Saludos cordiales, > > Jorge Velez > JCSMR, Canberra > > > 2015-07-04 12:01 GMT+10:00 Fernando Macedo <fermace en gmail.com > <mailto:fermace en gmail.com>>: > > Buenas a todos, acá estoy yo de nuevo con problemas de loops. > > Tengo el siguiente problema: un vector de datos (y) y una serie de > efectos. El loop lo que intenta es evaluar el R² de modelos > incrementando por vuelta una variable efecto. > > Seria algo así: > > for(i in 1:x) { > modelo=lm(y~efectos[,1:i]) > ... codigo para guardar R² y otros por cada vuelta... > } > > apply() puede ir columna a columna pero no sé como hacer para que > me vaya "acumulando columnas" por así decir. De echo no se si > puede hacer. > > Espero haberme explicado y como siempre agradezco de antemano la > atención. > > Un abrazo! > > -- > Fernando Macedo > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org <mailto:R-help-es en r-project.org> > https://stat.ethz.ch/mailman/listinfo/r-help-es > >[[alternative HTML version deleted]]