Imputação de dados com processamento paralelo

Amigos de R, Eu estou trabalhando com um banco de dados que possui mais de 220000 linhas. Eu cheguei numa parte do plano de análise em que imputação multipla será conduzida. Eu já usei a função Hmisc::aregIMpute e mice::mice que considero muito boas. O problema é que com essa quantidade de dados pra descobrir que deu um erro eu levo de 2h a 8h esperando. Então eu fiz um estrategia de testar em bancos menores subsets do principal. Eu procurei por ai e há outros pacotes que fazem imputação mas não consegui encontrar qualquer um que possa fazer imputação com computação em paralelo. Alguem saberia indicar uma função que faça imputação multipla com computação em paralelo? Alguem ja tentou criar um algoritmo de computação em paralelo para fazer imputação multipla com Hmisc::aregImput? Abraço a todos, Pedro Brasil

Olá Pedro, Ainda não precisei trabalhar com computação em paralelo, mas o tema imputação de dados é de grande interesse para mim. Ao ver seu email, me lembrei de um pacote recém desenvolvido, que trabalha com séries temporais. Se for seu caso, /google/ " Imputation of missing data in time series for air pollutants". O que você almeja com a imputação de dados? Substituir dados abaixo de um /threshold/ (e.g., LOD, LOQ)? Séries temporais? Imputação de dados é um tema bastante extenso. Acho que serie interessante você fornecer mais dicas, a fim de que outros colegas possam colaborar. (Eu vou ficar na torcida, e acompanhando o seu post ;-) ) Abs, Vinícius On 10/09/2015 02:32 PM, Pedro Emmanuel Alvarenga Americano do Brasil wrote:
Amigos de R,
Eu estou trabalhando com um banco de dados que possui mais de 220000 linhas. Eu cheguei numa parte do plano de análise em que imputação multipla será conduzida.
Eu já usei a função Hmisc::aregIMpute e mice::mice que considero muito boas. O problema é que com essa quantidade de dados pra descobrir que deu um erro eu levo de 2h a 8h esperando. Então eu fiz um estrategia de testar em bancos menores subsets do principal.
Eu procurei por ai e há outros pacotes que fazem imputação mas não consegui encontrar qualquer um que possa fazer imputação com computação em paralelo.
Alguem saberia indicar uma função que faça imputação multipla com computação em paralelo?
Alguem ja tentou criar um algoritmo de computação em paralelo para fazer imputação multipla com Hmisc::aregImput?
Abraço a todos,
Pedro Brasil
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forne�a c�digo m�nimo reproduz�vel.
-- Best regards, Vinícius Lionel Mateus, MSc (http://lattes.cnpq.br/6501001637020665) Chemistry PhD Student Atmospheric Chemistry Laboratory - Dep. Chemistry PUC-Rio - Pontifical Catholic University of Rio de Janeiro Marquês de São Vicente, 225, Gávea - Rio de Janeiro, RJ - Brazil CEP: 22451-900 Phone: (+45) 26 28 28 51 (+55) (21) 3527-1327 (+55) (21) 993 - 588 - 051 Skype: vinicius.lionel http://www.qui.puc-rio.br/index.html

Se o que você entende por imputação em paralelo for simplesmente executar alguma função de imputação do tipo MI, MICE , MAR , MCAR AMELIA etc em paralelo. Ou seja, repartir o tarefa entre as CPUs, eu acredito que bastaria você passar a função dentro de um foreach ou parLapply. Por exemplo, usando a base `mammalsleep` do pacote mice para gerar 10 tabelas: nCores <- detectCores() -1 library(foreach) library(doParallel) cl <- makeCluster(nCores) clusterSetRNGStream(cl, 51) registerDoParallel(cl) library(mice) imp_mice <- foreach(no = 1:nCores, .combine = ibind, .export = "mammalsleep", .packages = "mice") %dopar% { mice(mammalsleep, m = 10, printFlag = FALSE) } stopCluster(cl) # veja os dados completos: complete(imp_mice) Você vair querer explorar também o que está armazenado no objeto : imp_mice Como: imp_mice$method imp_mice$data imp_mice$m etc. D 2015-10-10 12:28 GMT-03:00 Vinícius Lionel Mateus <vinynegrelli@gmail.com>:
Olá Pedro,
Ainda não precisei trabalhar com computação em paralelo, mas o tema imputação de dados é de grande interesse para mim. Ao ver seu email, me lembrei de um pacote recém desenvolvido, que trabalha com séries temporais. Se for seu caso, google " Imputation of missing data in time series for air pollutants".
O que você almeja com a imputação de dados? Substituir dados abaixo de um threshold (e.g., LOD, LOQ)? Séries temporais?
Imputação de dados é um tema bastante extenso. Acho que serie interessante você fornecer mais dicas, a fim de que outros colegas possam colaborar. (Eu vou ficar na torcida, e acompanhando o seu post ;-) )
Abs, Vinícius
On 10/09/2015 02:32 PM, Pedro Emmanuel Alvarenga Americano do Brasil wrote:
Amigos de R,
Eu estou trabalhando com um banco de dados que possui mais de 220000 linhas. Eu cheguei numa parte do plano de análise em que imputação multipla será conduzida.
Eu já usei a função Hmisc::aregIMpute e mice::mice que considero muito boas. O problema é que com essa quantidade de dados pra descobrir que deu um erro eu levo de 2h a 8h esperando. Então eu fiz um estrategia de testar em bancos menores subsets do principal.
Eu procurei por ai e há outros pacotes que fazem imputação mas não consegui encontrar qualquer um que possa fazer imputação com computação em paralelo.
Alguem saberia indicar uma função que faça imputação multipla com computação em paralelo?
Alguem ja tentou criar um algoritmo de computação em paralelo para fazer imputação multipla com Hmisc::aregImput?
Abraço a todos,
Pedro Brasil
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forne�a c�digo m�nimo reproduz�vel.
-- Best regards,
Vinícius Lionel Mateus, MSc (http://lattes.cnpq.br/6501001637020665) Chemistry PhD Student Atmospheric Chemistry Laboratory - Dep. Chemistry PUC-Rio - Pontifical Catholic University of Rio de Janeiro Marquês de São Vicente, 225, Gávea - Rio de Janeiro, RJ - Brazil CEP: 22451-900 Phone: (+45) 26 28 28 51 (+55) (21) 3527-1327 (+55) (21) 993 - 588 - 051 Skype: vinicius.lionel http://www.qui.puc-rio.br/index.html
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.

Faltou mencionar que as 10 tabelas n=10 serão processadas por cada CPU de nCores, ou seja, se eu tenho 12-1 cores: 11*10 = 110. Tenho dúvidas se era bem isso que você estava buscando. Daniel 2015-10-10 15:58 GMT-03:00 Daniel Marcelino <dmarcelino@live.com>:
Se o que você entende por imputação em paralelo for simplesmente executar alguma função de imputação do tipo MI, MICE , MAR , MCAR AMELIA etc em paralelo. Ou seja, repartir o tarefa entre as CPUs, eu acredito que bastaria você passar a função dentro de um foreach ou parLapply. Por exemplo, usando a base `mammalsleep` do pacote mice para gerar 10 tabelas:
nCores <- detectCores() -1 library(foreach) library(doParallel) cl <- makeCluster(nCores) clusterSetRNGStream(cl, 51) registerDoParallel(cl)
library(mice)
imp_mice <- foreach(no = 1:nCores, .combine = ibind, .export = "mammalsleep", .packages = "mice") %dopar% { mice(mammalsleep, m = 10, printFlag = FALSE) } stopCluster(cl)
# veja os dados completos: complete(imp_mice)
Você vair querer explorar também o que está armazenado no objeto : imp_mice Como: imp_mice$method imp_mice$data imp_mice$m etc.
D
2015-10-10 12:28 GMT-03:00 Vinícius Lionel Mateus <vinynegrelli@gmail.com>:
Olá Pedro,
Ainda não precisei trabalhar com computação em paralelo, mas o tema imputação de dados é de grande interesse para mim. Ao ver seu email, me lembrei de um pacote recém desenvolvido, que trabalha com séries temporais. Se for seu caso, google " Imputation of missing data in time series for air pollutants".
O que você almeja com a imputação de dados? Substituir dados abaixo de um threshold (e.g., LOD, LOQ)? Séries temporais?
Imputação de dados é um tema bastante extenso. Acho que serie interessante você fornecer mais dicas, a fim de que outros colegas possam colaborar. (Eu vou ficar na torcida, e acompanhando o seu post ;-) )
Abs, Vinícius
On 10/09/2015 02:32 PM, Pedro Emmanuel Alvarenga Americano do Brasil wrote:
Amigos de R,
Eu estou trabalhando com um banco de dados que possui mais de 220000 linhas. Eu cheguei numa parte do plano de análise em que imputação multipla será conduzida.
Eu já usei a função Hmisc::aregIMpute e mice::mice que considero muito boas. O problema é que com essa quantidade de dados pra descobrir que deu um erro eu levo de 2h a 8h esperando. Então eu fiz um estrategia de testar em bancos menores subsets do principal.
Eu procurei por ai e há outros pacotes que fazem imputação mas não consegui encontrar qualquer um que possa fazer imputação com computação em paralelo.
Alguem saberia indicar uma função que faça imputação multipla com computação em paralelo?
Alguem ja tentou criar um algoritmo de computação em paralelo para fazer imputação multipla com Hmisc::aregImput?
Abraço a todos,
Pedro Brasil
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forne�a c�digo m�nimo reproduz�vel.
-- Best regards,
Vinícius Lionel Mateus, MSc (http://lattes.cnpq.br/6501001637020665) Chemistry PhD Student Atmospheric Chemistry Laboratory - Dep. Chemistry PUC-Rio - Pontifical Catholic University of Rio de Janeiro Marquês de São Vicente, 225, Gávea - Rio de Janeiro, RJ - Brazil CEP: 22451-900 Phone: (+45) 26 28 28 51 (+55) (21) 3527-1327 (+55) (21) 993 - 588 - 051 Skype: vinicius.lionel http://www.qui.puc-rio.br/index.html
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.

Marcelino, Apesar de eu não conseguir me explicar bem, voce conseguiu me entender. Acho que voce deu uma luz no fim do tunel. Eu vou voltar nessa tarefa nessa semana. Assim que eu conseguir executar a sua sugestão, eu volto a colocar alguma coisa nesse tópico da lista. Abraço, Pedro Brasil Pedro Brasil via Android (:)= Se o que você entende por imputação em paralelo for simplesmente executar alguma função de imputação do tipo MI, MICE , MAR , MCAR AMELIA etc em paralelo. Ou seja, repartir o tarefa entre as CPUs, eu acredito que bastaria você passar a função dentro de um foreach ou parLapply. Por exemplo, usando a base `mammalsleep` do pacote mice para gerar 10 tabelas: nCores <- detectCores() -1 library(foreach) library(doParallel) cl <- makeCluster(nCores) clusterSetRNGStream(cl, 51) registerDoParallel(cl) library(mice) imp_mice <- foreach(no = 1:nCores, .combine = ibind, .export = "mammalsleep", .packages = "mice") %dopar% { mice(mammalsleep, m = 10, printFlag = FALSE) } stopCluster(cl) # veja os dados completos: complete(imp_mice) Você vair querer explorar também o que está armazenado no objeto : imp_mice Como: imp_mice$method imp_mice$data imp_mice$m etc. D 2015-10-10 12:28 GMT-03:00 Vinícius Lionel Mateus <vinynegrelli@gmail.com>:
Olá Pedro,
Ainda não precisei trabalhar com computação em paralelo, mas o tema imputação de dados é de grande interesse para mim. Ao ver seu email, me lembrei de um pacote recém desenvolvido, que trabalha com séries temporais. Se for seu caso, google " Imputation of missing data in time series for air pollutants".
O que você almeja com a imputação de dados? Substituir dados abaixo de um threshold (e.g., LOD, LOQ)? Séries temporais?
Imputação de dados é um tema bastante extenso. Acho que serie interessante você fornecer mais dicas, a fim de que outros colegas possam colaborar. (Eu vou ficar na torcida, e acompanhando o seu post ;-) )
Abs, Vinícius
On 10/09/2015 02:32 PM, Pedro Emmanuel Alvarenga Americano do Brasil wrote:
Amigos de R,
Eu estou trabalhando com um banco de dados que possui mais de 220000 linhas. Eu cheguei numa parte do plano de análise em que imputação multipla será conduzida.
Eu já usei a função Hmisc::aregIMpute e mice::mice que considero muito boas. O problema é que com essa quantidade de dados pra descobrir que deu um erro eu levo de 2h a 8h esperando. Então eu fiz um estrategia de testar em bancos menores subsets do principal.
Eu procurei por ai e há outros pacotes que fazem imputação mas não consegui encontrar qualquer um que possa fazer imputação com computação em paralelo.
Alguem saberia indicar uma função que faça imputação multipla com computação em paralelo?
Alguem ja tentou criar um algoritmo de computação em paralelo para fazer imputação multipla com Hmisc::aregImput?
Abraço a todos,
Pedro Brasil
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forne�a c�digo m�nimo reproduz�vel.
-- Best regards,
Vinícius Lionel Mateus, MSc (http://lattes.cnpq.br/6501001637020665) Chemistry PhD Student Atmospheric Chemistry Laboratory - Dep. Chemistry PUC-Rio - Pontifical Catholic University of Rio de Janeiro Marquês de São Vicente, 225, Gávea - Rio de Janeiro, RJ - Brazil CEP: 22451-900 Phone: (+45) 26 28 28 51 (+55) (21) 3527-1327 (+55) (21) 993 - 588 - 051 Skype: vinicius.lionel http://www.qui.puc-rio.br/index.html
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e fornea cdigo mnimo reproduzvel.

Ei vinicius, Na verdade eu queria mesmo era utilizar a função aregImpute porque estou acostumado com ela e ela tem algumas opçoes que o mice não tem. Eu simulei uns dados e tentei rodar alguns exemplos mas ainda não saiu do geito que eu queria. data <- data.frame(los = sample(seq(0,45,0.001),5000,T),desfecho.los = sample(c(0,1),5000,T),sex = sample(c("M","F"),5000,T),BMI= sample(seq(16,45,0.1),5000,T)) data2$BMI[sample(1:5000,2000)] <- NA #### sem montar o cluster para computação paralelo library(rms) Sys.time() ini <- Sys.time() mit2 <- aregImpute(~ los + I(desfecho.los) + I(Age50) + Gender + I(BMI45), n.impute=5, data=data,tlinear=F) Sys.time() - ini Sys.time() # Com o cluster para computação em paralelo library(mice) library(rms) library(foreach) library(doParallel) nCores <- detectCores() -1 cl <- makeCluster(nCores) clusterSetRNGStream(cl, 51) registerDoParallel(cl) Sys.time() ini <- Sys.time() mit3 <- foreach(no = 1:nCores, # .combine = ibind, # .export = "mammalsleep", .packages = "rms") %dopar% { aregImpute(~ los + I(desfecho.los) + I(Age50) + Gender + I(BMI45), n.impute=5, data=data,tlinear=F) } Sys.time() - ini Sys.time() stopCluster(cl) Nos dois exemplos acima a computação no meu dado original demorou cerca de 13 min. Repare que para criar o objeto mit3 eu exclui os argumentos .combine e .export. Pra falar a verdade eu não consegui entender a partir da documentação pra que serve esse argumento .export. O mit3 saiu como uma lista de tres objetos e cada um desses como cinco imputações. Então entendi eu levei o mesmo tempo pra fazer 3x mais imputações (3 é o numero de cores que usei). Mas eu gostaria mesmo que a saida fosse uma lista com um unico objeto com 5 imputações. Então entendi que a função ibind deveria fazer exatamente isso. Eu tentei usar a função ibind do pacote mice mas retorna um erro, provavelmente porque essa função só funciona para objetos de classe mids ou mice. Então acho que agora a questão seria como combinar as saidas das computações dos diferentes cores. Eu não sei se tem jeito porque a documentação original do Hmisc::aregImpute não comenta nada a respeito de computação em paralelo ou de juntar objetos da mesma função. # para criar um dado completo. imputed.data <-impute.transcan(mit2, imputation=1, data=data, list.out=TRUE, pr=FALSE, check=FALSE) data[names(imputed.data)] <- imputed.data Se voce puder me dar uma mão ... agradeceria muito. Pedro Brasil Em 10 de outubro de 2015 15:58, Daniel Marcelino <dmarcelino@live.com> escreveu:
Se o que você entende por imputação em paralelo for simplesmente executar alguma função de imputação do tipo MI, MICE , MAR , MCAR AMELIA etc em paralelo. Ou seja, repartir o tarefa entre as CPUs, eu acredito que bastaria você passar a função dentro de um foreach ou parLapply. Por exemplo, usando a base `mammalsleep` do pacote mice para gerar 10 tabelas:
nCores <- detectCores() -1 library(foreach) library(doParallel) cl <- makeCluster(nCores) clusterSetRNGStream(cl, 51) registerDoParallel(cl)
library(mice)
imp_mice <- foreach(no = 1:nCores, .combine = ibind, .export = "mammalsleep", .packages = "mice") %dopar% { mice(mammalsleep, m = 10, printFlag = FALSE) } stopCluster(cl)
# veja os dados completos: complete(imp_mice)
Você vair querer explorar também o que está armazenado no objeto : imp_mice Como: imp_mice$method imp_mice$data imp_mice$m etc.
D
2015-10-10 12:28 GMT-03:00 Vinícius Lionel Mateus <vinynegrelli@gmail.com
: Olá Pedro,
Ainda não precisei trabalhar com computação em paralelo, mas o tema imputação de dados é de grande interesse para mim. Ao ver seu email, me lembrei de um pacote recém desenvolvido, que trabalha com séries temporais. Se for seu caso, google " Imputation of missing data in time series for air pollutants".
O que você almeja com a imputação de dados? Substituir dados abaixo de um threshold (e.g., LOD, LOQ)? Séries temporais?
Imputação de dados é um tema bastante extenso. Acho que serie interessante você fornecer mais dicas, a fim de que outros colegas possam colaborar. (Eu vou ficar na torcida, e acompanhando o seu post ;-) )
Abs, Vinícius
On 10/09/2015 02:32 PM, Pedro Emmanuel Alvarenga Americano do Brasil wrote:
Amigos de R,
Eu estou trabalhando com um banco de dados que possui mais de 220000 linhas. Eu cheguei numa parte do plano de análise em que imputação multipla será conduzida.
Eu já usei a função Hmisc::aregIMpute e mice::mice que considero muito boas. O problema é que com essa quantidade de dados pra descobrir que deu um erro eu levo de 2h a 8h esperando. Então eu fiz um estrategia de testar em bancos menores subsets do principal.
Eu procurei por ai e há outros pacotes que fazem imputação mas não consegui encontrar qualquer um que possa fazer imputação com computação em paralelo.
Alguem saberia indicar uma função que faça imputação multipla com computação em paralelo?
Alguem ja tentou criar um algoritmo de computação em paralelo para fazer imputação multipla com Hmisc::aregImput?
Abraço a todos,
Pedro Brasil
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forne�a c�digo m�nimo reproduz�vel.
-- Best regards,
Vinícius Lionel Mateus, MSc (http://lattes.cnpq.br/6501001637020665) Chemistry PhD Student Atmospheric Chemistry Laboratory - Dep. Chemistry PUC-Rio - Pontifical Catholic University of Rio de Janeiro Marquês de São Vicente, 225, Gávea - Rio de Janeiro, RJ - Brazil CEP: 22451-900 Phone: (+45) 26 28 28 51 (+55) (21) 3527-1327 (+55) (21) 993 - 588 - 051 Skype: vinicius.lionel http://www.qui.puc-rio.br/index.html
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e fornea cdigo mnimo reproduzvel.

Hey Pedro, Infelizmente, não tenho expertise para a tarefa que você desempenha. O meu conhecimento sobre imputação (por enquanto) é mais aplicado à /envirometria/quimiometria/. "Que a força esteja com você!" Abs, Vinícius On 10/16/2015 04:06 PM, Pedro Emmanuel Alvarenga Americano do Brasil wrote:
Ei vinicius,
Na verdade eu queria mesmo era utilizar a função aregImpute porque estou acostumado com ela e ela tem algumas opçoes que o mice não tem. Eu simulei uns dados e tentei rodar alguns exemplos mas ainda não saiu do geito que eu queria.
data <- data.frame(los = sample(seq(0,45,0.001),5000,T),desfecho.los = sample(c(0,1),5000,T),sex = sample(c("M","F"),5000,T),BMI= sample(seq(16,45,0.1),5000,T)) data2$BMI[sample(1:5000,2000)] <- NA
#### sem montar o cluster para computação paralelo library(rms) Sys.time() ini <- Sys.time() mit2 <- aregImpute(~ los + I(desfecho.los) + I(Age50) + Gender + I(BMI45), n.impute=5, data=data,tlinear=F) Sys.time() - ini Sys.time()
# Com o cluster para computação em paralelo library(mice) library(rms) library(foreach) library(doParallel) nCores <- detectCores() -1 cl <- makeCluster(nCores) clusterSetRNGStream(cl, 51) registerDoParallel(cl)
Sys.time() ini <- Sys.time() mit3 <- foreach(no = 1:nCores, # .combine = ibind, # .export = "mammalsleep", .packages = "rms") %dopar% { aregImpute(~ los + I(desfecho.los) + I(Age50) + Gender + I(BMI45), n.impute=5, data=data,tlinear=F) } Sys.time() - ini Sys.time() stopCluster(cl)
Nos dois exemplos acima a computação no meu dado original demorou cerca de 13 min. Repare que para criar o objeto mit3 eu exclui os argumentos .combine e .export. Pra falar a verdade eu não consegui entender a partir da documentação pra que serve esse argumento .export. O mit3 saiu como uma lista de tres objetos e cada um desses como cinco imputações. Então entendi eu levei o mesmo tempo pra fazer 3x mais imputações (3 é o numero de cores que usei). Mas eu gostaria mesmo que a saida fosse uma lista com um unico objeto com 5 imputações. Então entendi que a função ibind deveria fazer exatamente isso. Eu tentei usar a função ibind do pacote mice mas retorna um erro, provavelmente porque essa função só funciona para objetos de classe mids ou mice. Então acho que agora a questão seria como combinar as saidas das computações dos diferentes cores. Eu não sei se tem jeito porque a documentação original do Hmisc::aregImpute não comenta nada a respeito de computação em paralelo ou de juntar objetos da mesma função.
# para criar um dado completo. imputed.data <-impute.transcan(mit2, imputation=1, data=data, list.out=TRUE, pr=FALSE, check=FALSE) data[names(imputed.data)] <- imputed.data
Se voce puder me dar uma mão ... agradeceria muito.
Pedro Brasil
Em 10 de outubro de 2015 15:58, Daniel Marcelino <dmarcelino@live.com <mailto:dmarcelino@live.com>> escreveu:
Se o que você entende por imputação em paralelo for simplesmente executar alguma função de imputação do tipo MI, MICE , MAR , MCAR AMELIA etc em paralelo. Ou seja, repartir o tarefa entre as CPUs, eu acredito que bastaria você passar a função dentro de um foreach ou parLapply. Por exemplo, usando a base `mammalsleep` do pacote mice para gerar 10 tabelas:
nCores <- detectCores() -1 library(foreach) library(doParallel) cl <- makeCluster(nCores) clusterSetRNGStream(cl, 51) registerDoParallel(cl)
library(mice)
imp_mice <- foreach(no = 1:nCores, .combine = ibind, .export = "mammalsleep", .packages = "mice") %dopar% { mice(mammalsleep, m = 10, printFlag = FALSE) } stopCluster(cl)
# veja os dados completos: complete(imp_mice)
Você vair querer explorar também o que está armazenado no objeto : imp_mice Como: imp_mice$method imp_mice$data imp_mice$m etc.
D
2015-10-10 12:28 GMT-03:00 Vinícius Lionel Mateus <vinynegrelli@gmail.com <mailto:vinynegrelli@gmail.com>>: > Olá Pedro, > > Ainda não precisei trabalhar com computação em paralelo, mas o tema > imputação de dados é de grande interesse para mim. > Ao ver seu email, me lembrei de um pacote recém desenvolvido, que trabalha > com séries temporais. > Se for seu caso, google " Imputation of missing data in time series for air > pollutants". > > O que você almeja com a imputação de dados? > Substituir dados abaixo de um threshold (e.g., LOD, LOQ)? > Séries temporais? > > Imputação de dados é um tema bastante extenso. > Acho que serie interessante você fornecer mais dicas, a fim de que outros > colegas possam colaborar. > (Eu vou ficar na torcida, e acompanhando o seu post ;-) ) > > Abs, > Vinícius > > On 10/09/2015 02:32 PM, Pedro Emmanuel Alvarenga Americano do Brasil wrote: > > Amigos de R, > > Eu estou trabalhando com um banco de dados que possui mais de 220000 linhas. > Eu cheguei numa parte do plano de análise em que imputação multipla será > conduzida. > > Eu já usei a função Hmisc::aregIMpute e mice::mice que considero muito boas. > O problema é que com essa quantidade de dados pra descobrir que deu um erro > eu levo de 2h a 8h esperando. Então eu fiz um estrategia de testar em bancos > menores subsets do principal. > > Eu procurei por ai e há outros pacotes que fazem imputação mas não consegui > encontrar qualquer um que possa fazer imputação com computação em paralelo. > > Alguem saberia indicar uma função que faça imputação multipla com computação > em paralelo? > > Alguem ja tentou criar um algoritmo de computação em paralelo para fazer > imputação multipla com Hmisc::aregImput? > > Abraço a todos, > > Pedro Brasil > > > _______________________________________________ > R-br mailing list > R-br@listas.c3sl.ufpr.br <mailto:R-br@listas.c3sl.ufpr.br> > https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br > Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forne�a c�digo > m�nimo reproduz�vel. > > > -- > Best regards, > > Vinícius Lionel Mateus, MSc (http://lattes.cnpq.br/6501001637020665) > Chemistry PhD Student > Atmospheric Chemistry Laboratory - Dep. Chemistry > PUC-Rio - Pontifical Catholic University of Rio de Janeiro > Marquês de São Vicente, 225, Gávea - Rio de Janeiro, RJ - Brazil CEP: > 22451-900 > Phone: (+45) 26 28 28 51 <tel:%28%2B45%29%2026%2028%2028%2051> > (+55) (21) 3527-1327 <tel:%28%2B55%29%20%2821%29%203527-1327> > (+55) (21) 993 - 588 - 051 <tel:%28%2B55%29%20%2821%29%20993%20-%20588%20-%20051> > Skype: vinicius.lionel > http://www.qui.puc-rio.br/index.html > > > _______________________________________________ > R-br mailing list > R-br@listas.c3sl.ufpr.br <mailto:R-br@listas.c3sl.ufpr.br> > https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br > Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código > mínimo reproduzível. _______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br <mailto:R-br@listas.c3sl.ufpr.br> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e fornea cdigo mnimo reproduzvel.
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forne�a c�digo m�nimo reproduz�vel.
-- Best regards, Vinícius Lionel Mateus, MSc (http://lattes.cnpq.br/6501001637020665) Chemistry PhD Student Atmospheric Chemistry Laboratory - Dep. Chemistry PUC-Rio - Pontifical Catholic University of Rio de Janeiro Marquês de São Vicente, 225, Gávea - Rio de Janeiro, RJ - Brazil CEP: 22451-900 Phone: (+45) 26 28 28 51 (+55) (21) 3527-1327 (+55) (21) 993 - 588 - 051 Skype: vinicius.lionel http://www.qui.puc-rio.br/index.html

A força por aqui, sempre encontra o seu camimho. Que a firça esteja sempre contigo tambem. Pedro Brasil via Android (:)= Em 20/10/2015 18:38, "Vinícius Lionel Mateus" <vinynegrelli@gmail.com> escreveu:
Hey Pedro,
Infelizmente, não tenho expertise para a tarefa que você desempenha. O meu conhecimento sobre imputação (por enquanto) é mais aplicado à *envirometria/quimiometria*.
"Que a força esteja com você!"
Abs, Vinícius
On 10/16/2015 04:06 PM, Pedro Emmanuel Alvarenga Americano do Brasil wrote:
Ei vinicius,
Na verdade eu queria mesmo era utilizar a função aregImpute porque estou acostumado com ela e ela tem algumas opçoes que o mice não tem. Eu simulei uns dados e tentei rodar alguns exemplos mas ainda não saiu do geito que eu queria.
data <- data.frame(los = sample(seq(0,45,0.001),5000,T),desfecho.los = sample(c(0,1),5000,T),sex = sample(c("M","F"),5000,T),BMI= sample(seq(16,45,0.1),5000,T)) data2$BMI[sample(1:5000,2000)] <- NA
#### sem montar o cluster para computação paralelo library(rms) Sys.time() ini <- Sys.time() mit2 <- aregImpute(~ los + I(desfecho.los) + I(Age50) + Gender + I(BMI45), n.impute=5, data=data,tlinear=F) Sys.time() - ini Sys.time()
# Com o cluster para computação em paralelo library(mice) library(rms) library(foreach) library(doParallel) nCores <- detectCores() -1 cl <- makeCluster(nCores) clusterSetRNGStream(cl, 51) registerDoParallel(cl)
Sys.time() ini <- Sys.time() mit3 <- foreach(no = 1:nCores, # .combine = ibind, # .export = "mammalsleep", .packages = "rms") %dopar% { aregImpute(~ los + I(desfecho.los) + I(Age50) + Gender + I(BMI45), n.impute=5, data=data,tlinear=F) } Sys.time() - ini Sys.time() stopCluster(cl)
Nos dois exemplos acima a computação no meu dado original demorou cerca de 13 min. Repare que para criar o objeto mit3 eu exclui os argumentos .combine e .export. Pra falar a verdade eu não consegui entender a partir da documentação pra que serve esse argumento .export. O mit3 saiu como uma lista de tres objetos e cada um desses como cinco imputações. Então entendi eu levei o mesmo tempo pra fazer 3x mais imputações (3 é o numero de cores que usei). Mas eu gostaria mesmo que a saida fosse uma lista com um unico objeto com 5 imputações. Então entendi que a função ibind deveria fazer exatamente isso. Eu tentei usar a função ibind do pacote mice mas retorna um erro, provavelmente porque essa função só funciona para objetos de classe mids ou mice. Então acho que agora a questão seria como combinar as saidas das computações dos diferentes cores. Eu não sei se tem jeito porque a documentação original do Hmisc::aregImpute não comenta nada a respeito de computação em paralelo ou de juntar objetos da mesma função.
# para criar um dado completo. imputed.data <-impute.transcan(mit2, imputation=1, data=data, list.out=TRUE, pr=FALSE, check=FALSE) data[names(imputed.data)] <- imputed.data
Se voce puder me dar uma mão ... agradeceria muito.
Pedro Brasil
Em 10 de outubro de 2015 15:58, Daniel Marcelino <dmarcelino@live.com> escreveu:
Se o que você entende por imputação em paralelo for simplesmente executar alguma função de imputação do tipo MI, MICE , MAR , MCAR AMELIA etc em paralelo. Ou seja, repartir o tarefa entre as CPUs, eu acredito que bastaria você passar a função dentro de um foreach ou parLapply. Por exemplo, usando a base `mammalsleep` do pacote mice para gerar 10 tabelas:
nCores <- detectCores() -1 library(foreach) library(doParallel) cl <- makeCluster(nCores) clusterSetRNGStream(cl, 51) registerDoParallel(cl)
library(mice)
imp_mice <- foreach(no = 1:nCores, .combine = ibind, .export = "mammalsleep", .packages = "mice") %dopar% { mice(mammalsleep, m = 10, printFlag = FALSE) } stopCluster(cl)
# veja os dados completos: complete(imp_mice)
Você vair querer explorar também o que está armazenado no objeto : imp_mice Como: imp_mice$method imp_mice$data imp_mice$m etc.
D
2015-10-10 12:28 GMT-03:00 Vinícius Lionel Mateus <vinynegrelli@gmail.com
: Olá Pedro,
Ainda não precisei trabalhar com computação em paralelo, mas o tema imputação de dados é de grande interesse para mim. Ao ver seu email, me lembrei de um pacote recém desenvolvido, que trabalha com séries temporais. Se for seu caso, google " Imputation of missing data in time series for air pollutants".
O que você almeja com a imputação de dados? Substituir dados abaixo de um threshold (e.g., LOD, LOQ)? Séries temporais?
Imputação de dados é um tema bastante extenso. Acho que serie interessante você fornecer mais dicas, a fim de que outros colegas possam colaborar. (Eu vou ficar na torcida, e acompanhando o seu post ;-) )
Abs, Vinícius
On 10/09/2015 02:32 PM, Pedro Emmanuel Alvarenga Americano do Brasil wrote:
Amigos de R,
Eu estou trabalhando com um banco de dados que possui mais de 220000 linhas. Eu cheguei numa parte do plano de análise em que imputação multipla será conduzida.
Eu já usei a função Hmisc::aregIMpute e mice::mice que considero muito boas. O problema é que com essa quantidade de dados pra descobrir que deu um erro eu levo de 2h a 8h esperando. Então eu fiz um estrategia de testar em bancos menores subsets do principal.
Eu procurei por ai e há outros pacotes que fazem imputação mas não consegui encontrar qualquer um que possa fazer imputação com computação em paralelo.
Alguem saberia indicar uma função que faça imputação multipla com computação em paralelo?
Alguem ja tentou criar um algoritmo de computação em paralelo para fazer imputação multipla com Hmisc::aregImput?
Abraço a todos,
Pedro Brasil
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forne�a c�digo m�nimo reproduz�vel.
-- Best regards,
Vinícius Lionel Mateus, MSc (http://lattes.cnpq.br/6501001637020665) Chemistry PhD Student Atmospheric Chemistry Laboratory - Dep. Chemistry PUC-Rio - Pontifical Catholic University of Rio de Janeiro Marquês de São Vicente, 225, Gávea - Rio de Janeiro, RJ - Brazil CEP: 22451-900 Phone: (+45) 26 28 28 51 (+55) (21) 3527-1327 (+55) (21) 993 - 588 - 051 Skype: vinicius.lionel http://www.qui.puc-rio.br/index.html
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e fornea cdigo mnimo reproduzvel.
_______________________________________________ R-br mailing listR-br@listas.c3sl.ufpr.brhttps://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forne�a c�digo m�nimo reproduz�vel.
-- Best regards,
Vinícius Lionel Mateus, MSc (http://lattes.cnpq.br/6501001637020665) Chemistry PhD Student Atmospheric Chemistry Laboratory - Dep. Chemistry PUC-Rio - Pontifical Catholic University of Rio de Janeiro Marquês de São Vicente, 225, Gávea - Rio de Janeiro, RJ - Brazil CEP: 22451-900 Phone: (+45) 26 28 28 51 (+55) (21) 3527-1327 (+55) (21) 993 - 588 - 051 Skype: vinicius.lionelhttp://www.qui.puc-rio.br/index.html
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.

Se o que você entende por imputação em paralelo for simplesmente executar alguma função de imputação do tipo MI, MICE , MAR , MCAR AMELIA etc em paralelo. Ou seja, repartir o tarefa entre as CPUs, eu acredito que bastaria você passar a função dentro de um foreach ou parLapply. Por exemplo, usando a base `mammalsleep` do pacote mice para gerar 10 tabelas: nCores <- detectCores() -1 library(foreach) library(doParallel) cl <- makeCluster(nCores) clusterSetRNGStream(cl, 51) registerDoParallel(cl) library(mice) imp_mice <- foreach(no = 1:nCores, .combine = ibind, .export = "mammalsleep", .packages = "mice") %dopar% { mice(mammalsleep, m = 10, printFlag = FALSE) } stopCluster(cl) # veja os dados completos: complete(imp_mice) Você vair querer explorar também o que está armazenado no objeto : imp_mice Como: imp_mice$method imp_mice$data imp_mice$m etc. D 2015-10-10 12:28 GMT-03:00 Vinícius Lionel Mateus <vinynegrelli@gmail.com>:
Olá Pedro,
Ainda não precisei trabalhar com computação em paralelo, mas o tema imputação de dados é de grande interesse para mim. Ao ver seu email, me lembrei de um pacote recém desenvolvido, que trabalha com séries temporais. Se for seu caso, google " Imputation of missing data in time series for air pollutants".
O que você almeja com a imputação de dados? Substituir dados abaixo de um threshold (e.g., LOD, LOQ)? Séries temporais?
Imputação de dados é um tema bastante extenso. Acho que serie interessante você fornecer mais dicas, a fim de que outros colegas possam colaborar. (Eu vou ficar na torcida, e acompanhando o seu post ;-) )
Abs, Vinícius
On 10/09/2015 02:32 PM, Pedro Emmanuel Alvarenga Americano do Brasil wrote:
Amigos de R,
Eu estou trabalhando com um banco de dados que possui mais de 220000 linhas. Eu cheguei numa parte do plano de análise em que imputação multipla será conduzida.
Eu já usei a função Hmisc::aregIMpute e mice::mice que considero muito boas. O problema é que com essa quantidade de dados pra descobrir que deu um erro eu levo de 2h a 8h esperando. Então eu fiz um estrategia de testar em bancos menores subsets do principal.
Eu procurei por ai e há outros pacotes que fazem imputação mas não consegui encontrar qualquer um que possa fazer imputação com computação em paralelo.
Alguem saberia indicar uma função que faça imputação multipla com computação em paralelo?
Alguem ja tentou criar um algoritmo de computação em paralelo para fazer imputação multipla com Hmisc::aregImput?
Abraço a todos,
Pedro Brasil
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forne�a c�digo m�nimo reproduz�vel.
-- Best regards,
Vinícius Lionel Mateus, MSc (http://lattes.cnpq.br/6501001637020665) Chemistry PhD Student Atmospheric Chemistry Laboratory - Dep. Chemistry PUC-Rio - Pontifical Catholic University of Rio de Janeiro Marquês de São Vicente, 225, Gávea - Rio de Janeiro, RJ - Brazil CEP: 22451-900 Phone: (+45) 26 28 28 51 (+55) (21) 3527-1327 (+55) (21) 993 - 588 - 051 Skype: vinicius.lionel http://www.qui.puc-rio.br/index.html
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
participantes (4)
-
Daniel Marcelino
-
Daniel Marcelino
-
Pedro Emmanuel Alvarenga Americano do Brasil
-
Vinícius Lionel Mateus