
21 Out
2015
21 Out
'15
20:55
Problema resolvido pela regra nº 1: reseta (no caso remover todos os objetos) e recomece. Atenciosamente, Prof. Clécio da Silva Ferreira Depto de Estatística - UFJF Tel: (32) 2102-3306 Página: www.ufjf.br/clecio_ferreira Em 21 de outubro de 2015 18:13, Clécio da Silva Ferreira < clecio.ferreira@ufjf.edu.br> escreveu: > 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. > > > tetaM=matrix(0,p,M) > > strt<-Sys.time() > > tetaM=foreach (k = 1:M,.combine=cbind) %dopar% { > + y=yM[,k] > + lm(y~X-1)$coefficients > + #sgn.logL(teta3,y,X) > + } > > print(Sys.time()-strt) > Time difference of 0.1875119 secs > > > > tetaM > result.2 result.3 result.6 result.7 result.8 result.9 result.10 > X1 4.584143 4.923599 4.737695 5.2330998 4.743239 5.2077600 4.9280171 > X2 1.855138 1.121618 1.571513 0.6168855 1.305456 0.7255616 0.9040763 > > Atenciosamente, > > Prof. Clécio da Silva Ferreira > Depto de Estatística - UFJF > Tel: (32) 2102-3306 > Página: www.ufjf.br/clecio_ferreira > > > Em 21 de outubro de 2015 13:24, Rubem Kaipper Ceratti < > rubem_ceratti@yahoo.com.br> escreveu: > >> Clécio, >> >> 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. >> >> De toda forma, o foreach com o argumento *.combine=cbind* já retornaria >> uma matriz p por M. Segue abaixo uma versão simplificada e funcional do seu >> código: >> >> # Criação dos cores em paralelo: >> library(doParallel) >> cl <- makeCluster(3) >> registerDoParallel(cl) >> >> >> # Código >> # Modelo Normal >> n <- 100 >> M <- 1e4 >> p <- 2 >> X <- matrix(1, n, p) >> X[, 2] <- runif(n) >> beta0 <- matrix(c(5, 1), 2, 1) >> sigma2 <- 1 >> >> >> # Simulação >> strt <- Sys.time() >> tetaM <- foreach(k = 1:M, .combine = cbind) %dopar% { >> erro <- rnorm(n, 0, sigma2) >> y <- X %*% beta0 + erro >> lm(y ~ X-1)$coefficients >> } >> print(Sys.time()-strt) >> >> dim(tetaM) >> tetaM[, 1:100] >> >> >> ------------------------------ >> *De:* Clécio da Silva Ferreira <clecio.ferreira@ufjf.edu.br> >> *Para:* r-br@listas.c3sl.ufpr.br >> *Enviadas:* Quarta-feira, 21 de Outubro de 2015 9:03 >> *Assunto:* [R-br] Problemas em foreach e parallel >> >> Prezados, estou tentando utilizar as ferramentas de paralelo em R para >> Windows. Acontecem dois problemas: >> 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'. >> >> 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. >> >> Alguém tem alguma ideia da origem do problema? Ah, eu fiz para outros >> modelos que trabalho e ocorrem os mesmos problemas >> >> >> # Criação dos cores em paralelo: >> library(doParallel) >> library(foreach) >> cl<-makeCluster(3, type="SOCK") >> library(doSNOW) >> registerDoSNOW(cl) >> >> >> # Código >> >> # Modelo Normal >> n=100 >> M=10 >> p=2 >> X=matrix(1,n,p) >> X[,2]=runif(n) >> beta0=matrix(c(5,1),2,1) >> sigma2=1 >> >> yM=matrix(0,n,M) >> for (k in 1:M) { >> erro=rnorm(n,0,sigma2) >> yM[,k]=X%*%beta0+erro >> } >> >> >> tetaM=matrix(0,p,M) >> strt<-Sys.time() >> tetaM=foreach (k = 1:M,.combine=cbind) %dopar% { >> y=yM[,k] >> tetaM[,k]=lm(y~X-1)$coefficients >> #sgn.logL(teta3,y,X) >> } >> print(Sys.time()-strt) >> >> tetaM >> >> >> # Rodando no R: >> >> > tetaM=matrix(0,p,M) >> > strt<-Sys.time() >> > tetaM=foreach (k = 1:M,.combine=cbind) %dopar% { >> + y=yM[,k] >> + tetaM[,k]=lm(y~X-1)$coefficients >> + #sgn.logL(teta3,y,X) >> + } >> Error in e$fun(obj, substitute(ex), parent.frame(), e$data) : >> worker initialization failed: 5.207760032192210.72556160440376 >> > print(Sys.time()-strt) >> Time difference of 0.06304097 secs >> > >> > tetaM >> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] >> [1,] 0 0 0 0 0 0 0 0 0 0 >> [2,] 0 0 0 0 0 0 0 0 0 0 >> > tetaM=matrix(0,p,M) >> > strt<-Sys.time() >> > tetaM=foreach (k = 1:M,.combine=cbind) %dopar% { >> + y=yM[,k] >> + tetaM[,k]=lm(y~X-1)$coefficients >> + #sgn.logL(teta3,y,X) >> + } >> > print(Sys.time()-strt) >> Time difference of 0.07505703 secs >> > >> > tetaM >> result.1 result.2 result.3 result.4 result.6 result.7 result.10 >> X1 4.738553 4.584143 4.923599 4.962845 4.737695 5.2330998 4.9280171 >> X2 1.313208 1.855138 1.121618 1.053215 1.571513 0.6168855 0.9040763 >> >> >> Atenciosamente, >> >> Prof. Clécio da Silva Ferreira >> Depto de Estatística - UFJF >> Tel: (32) 2102-3306 >> Página: www.ufjf.br/clecio_ferreira >> >> >> _______________________________________________ >> 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� >> c�igo m�imo reproduz�el. >> >> >> _______________________________________________ >> 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. >> > >