[R-es] Problema con loop

Carlos J. Gil Bellosta cgb en datanalytics.com
Dom Jul 5 18:27:28 CEST 2015


Hola, ¿qué tal?

Si quieres mejorar la velocidad de ese cálculo puedes probar estas dos cosas:

1) Precalcular la matriz del modelo (?model.matrix)
2) Usar lm.fit en lugar de lm (?lm.fit)

No es una vía sencilla pero si de verdad quieres mejorar el
rendimiento no te queda otra que eliminar recálculos.

Saludo,

Carlos J. Gil Bellosta
http://www.datanalytics.com




El día 5 de julio de 2015, 17:50, Fernando Macedo <fermace en gmail.com> escribió:
> Hola Jorge.
>
> Usando sapply mejoró un poco pero no demasiado en realidad.
>
> Una vez lo estuve relojeando a mclapply (y otras funciones de ese paquete),
> pero no probé mas allá de algunos ejemplos. Voy a terminar este trabajo y
> lo pruebo, ya te contaré cuanto mejoró.
>
> Un abrazo y gracias nuevamente!
>
>
>
>
>
> El 5 de julio de 2015, 11:27, Jorge I Velez <jorgeivanvelez en gmail.com>
> escribió:
>
>> De nada, Fernando.
>>
>> Otra alternativa es usando mclapply() en el paquete "parallel". Estoy en
>> Mac/Linux y funciona muy bien. Seguramente hay algunos equivalentes en
>> Windows.
>>
>> Saludos,
>>
>> Jorge Velez
>> JCSMR, Canberra
>>
>>
>>
>> 2015-07-04 12:17 GMT+10:00 Fernando Macedo <fermace en gmail.com>:
>>
>>>  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>:
>>>
>>>> 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
>>>>
>>>
>>>
>>>
>>
>
>
> --
> Fernando Macedo
>
>         [[alternative HTML version deleted]]
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es



Más información sobre la lista de distribución R-help-es