<div dir="ltr">Problema resolvido pela regra nº 1: reseta (no caso remover todos os objetos) e recomece.</div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature"><div dir="ltr">Atenciosamente,<br><br>Prof. Clécio da Silva Ferreira<br>Depto de Estatística - UFJF<br>Tel: (32) 2102-3306<br>Página: <a href="http://www.ufjf.br/clecio_ferreira" target="_blank">www.ufjf.br/clecio_ferreira</a><br><br></div></div></div>
<br><div class="gmail_quote">Em 21 de outubro de 2015 18:13, Clécio da Silva Ferreira <span dir="ltr"><<a href="mailto:clecio.ferreira@ufjf.edu.br" target="_blank">clecio.ferreira@ufjf.edu.br</a>></span> escreveu:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Olá, Rubem, obrigado pela ajuda. Mas note abaixo que não resolveu o problema de não estimar todas as amostras.  Anda, note que é aleatório, pois nesse resultado, ela deixou de estimar as amostras 1, 4 e 5. No exemplo anterior, foram as amostras 5, 8 e 9.<br><div><br></div><div><span class=""><div>> tetaM=matrix(0,p,M)</div><div>> strt<-Sys.time()</div><div>> tetaM=foreach (k = 1:M,.combine=cbind) %dopar% {  </div><div>+ y=yM[,k]</div></span><div>+ lm(y~X-1)$coefficients</div><div>+ #sgn.logL(teta3,y,X)</div><div>+ }</div><div>> print(Sys.time()-strt)</div><div>Time difference of 0.1875119 secs</div><div>> </div><div>> tetaM</div><div>   result.2 result.3 result.6  result.7 result.8  result.9 result.10</div><div>X1 4.584143 4.923599 4.737695 5.2330998 4.743239 5.2077600 4.9280171</div><div>X2 1.855138 1.121618 1.571513 0.6168855 1.305456 0.7255616 0.9040763</div></div></div><div class="gmail_extra"><span class=""><br clear="all"><div><div><div dir="ltr">Atenciosamente,<br><br>Prof. Clécio da Silva Ferreira<br>Depto de Estatística - UFJF<br>Tel: (32) 2102-3306<br>Página: <a href="http://www.ufjf.br/clecio_ferreira" target="_blank">www.ufjf.br/clecio_ferreira</a><br><br></div></div></div>
<br></span><div class="gmail_quote"><div><div class="h5">Em 21 de outubro de 2015 13:24, Rubem Kaipper Ceratti <span dir="ltr"><<a href="mailto:rubem_ceratti@yahoo.com.br" target="_blank">rubem_ceratti@yahoo.com.br</a>></span> escreveu:<br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5"><div><div style="color:#000;background-color:#fff;font-family:Courier New,courier,monaco,monospace,sans-serif;font-size:13px"><div><span><font face="HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif">Clécio,</font></span></div><div><span><font face="HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif"><br></font></span></div><div><span><font face="HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif">Não sei exatamente a razão da mensagem de erro, mas repare que você cria a matriz tetaM, depois atribui à tetaM o resultado do foreach, e *dentro* do foreach você ainda tenta atribuir à coluna k de tetaM os coeficientes da regressão. Imagino que seja alguma coisa aí no meio que esteja causando o erro.</font></span></div><div><span><font face="HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif"><br></font></span></div><div dir="ltr"><span><font face="HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif">De toda forma, o foreach com o argumento <i>.combine=cbind</i> já retornaria uma matriz p por M. Segue abaixo uma versão simplificada e funcional do seu código:</font></span></div><span><div dir="ltr"><span><br></span></div><div dir="ltr"><font># Criação dos cores em paralelo:</font></div><div dir="ltr">library(doParallel)</div></span><div dir="ltr">cl <- makeCluster(3) </div><div dir="ltr">registerDoParallel(cl)</div><span><div dir="ltr"><br></div><div dir="ltr"><br></div><div dir="ltr"># Código</div><div dir="ltr"># Modelo Normal<br></div></span><div dir="ltr">n <- 100</div><div dir="ltr"><font>M <- 1e4</font></div><div dir="ltr">p <- 2</div><div dir="ltr"><font>X <- matrix(1, n, p)</font></div><div dir="ltr">X[, 2] <- runif(n)</div><div dir="ltr">beta0 <- matrix(c(5, 1), 2, 1)</div><div dir="ltr">sigma2 <- 1</div><div dir="ltr"><br></div><div dir="ltr"><br></div><div dir="ltr"># Simulação<br></div><div dir="ltr"><font>strt <- Sys.time()</font></div><div dir="ltr"><font>tetaM <- foreach(k = 1:M, .combine = cbind) %dopar% {  </font></div><div dir="ltr"><font>  erro <- rnorm(n, 0, sigma2)</font></div><div dir="ltr"><font>  y <- X %*% beta0 + erro</font></div><div dir="ltr"><font>  lm(y ~ X-1)$coefficients</font></div><div dir="ltr">}</div><div dir="ltr"><font>print(Sys.time()-strt)</font></div><div dir="ltr"><br></div><div dir="ltr">dim(tetaM)</div><div dir="ltr"><span></span></div><div dir="ltr"><font>tetaM[, 1:100]</font></div><div dir="ltr"><span><br></span></div><br>  <div style="font-family:Courier New,courier,monaco,monospace,sans-serif;font-size:13px"> <div style="font-family:HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif;font-size:16px"> <div dir="ltr"> <hr size="1">  <font size="2" face="Arial"><span> <b><span style="font-weight:bold">De:</span></b> Clécio da Silva Ferreira <<a href="mailto:clecio.ferreira@ufjf.edu.br" target="_blank">clecio.ferreira@ufjf.edu.br</a>><br> </span><b><span style="font-weight:bold">Para:</span></b> <a href="mailto:r-br@listas.c3sl.ufpr.br" target="_blank">r-br@listas.c3sl.ufpr.br</a> <br> <b><span style="font-weight:bold">Enviadas:</span></b> Quarta-feira, 21 de Outubro de 2015 9:03<br> <b><span style="font-weight:bold">Assunto:</span></b> [R-br] Problemas em foreach e parallel<br> </font> </div> <div><div><div><br><div><div dir="ltr"><div>Prezados, estou tentando utilizar as ferramentas de paralelo em R para Windows. Acontecem dois problemas:</div><div>1. Às vezes parece que os workers não 'ativam', dando a mensagem de erro abaixo. Note que não roda, pois o tetaM continua como matriz de 0s. Eu às vezes tenho de colar as funções mais de uma vez para então 'ligar'.</div><div><br></div><div>2. Neste exemplo, eu faço replicações de amostras de um MRLM (só um treinamento) e  estimo o modelo para cada amostra. Independente da quantidade de amostras que eu gero (M amostras), ele sempre me devolve com 3 resultados a menos. 3 é o nº de cores que eu coloquei.</div><div><br></div><div>Alguém tem alguma ideia da origem do problema? Ah, eu fiz para outros modelos que trabalho e ocorrem os mesmos problemas</div><div><br></div><div><br></div><div># Criação dos cores em paralelo:</div><div><div>library(doParallel)</div><div>library(foreach)</div><div>cl<-makeCluster(3, type="SOCK") <br></div><div>library(doSNOW)</div><div>registerDoSNOW(cl)</div></div><div><br></div><div><br></div><div># Código</div><div><br></div><div><div># Modelo Normal</div><div>n=100</div><div>M=10</div><div>p=2</div><div>X=matrix(1,n,p)</div><div>X[,2]=runif(n)</div><div>beta0=matrix(c(5,1),2,1)</div><div>sigma2=1</div><div><br></div><div>yM=matrix(0,n,M)</div><div>for (k in 1:M) { </div><div>erro=rnorm(n,0,sigma2) </div><div>yM[,k]=X%*%beta0+erro</div><div>}</div><div><br></div><div><br></div><div>tetaM=matrix(0,p,M)</div><div>strt<-Sys.time()</div><div>tetaM=foreach (k = 1:M,.combine=cbind) %dopar% {  </div><div>y=yM[,k]</div><div>tetaM[,k]=lm(y~X-1)$coefficients</div><div>#sgn.logL(teta3,y,X)</div><div>}</div><div>print(Sys.time()-strt)</div><div><br></div><div>tetaM</div></div><div><br></div><div><br></div><div># Rodando no R:</div><div><br></div><div><div>> tetaM=matrix(0,p,M)</div><div>> strt<-Sys.time()</div><div>> tetaM=foreach (k = 1:M,.combine=cbind) %dopar% {  </div><div>+ y=yM[,k]</div><div>+ tetaM[,k]=lm(y~X-1)$coefficients</div><div>+ #sgn.logL(teta3,y,X)</div><div>+ }</div><div>Error in e$fun(obj, substitute(ex), parent.frame(), e$data) : </div><div>  worker initialization failed: 5.207760032192210.72556160440376</div><div>> print(Sys.time()-strt)</div><div>Time difference of 0.06304097 secs</div><div>> </div><div>> tetaM</div><div>     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]</div><div>[1,]    0    0    0    0    0    0    0    0    0     0</div><div>[2,]    0    0    0    0    0    0    0    0    0     0</div><div>> tetaM=matrix(0,p,M)</div><div>> strt<-Sys.time()</div><div>> tetaM=foreach (k = 1:M,.combine=cbind) %dopar% {  </div><div>+ y=yM[,k]</div><div>+ tetaM[,k]=lm(y~X-1)$coefficients</div><div>+ #sgn.logL(teta3,y,X)</div><div>+ }</div><div>> print(Sys.time()-strt)</div><div>Time difference of 0.07505703 secs</div><div>> </div><div>> tetaM</div><div>   result.1 result.2 result.3 result.4 result.6  result.7 result.10</div><div>X1 4.738553 4.584143 4.923599 4.962845 4.737695 5.2330998 4.9280171</div><div>X2 1.313208 1.855138 1.121618 1.053215 1.571513 0.6168855 0.9040763</div></div><div><br></div><br clear="all"><div><div><div dir="ltr">Atenciosamente,<br><br>Prof. Clécio da Silva Ferreira<br>Depto de Estatística - UFJF<br>Tel: (32) 2102-3306<br>Página: <a rel="nofollow" href="http://www.ufjf.br/clecio_ferreira" target="_blank">www.ufjf.br/clecio_ferreira</a><br><br></div></div></div>
</div></div><br></div></div>_______________________________________________<br>R-br mailing list<br><a href="mailto:R-br@listas.c3sl.ufpr.br" target="_blank">R-br@listas.c3sl.ufpr.br</a><br><a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" 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" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forne� c�igo m�imo reproduz�el.<br><br></div> </div> </div>  </div></div><br>_______________________________________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br" target="_blank">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 mínimo reproduzível.<br></blockquote></div><br></div>
</blockquote></div><br></div>