[R-br] Não consigo fazer uma ANOVA com arquivo com 1e+06 registros.

Rogério Barbosa antrologos em gmail.com
Quarta Outubro 23 19:56:22 BRST 2013


desculpe, foi um erro. A linha correta é:

form = y ~ factor(Treat) + factor(block)


2013/10/23 Luiz Roberto Martins Pinto <luizroberto.uesc em 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 em gmail.com
> skype: lrmpinto
> http://lattes.cnpq.br/2732314327604831
>
>
>
>
> Em 23 de outubro de 2013 19:24, Rogério Barbosa <antrologos em 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 em 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 em 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 em gmail.com
>>>> skype: lrmpinto
>>>> http://lattes.cnpq.br/2732314327604831
>>>>
>>>>
>>>>
>>>>
>>>> Em 23 de outubro de 2013 11:02, Edson Lira <edinhoestat em 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 em 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 em gmail.com <mailto:luizroberto.uesc em gmail.com>
>>>>> > skype: lrmpinto
>>>>> > http://lattes.cnpq.br/2732314327604831
>>>>> >
>>>>> >
>>>>> >
>>>>> >
>>>>> > _______________________________________________
>>>>> > R-br mailing list
>>>>> > R-br em 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 em 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 em 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 em 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 em 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 em 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 em 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.
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20131023/f7f22593/attachment-0001.html>


Mais detalhes sobre a lista de discussão R-br