<div dir="ltr"><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(0,0,102)">Ei vinicius,</div><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(0,0,102)"><br></div><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(0,0,102)">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. </div><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(0,0,102)"><br></div><div class="gmail_default" style=""><div class="gmail_default" style="color:rgb(0,0,102);font-family:'courier new',monospace">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))</div><div class="gmail_default" style="color:rgb(0,0,102);font-family:'courier new',monospace">data2$BMI[sample(1:5000,2000)] <- NA</div><div class="gmail_default" style="color:rgb(0,0,102);font-family:'courier new',monospace"><br></div><div class="gmail_default" style="color:rgb(0,0,102);font-family:'courier new',monospace">#### sem montar o cluster para computação paralelo</div><div class="gmail_default" style=""><div class="gmail_default"><font color="#000066" face="courier new, monospace">library(rms)</font></div><div class="gmail_default"><font color="#000066" face="courier new, monospace">Sys.time()</font></div><div class="gmail_default"><font color="#000066" face="courier new, monospace">ini <- Sys.time()</font></div><div class="gmail_default"><font color="#000066" face="courier new, monospace">mit2 <- aregImpute(~ los + I(desfecho.los) + I(Age50) + Gender + I(BMI45), n.impute=5, data=data,tlinear=F)</font></div><div class="gmail_default"><font color="#000066" face="courier new, monospace">Sys.time() - ini</font></div><div class="gmail_default"><font color="#000066" face="courier new, monospace">Sys.time()</font></div><div class="gmail_default"><font color="#000066" face="courier new, monospace"><br></font></div><div class="gmail_default"><font color="#000066" face="courier new, monospace"># Com o cluster para computação em paralelo</font></div><div class="gmail_default"><font color="#000066" face="courier new, monospace"><div class="gmail_default">library(mice)</div><div class="gmail_default">library(rms)</div><div class="gmail_default">library(foreach)</div><div class="gmail_default">library(doParallel)</div><div class="gmail_default"><div class="gmail_default">nCores <- detectCores() -1</div><div class="gmail_default">cl <- makeCluster(nCores)</div><div class="gmail_default">clusterSetRNGStream(cl, 51)</div><div class="gmail_default">registerDoParallel(cl)</div><div><br></div></div></font></div><div class="gmail_default"><font color="#000066" face="courier new, monospace">Sys.time()</font></div><div class="gmail_default"><font color="#000066" face="courier new, monospace">ini <- Sys.time()</font></div><div class="gmail_default"><font color="#000066" face="courier new, monospace">mit3 <-</font></div><div class="gmail_default"><font color="#000066" face="courier new, monospace">  foreach(no = 1:nCores,</font></div><div class="gmail_default"><font color="#000066" face="courier new, monospace">          # .combine = ibind,</font></div><div class="gmail_default"><font color="#000066" face="courier new, monospace">          # .export = "mammalsleep",</font></div><div class="gmail_default"><font color="#000066" face="courier new, monospace">          .packages = "rms") %dopar%</font></div><div class="gmail_default"><font color="#000066" face="courier new, monospace">          {</font></div><div class="gmail_default"><font color="#000066" face="courier new, monospace">            aregImpute(~ los + I(desfecho.los) + I(Age50) + Gender + I(BMI45), n.impute=5, data=data,tlinear=F)</font></div><div class="gmail_default"><font color="#000066" face="courier new, monospace">          }</font></div><div class="gmail_default"><font color="#000066" face="courier new, monospace">Sys.time() - ini</font></div><div class="gmail_default"><font color="#000066" face="courier new, monospace">Sys.time()</font></div><div class="gmail_default"><font color="#000066" face="courier new, monospace">stopCluster(cl)</font></div><div style="color:rgb(0,0,102);font-family:'courier new',monospace"><br></div></div><div class="gmail_default" style="color:rgb(0,0,102);font-family:'courier new',monospace">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. </div></div><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(0,0,102)"><br></div><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(0,0,102)"># para criar um dado completo. </div><div class="gmail_default" style=""><font color="#000066" face="courier new, monospace">imputed.data <-impute.transcan(mit2, imputation=1, data=data, list.out=TRUE, pr=FALSE, check=FALSE)</font><br></div><div class="gmail_default" style=""><font color="#000066" face="courier new, monospace">data[names(imputed.data)] <- </font><span style="color:rgb(0,0,102);font-family:'courier new',monospace">imputed.data</span><br></div><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(0,0,102)"><br></div><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(0,0,102)">Se voce puder me dar uma mão ... agradeceria muito.</div><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(0,0,102)"><br></div></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><font face="'courier new', monospace" style="background-color:rgb(255,255,255)" color="#000066">Pedro Brasil</font></div></div></div></div></div></div>
<br><div class="gmail_quote">Em 10 de outubro de 2015 15:58, Daniel Marcelino <span dir="ltr"><<a href="mailto:dmarcelino@live.com" target="_blank">dmarcelino@live.com</a>></span> escreveu:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Se o que você entende por imputação em paralelo for simplesmente<br>
executar alguma função de imputação do tipo MI, MICE , MAR , MCAR<br>
AMELIA etc em paralelo. Ou seja, repartir o tarefa entre as CPUs, eu<br>
acredito que bastaria você passar a função dentro de um foreach ou<br>
parLapply. Por exemplo, usando a base `mammalsleep` do pacote mice<br>
para gerar 10 tabelas:<br>
<br>
<br>
nCores <- detectCores() -1<br>
library(foreach)<br>
library(doParallel)<br>
cl <- makeCluster(nCores)<br>
clusterSetRNGStream(cl, 51)<br>
registerDoParallel(cl)<br>
<br>
library(mice)<br>
<br>
imp_mice <-<br>
    foreach(no = 1:nCores,<br>
            .combine = ibind,<br>
            .export = "mammalsleep",<br>
            .packages = "mice") %dopar%<br>
            {<br>
                mice(mammalsleep, m = 10, printFlag = FALSE)<br>
            }<br>
stopCluster(cl)<br>
<br>
# veja os dados completos:<br>
 complete(imp_mice)<br>
<br>
Você vair querer explorar também o que está armazenado no objeto : imp_mice<br>
Como:<br>
imp_mice$method<br>
imp_mice$data<br>
imp_mice$m  etc.<br>
<br>
D<br>
<div><div class="h5"><br>
2015-10-10 12:28 GMT-03:00 Vinícius Lionel Mateus <<a href="mailto:vinynegrelli@gmail.com">vinynegrelli@gmail.com</a>>:<br>
> Olá Pedro,<br>
><br>
> Ainda não precisei trabalhar com computação em paralelo, mas o tema<br>
> imputação de dados é de grande interesse para mim.<br>
> Ao ver seu email, me lembrei de um pacote recém desenvolvido, que trabalha<br>
> com séries temporais.<br>
> Se for seu caso, google " Imputation of missing data in time series for air<br>
> pollutants".<br>
><br>
> O que você almeja com a imputação de dados?<br>
> Substituir dados abaixo de um threshold (e.g., LOD, LOQ)?<br>
> Séries temporais?<br>
><br>
> Imputação de dados é um tema bastante extenso.<br>
> Acho que serie interessante você fornecer mais dicas, a fim de que outros<br>
> colegas possam colaborar.<br>
> (Eu vou ficar na torcida, e acompanhando o seu post ;-) )<br>
><br>
> Abs,<br>
> Vinícius<br>
><br>
> On 10/09/2015 02:32 PM, Pedro Emmanuel Alvarenga Americano do Brasil wrote:<br>
><br>
> Amigos de R,<br>
><br>
> Eu estou trabalhando com um banco de dados que possui mais de 220000 linhas.<br>
> Eu cheguei numa parte do plano de análise em que imputação multipla será<br>
> conduzida.<br>
><br>
> Eu já usei a função Hmisc::aregIMpute e mice::mice que considero muito boas.<br>
> O problema é que com essa quantidade de dados pra descobrir que deu um erro<br>
> eu levo de 2h a 8h esperando. Então eu fiz um estrategia de testar em bancos<br>
> menores subsets do principal.<br>
><br>
> Eu procurei por ai e há outros pacotes que fazem imputação mas não consegui<br>
> encontrar qualquer um que possa fazer imputação com computação em paralelo.<br>
><br>
> Alguem saberia indicar uma função que faça imputação multipla com computação<br>
> em paralelo?<br>
><br>
> Alguem ja tentou criar um algoritmo de computação em paralelo para fazer<br>
> imputação multipla com Hmisc::aregImput?<br>
><br>
> Abraço a todos,<br>
><br>
> Pedro Brasil<br>
><br>
><br>
> _______________________________________________<br>
> R-br mailing list<br>
> <a href="mailto:R-br@listas.c3sl.ufpr.br">R-br@listas.c3sl.ufpr.br</a><br>
> <a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" rel="noreferrer" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
> Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" rel="noreferrer" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forne�a c�digo<br>
> m�nimo reproduz�vel.<br>
><br>
><br>
> --<br>
> Best regards,<br>
><br>
> Vinícius Lionel Mateus, MSc (<a href="http://lattes.cnpq.br/6501001637020665" rel="noreferrer" target="_blank">http://lattes.cnpq.br/6501001637020665</a>)<br>
> Chemistry PhD Student<br>
> Atmospheric Chemistry Laboratory - Dep. Chemistry<br>
> PUC-Rio - Pontifical Catholic University of Rio de Janeiro<br>
> Marquês de São Vicente, 225, Gávea - Rio de Janeiro, RJ - Brazil CEP:<br>
> 22451-900<br>
> Phone:        <a href="tel:%28%2B45%29%2026%2028%2028%2051" value="+4526282851">(+45) 26 28 28 51</a><br>
>               <a href="tel:%28%2B55%29%20%2821%29%203527-1327" value="+552135271327">(+55) (21) 3527-1327</a><br>
>               <a href="tel:%28%2B55%29%20%2821%29%20993%20-%20588%20-%20051" value="+5521993588051">(+55) (21) 993 - 588 - 051</a><br>
> Skype: vinicius.lionel<br>
> <a href="http://www.qui.puc-rio.br/index.html" rel="noreferrer" target="_blank">http://www.qui.puc-rio.br/index.html</a><br>
><br>
><br>
> _______________________________________________<br>
> R-br mailing list<br>
> <a href="mailto:R-br@listas.c3sl.ufpr.br">R-br@listas.c3sl.ufpr.br</a><br>
> <a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" rel="noreferrer" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
</div></div>> Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" rel="noreferrer" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código<br>
> mínimo reproduzível.<br>
<span class="">_______________________________________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br">R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" rel="noreferrer" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
</span>Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" rel="noreferrer" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e fornea cdigo mnimo reproduzvel.</blockquote></div><br></div>