
Rogério, Agradeço a sua generosidade. Abraços, Luiz Roberto Luiz Roberto Martins Pinto Prof. Pleno/DCET/UESC Laboratório de Estatística Computacional Universidade Estadual de Santa Cruz Ilhéus-Bahia luizroberto.uesc@gmail.com skype: lrmpinto http://lattes.cnpq.br/2732314327604831 Em 23 de outubro de 2013 21:29, Rogério Barbosa <antrologos@gmail.com>escreveu:
O código abaixo toma partes de scripts do PDF dos pacotes ff e ffbase.
Eu testei com seus dados e deu certo. Mas na hora de copiar e colar para o e-mail, houve erros... Acho que agora está certo. Mas ressalto, isso é só uma regressão linear. Não sei como calcular o two-way anova a partir disso.. somente uma anova comum. Mas estou certo de que tem jeito...
#####################################
require(ff) require(ffbase) require(biglm)
load("RCBD_Data.Rdata")
dados.ff = as.ffdf(Data) rm(Data) gc()
form = y ~ factor(Treat) + factor(block)
for (i in chunk(dados.ff, by=25000)){ if (i[1]==1){ message("first chunk is: ", i[[1]],":",i[[2]]) biglmfit <- biglm(form, data=dados.ff[i,,drop=FALSE]) }else{ message("next chunk is: ", i[[1]],":",i[[2]]) biglmfit <- update(biglmfit, dados.ff[i,,drop=FALSE]) } }
summary(biglmfit)
2013/10/23 Luiz Roberto Martins Pinto <luizroberto.uesc@gmail.com>
Agora deu o seguinte erro...
Erro em is.data.frame(data) : objeto 'firis' não encontrado
Luiz Roberto Martins Pinto Prof. Pleno/DCET/UESC Laboratório de Estatística Computacional Universidade Estadual de Santa Cruz Ilhéus-Bahia
luizroberto.uesc@gmail.com skype: lrmpinto http://lattes.cnpq.br/2732314327604831
Em 23 de outubro de 2013 19:56, Rogério Barbosa <antrologos@gmail.com>escreveu:
desculpe, foi um erro. A linha correta é:
form = y ~ factor(Treat) + factor(block)
2013/10/23 Luiz Roberto Martins Pinto <luizroberto.uesc@gmail.com>
Rogério,
Agradeço sua colaboração, e o script enviado.
O comando form(y ~ factor(Treat) + factor(block)) não foi aceito.
Luiz Roberto Martins Pinto Prof. Pleno/DCET/UESC Laboratório de Estatística Computacional Universidade Estadual de Santa Cruz Ilhéus-Bahia
luizroberto.uesc@gmail.com skype: lrmpinto http://lattes.cnpq.br/2732314327604831
Em 23 de outubro de 2013 19:24, Rogério Barbosa <antrologos@gmail.com>escreveu:
O biglm funciona bem. Apliquei nos dados do Luiz Roberto e deu certo.
Mas é bem lento (a função rxLinMod do pacote RevoScalerR, do RevolutionR é bemmm mais rápida). Mas se o negócio é continuar usando o R convencional, então funciona bem.
Segue abaixo o código.
Mas a função "aov" não funciona em cima do objeto gerado pelo biglm (e funciona em cima do lm...)
Eu não sei como calcular um two-way anova a partir desses resultados... mas creio que tem jeito. Aliás... gostaria muito mesmo de saber como fazê-lo.
Ma se o objetivo não envolve diferenciar os quadrados de regressão entre as variáveis "Treat" e "block", então um anova simples é facil de calcular -- a partir dos valores preditos e resíduos.
abraços, Rogério
#####################################
require(ff) require(ffbase) require(biglm)
load("RCBD_Data.Rdata")
dados.ff = as.ffdf(Data) rm(Data) gc()
form(y ~ factor(Treat) + factor(block))
for (i in chunk(dados.ff, by=25000)){ if (i[1]==1){ message("first chunk is: ", i[[1]],":",i[[2]]) biglmfit <- biglm(form, data=dados.ff[i,,drop=FALSE]) }else{ message("next chunk is: ", i[[1]],":",i[[2]]) biglmfit <- update(biglmfit, firis[i,,drop=FALSE]) } }
2013/10/23 Benilton Carvalho <beniltoncarvalho@gmail.com>
Sugestão completamente sem checar dados: biglm ou mesmo o biganalytics (sugestão por esse último, já que o usuário não parece ter RAM suficiente) foram tentados? On Oct 23, 2013 12:24 PM, "Luiz Roberto Martins Pinto" < luizroberto.uesc@gmail.com> wrote:
> Edson, > > Agradeço a sugestão. > Vou experimentar. > Abraços, > Luiz Roberto > > Luiz Roberto Martins Pinto > Prof. Pleno/DCET/UESC > Laboratório de Estatística Computacional > Universidade Estadual de Santa Cruz > Ilhéus-Bahia > > luizroberto.uesc@gmail.com > skype: lrmpinto > http://lattes.cnpq.br/2732314327604831 > > > > > Em 23 de outubro de 2013 11:02, Edson Lira <edinhoestat@yahoo.com.br > > escreveu: > >> Tem um pacote chamado ff que executa a leitura de arquivos grandes. >> >> Transforme seus dados para um arquivo .csv (caso não seja) e tente >> a leitura com este pacote. >> >> >> [ ]'s. >> Edson Lira >> Estatístico >> Manaus-Amazonas >> >> >> Em Quarta-feira, 23 de Outubro de 2013 5:35, Elias T Krainski < >> eliaskrainski@yahoo.com.br> escreveu: >> Oi Luiz, >> >> O problema e' que vc tem 1000 niveis em cada um de dois fatores. >> Como a >> funcao aov() usa a funcao lm(), esta monta a matriz de >> delineamento, ne >> neste caso tem dimensao de um milhao por 1999. Para armazenar essa >> matriz vc precisa de 14.9Gb >> >> print(object.size(double(1999))*1e6, unit='Gb') >> >> Se seu computador tivesse 16Gb de memoria vc conseguiria fazer >> calculando as estatistica suficientes X'X e X'y. Foi o que eu fiz e >> enviei X'X e X'y no seu e-mail. Mas isso ainda nao 'e a melhor >> solucao >> nesse caso particular. >> >> Como vc nao tem fator continuo, e' muito barato computacionalmente >> fazer >> o quadro de anova calculando as expressoes de soma de quadrados. >> Dessa forma vc consegue montar um quadro de anova facilmente num >> computador com pouca memoria. Note que seu dado consiste em apenas >> dois >> fatores e uma resposta continua, cada um com 1 milhao de registros. >> Isso >> ocupa apenas 19.2Mb em memoria >> >> print(object.size(Data), un='Mb') >> >> Veja como montar o quadro de anova: >> >> attach(Data) >> n <- length(y) >> ntr <- c(length(levels(block)), length(levels(Treat))) >> gltot <- n-1 >> gltra <- ntr - 1 >> glres <- n - sum(ntr) >> >> correcao <- (sum(y)^2)/n >> sqtot <- sum(y^2)-correcao >> bltot <- tapply(y, block, sum) >> trtot <- tapply(y, Treat, sum) >> >> sqbl <- sum(bltot^2)/ntr[2] - correcao >> sqtr <- sum(trtot^2)/ntr[1] - correcao >> sqres <- sqtot - sqbl - sqtr >> >> qmbl <- sqbl/gltra[1] >> qmtr <- sqtr/gltra[2] >> qmres <- sqres/glres >> >> fval <- c(qmbl, qmtr)/qmres >> pval <- pf(fval, gltra, glres, lower.tail=FALSE) >> >> data.frame(gl=c(gltra, glres, gltot), >> sqt=c(sqbl, sqtr, sqres, sqtot), >> qm=c(qmbl, qmtr, qmres, NA), >> fval=c(fval, NA, NA), >> pval=c(pval, NA, NA)) >> >> >> On 10/22/2013 08:13 PM, Luiz Roberto Martins Pinto wrote: >> > Caros companheiros da R-BR. >> > >> > Não consigo fazer uma ANOVA com arquivo com 1e+06 registros. >> > Então... preciso de ajuda!!! >> > >> > Dados: >> > >> > http://www1.datafilehost.com/d/c0d31775 >> > >> > Meu pc >> > R for windows 2.15.1(x64) >> > 8 Gb de Memo >> > >> > load('RCBD_Data.Rdata') # Arquivo com 1e+06 registros >> > >> > m=aov(y~Treat+block,data=Data) >> > summary(m) >> > >> > Mensagem de erro: >> > >> > Erro: não é possível alocar vetor de tamanho 14.9 Gb >> > Além disso: Mensagens de aviso perdidas: >> > 1: In model.matrix.default(mt, mf, contrasts) : >> > Reached total allocation of 8086Mb: see help(memory.size) >> > 2: In model.matrix.default(mt, mf, contrasts) : >> > Reached total allocation of 8086Mb: see help(memory.size) >> > 3: In model.matrix.default(mt, mf, contrasts) : >> > Reached total allocation of 8086Mb: see help(memory.size) >> > 4: In model.matrix.default(mt, mf, contrasts) : >> > Reached total allocation of 8086Mb: see help(memory.size) >> > >> > >> > Luiz Roberto Martins Pinto >> > Prof. Pleno/DCET/UESC >> > Laboratório de Estatística Computacional >> > Universidade Estadual de Santa Cruz >> > Ilhéus-Bahia >> > >> > luizroberto.uesc@gmail.com <mailto:luizroberto.uesc@gmail.com> >> > skype: lrmpinto >> > http://lattes.cnpq.br/2732314327604831 >> > >> > >> > >> > >> > _______________________________________________ >> > 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 >> 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 >> 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 > 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 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 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 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 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 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 forneça código mínimo reproduzível.