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

Elias T Krainski eliaskrainski em yahoo.com.br
Quarta Outubro 23 11:26:35 BRST 2013


Um fator 'e armazenado em memoria como um 'integer' com classes. o fato 
de ter 1000 classes cada fator aumenta apenas 1000 'character' em 
memoria (em relacao ao vetor de 'integer's).

Nos dados em questao, a resposta ocupa mais memoria (por ser 'numeric')

 > sapply(Data, object.size)/1024
    block    Treat        y
3961.328 3961.328 7812.539

O grande numero de classes impacta diretamente na analise pretendida 
(ANOVA) se usar funcoes como aov() ou lm().

Abs,
Elias.

On 10/23/2013 03:19 PM, Edson Lira wrote:
> É verdade Elias. Por outro lado são muitos níveis para um fator, você
> não acha?
>
> Talvez uma revisão nos dados melhorasse na execução da rotina.
> [  ]'s
> Edson Lira
> Estatístico
> Manaus-Amazonas
>
>
> Em Quarta-feira, 23 de Outubro de 2013 9:08, Elias T Krainski
> <eliaskrainski em yahoo.com.br> escreveu:
> isso so' ajuda na leitura (mais rapido por exemplo). mas o conjunto de
> dados nao e' tao grande e o problema e' outro: anova.
>
> On 10/23/2013 03:02 PM, Edson Lira wrote:
>  > 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 <mailto: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>
> <mailto:luizroberto.uesc em gmail.com <mailto:luizroberto.uesc em gmail.com>>
>  > <mailto:luizroberto.uesc em gmail.com
> <mailto:luizroberto.uesc em gmail.com> <mailto: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 <mailto:R-br em listas.c3sl.ufpr.br>
> <mailto:R-br em listas.c3sl.ufpr.br <mailto: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 <mailto:R-br em listas.c3sl.ufpr.br>
> <mailto:R-br em listas.c3sl.ufpr.br <mailto: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 <mailto: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 <mailto: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.
>


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