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 <[email protected] <mailto:[email protected]>> 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
    <[email protected] <mailto:[email protected]>>:
    > 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
    > [email protected] <mailto:[email protected]>
    > 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
    > [email protected] <mailto:[email protected]>
    > 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
    [email protected] <mailto:[email protected]>
    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
[email protected]
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
[email protected]
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.

Responder a