Buenas tardes,
Estoy interesado en ajustar modelos de regresion beta {betareg} a un
conjunto de datos en el que se tienen una variable respuesta "y" y
~600K
variables independientes. En el codigo en R que se encuentra en la parte
inferior presento un ejemplo en el que se tienen 500 variables
independientes y la misma respuesta "y" para todos. Tambien se
encuentran
algunos tiempos de ejecucion y mi sessionInfo().
Me gustaria aumentar la velocidad de ejecucion del procdimiento. Alguna
idea? Para 500 variables es razonable esperar 10-12 segundos, pero no para
el total de variables que tengo en mi aplicacion y mucho menos si se tienen
varias bases de datos con la misma estructura.
Muchas gracias a todos,
Jorge Ivan Velez
# datos
y <- rbeta(50, 5, 2)
X <- matrix(rnorm(50*500), ncol = 500)
colnames(X) <- paste(''x'', 1:ncol(X), sep = "")
# modelo beta para cada columna de X
require(betareg)
# option 1: aplicando una funcion creada "on-the-fly"
system.time({
betas <- t(apply(X, 2, function(x){
d <- data.frame(x, y)
m <- betareg(y ~ x, data = d)
beta <- summary(m)$coefficients$mean[2, c(1,4)]
beta
}))
})
# user system elapsed
# 10.959 0.175 11.166
# option 2: creando una funcion auxiliar
foo <- function(x){
d <- data.frame(x, y)
m <- betareg(y ~ x, data = d)
beta <- summary(m)$coefficients$mean[2, c(1,4)]
beta
}
system.time({
betas <- t(apply(X, 2, foo))
})
# user system elapsed
# 10.512 0.191 10.692
sessionInfo()
R version 2.13.0 Patched (2011-04-18 r55504)
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)
locale:
[1] en_US.UTF-8/en_US.UTF-8/C/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] betareg_2.3-0 Formula_1.0-0
loaded via a namespace (and not attached):
[1] flexmix_2.3-5 lmtest_0.9-27 modeltools_0.2-17 multcomp_1.2-6
[5] sandwich_2.2-6 stats4_2.13.0
*
*
[[alternative HTML version deleted]]