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

Luiz Roberto Martins Pinto luizroberto.uesc em gmail.com
Quarta Outubro 23 20:00:24 BRST 2013


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 em gmail.com
skype: lrmpinto
http://lattes.cnpq.br/2732314327604831




Em 23 de outubro de 2013 19:56, Rogério Barbosa <antrologos em 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 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.
>>
>
>
> _______________________________________________
> 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/1e3f7d39/attachment.html>


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