análise multivariada em grandes dados

OI Gente. Eu descobri que para grandes conjuntos de dados, tipo Censo, Pnad, etc, existe o pacote ffbase, dplyr, sendo que para usar modelos lineares generalizados, podemos usar o pacote. biglm. No entanto, preciso usar técnicas multivariadas, tipo Análise Fatorial e Discriminante. Alguém sabe qual posso usar quando trabalhamos com dados que "explodem" a memória do R? Agradeço a todos.

A CRAN Task View para High Performance Computing[1] pode lhe dar algumas opções. Este artigo sobre Big Data no R[2] também é muito citado. Você precisa mesmo de manter seus dados fora da RAM? Não é fácil estourar a memória RAM com dados de PNAD, embora eu nunca tenha tentado usar todos dados do Censo de uma só vez. Além disso, você frequentemente pode restringir-se apenas a um subconjunto de variáveis, o que facilita em muito a leitura dos dados e sua alocação na RAM. Se o motivo de você achar isso é o read.fwf travar, tente importar os dados com alguma alternativa antes de concluir isso. Uma opção é usar a função do pacote readr, e outra é converter para csv usando o fwf2csv do pacote descr e então importar com o fread do pacote data.table. Talvez a dificuldade maior seja com funções pouco otimizadas. Quando alguém se dá ao trabalho de escrever algo em C ou C++, o resultado costuma ser mais escalável do que código escrito. Além disso, é necessário tomar cuidado com laços *for* ou *apply* (que é um *for* disfarçado). Também sugiro considerar com carinho o uso de data.table[3] em vez de data.frame (outra alternativa parece ser o tibble[4], mas não testei). Espero ter ajudado. Leonardo Ferreira Fontenelle[5] Em Seg 11 jul. 2016, às 12:24, Edimeire Alexandra Pinto via R-br escreveu:
OI Gente.
Eu descobri que para grandes conjuntos de dados, tipo Censo, Pnad, etc, existe o pacote ffbase, dplyr, sendo que para usar modelos lineares generalizados, podemos usar o pacote. biglm.
No entanto, preciso usar técnicas multivariadas, tipo Análise Fatorial e Discriminante. Alguém sabe qual posso usar quando trabalhamos com dados que "explodem" a memória do R?
Agradeço a todos. _________________________________________________ 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.
Links: 1. https://cran.r-project.org/web/views/HighPerformanceComputing.html 2. http://www.r-bloggers.com/five-ways-to-handle-big-data-in-r/ 3. https://cran.r-project.org/web/packages/data.table/index.html 4. https://cran.r-project.org/web/packages/tibble/index.html 5. http://lattes.cnpq.br/9234772336296638

OI, obrigada pela resposta. Mas acredite, tenho de usar fora da memória RAM. Para manipular os dados, consegui com o pacote ffbase e Biglm, no entanto, no caso de análise discriminante e fatorial, o R não roda, ele trava e acusam excesso de tempo gasto para computar o que eu quero. Alguém conhece algum pacote? Em Segunda-feira, 11 de Julho de 2016 18:07, Leonardo Fontenelle via R-br <r-br@listas.c3sl.ufpr.br> escreveu: A CRAN Task View para High Performance Computing pode lhe dar algumas opções. Este artigo sobre Big Data no R também é muito citado. Você precisa mesmo de manter seus dados fora da RAM? Não é fácil estourar a memória RAM com dados de PNAD, embora eu nunca tenha tentado usar todos dados do Censo de uma só vez. Além disso, você frequentemente pode restringir-se apenas a um subconjunto de variáveis, o que facilita em muito a leitura dos dados e sua alocação na RAM. Se o motivo de você achar isso é o read.fwf travar, tente importar os dados com alguma alternativa antes de concluir isso. Uma opção é usar a função do pacote readr, e outra é converter para csv usando o fwf2csv do pacote descr e então importar com o fread do pacote data.table. Talvez a dificuldade maior seja com funções pouco otimizadas. Quando alguém se dá ao trabalho de escrever algo em C ou C++, o resultado costuma ser mais escalável do que código escrito. Além disso, é necessário tomar cuidado com laços for ou apply (que é um for disfarçado). Também sugiro considerar com carinho o uso de data.table em vez de data.frame (outra alternativa parece ser o tibble, mas não testei). Espero ter ajudado. Leonardo Ferreira Fontenelle Em Seg 11 jul. 2016, às 12:24, Edimeire Alexandra Pinto via R-br escreveu: OI Gente. Eu descobri que para grandes conjuntos de dados, tipo Censo, Pnad, etc, existe o pacote ffbase, dplyr, sendo que para usar modelos lineares generalizados, podemos usar o pacote. biglm. No entanto, preciso usar técnicas multivariadas, tipo Análise Fatorial e Discriminante. Alguém sabe qual posso usar quando trabalhamos com dados que "explodem" a memória do R? Agradeço a todos. _______________________________________________ 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� c�igo m�imo reproduz�el.

* The bigmemory[1] package by Kane and Emerson permits storing large objects such as matrices in memory (as well as via files) and uses external pointer objects to refer to them. This permits transparent access from R without bumping against R's internal memory limits. Several R processes on the same computer can also share big memory objects. Leonardo Ferreira Fontenelle[2] Em Ter 12 jul. 2016, às 16:33, Edimeire Alexandra Pinto escreveu:
OI, obrigada pela resposta.
Mas acredite, tenho de usar fora da memória RAM. Para manipular os dados, consegui com o pacote ffbase e Biglm, no entanto, no caso de análise discriminante e fatorial, o R não roda, ele trava e acusam excesso de tempo gasto para computar o que eu quero.
Alguém conhece algum pacote?
Em Segunda-feira, 11 de Julho de 2016 18:07, Leonardo Fontenelle via R-br <r-br@listas.c3sl.ufpr.br> escreveu:
A CRAN Task View para High Performance Computing[3] pode lhe dar algumas opções. Este artigo sobre Big Data no R[4] também é muito citado.
Você precisa mesmo de manter seus dados fora da RAM? Não é fácil estourar a memória RAM com dados de PNAD, embora eu nunca tenha tentado usar todos dados do Censo de uma só vez. Além disso, você frequentemente pode restringir-se apenas a um subconjunto de variáveis, o que facilita em muito a leitura dos dados e sua alocação na RAM.
Se o motivo de você achar isso é o read.fwf travar, tente importar os dados com alguma alternativa antes de concluir isso. Uma opção é usar a função do pacote readr, e outra é converter para csv usando o fwf2csv do pacote descr e então importar com o fread do pacote data.table.
Talvez a dificuldade maior seja com funções pouco otimizadas. Quando alguém se dá ao trabalho de escrever algo em C ou C++, o resultado costuma ser mais escalável do que código escrito. Além disso, é necessário tomar cuidado com laços *for* ou *apply* (que é um *for* disfarçado). Também sugiro considerar com carinho o uso de data.table[5] em vez de data.frame (outra alternativa parece ser o tibble[6], mas não testei).
Espero ter ajudado.
Leonardo Ferreira Fontenelle[7]
Em Seg 11 jul. 2016, às 12:24, Edimeire Alexandra Pinto via R-br escreveu:
OI Gente.
Eu descobri que para grandes conjuntos de dados, tipo Censo, Pnad, etc, existe o pacote ffbase, dplyr, sendo que para usar modelos lineares generalizados, podemos usar o pacote. biglm.
No entanto, preciso usar técnicas multivariadas, tipo Análise Fatorial e Discriminante. Alguém sabe qual posso usar quando trabalhamos com dados que "explodem" a memória do R?
Agradeço a todos. _________________________________________________ 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� c�igo m�imo reproduz�el.
Links: 1. https://cran.r-project.org/web/packages/bigmemory/index.html 2. http://lattes.cnpq.br/9234772336296638 3. https://cran.r-project.org/web/views/HighPerformanceComputing.html 4. http://www.r-bloggers.com/five-ways-to-handle-big-data-in-r/ 5. https://cran.r-project.org/web/packages/data.table/index.html 6. https://cran.r-project.org/web/packages/tibble/index.html 7. http://lattes.cnpq.br/9234772336296638

On 12/07/16 21:33, Edimeire Alexandra Pinto via R-br wrote:
análise discriminante e fatorial
Curiosidade: como você está fazendo essas duas análises? Ambas essas análises só dependem da matriz de covariância e do número de observações, não das observações propriamente. Se você tem, digamos, 100 variáveis, tanto faz ter 1mil ou 1bilhão de dados pois a matriz de covariância tem a mesma dimensão. Elias

OI gente!!!Obrigada pelas ajudas. Pois é, o problema ocorria na hora de manipular os dados, por exemplo, construir gráficos, e analisar pressupostos, por exemplo, multicolinearidade, outliers, etc. Em alguns casos precisa verificar a normalidade multivariada e não dava, às vezes até para achar ponto de corte das populações acusava problema. Muitas vezes chegava até a achar a equação de discriminação, mas na hora de manipular os dados ficava muito lento..., Estou tentando filtro mais os dados, trabalhar com o pacote dplyr e reduzir mais a base de dados. Estava usando muito tapply, apply, e realmente isso pesa o processamento. Mas com ajuda de vcs já contornei 90% dos problemas. Gente, valeu Em Quarta-feira, 13 de Julho de 2016 6:34, Elias Teixeira Krainski via R-br <r-br@listas.c3sl.ufpr.br> escreveu: On 12/07/16 21:33, Edimeire Alexandra Pinto via R-br wrote:
análise discriminante e fatorial
Curiosidade: como você está fazendo essas duas análises? Ambas essas análises só dependem da matriz de covariância e do número de observações, não das observações propriamente. Se você tem, digamos, 100 variáveis, tanto faz ter 1mil ou 1bilhão de dados pois a matriz de covariância tem a mesma dimensão. Elias _______________________________________________ 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 fornea cdigo mnimo reproduzvel.

Oi Edimeire, On 13/07/16 23:24, Edimeire Alexandra Pinto wrote:
analisar pressupostos, por exemplo, multicolinearidade, outliers, etc.
Há várias controvércias em testar normalidade em grandes conjuntos de dados. Veja este exemplo: http://stats.stackexchange.com/questions/2492/is-normality-testing-essential... Ainda sobre matriz de covariancia, veja uma "saída": http://stackoverflow.com/questions/12670972/doing-pca-on-very-large-data-set... Porém, gostaria de sugerir dar uma olhada no livro "Elementos de aprendizado estatístico" cujo pdf está disponível free na página do segundo autor em http://statweb.stanford.edu/~tibs/ElemStatLearn/ Esse livro aborda desde regressão, classificação até técnicas mais comums em "Aprendizado de máquina". Se alguém quiser uma introdução à redes neurais, por exemplo, sobre a ótica estatística, essa é uma boa referência. Os autores desenvolveram um pacote no R (o 'glmnet') que implementa de forma muito eficiente a técnica de 'elastic net' e LASSO (regressão regularizada). Só para ter uma idéia dessa eficiência considere o caso de uma regressão com matriz X esparsa. Consegui fazer um teste com 15milhões de linhas e 1 milhão de colunas em 13 segundos (mas a matriz X era realmente muito esparsa tendo "apenas" ~60milhões de não zeros). Notar que os autores estimaram uma rede elástica com (100 regressões) com 54 milhões de dados e 7 milhões de preditores em 2 horas! ver isso no slide 17 (pág. 40) em http://web.stanford.edu/~hastie/TALKS/SLBD_new.pdf Olha abaixo um exemplo (matriz não esparsa) e note que é mais rápido fazer 100 regressões que criar a matriz!
### tamanhos n = 1e6
k = 200
### matriz de covariaveis system.time(x <- matrix(rnorm(n*k), n, k)) user system elapsed 13.757 0.152 13.932
print(object.size(x), unit='Mb') 1525.9 Mb
### resposta: 2 grupos g2 = sample(1:2, n, replace=TRUE)
### LDA require(MASS)
system.time(l2 <- lda(x=x, grouping=g2)) ### 4 cores: 7.55gb user system elapsed 156.564 9.146 69.960
### regressao logistica regularizada require(glmnet)
system.time(fit2 <- glmnet(x, g2, family="binomial")) ### 1 core 3.4Gb user system elapsed 3.796 0.053 3.855
Note a grande diferença em eficiencia (com as opções default glmnet faz 100 regressões!). A vantagem da rede elástica é que a seleção de variáveis importantes é feita automaticamente. Elias
participantes (3)
-
Edimeire Alexandra Pinto
-
Elias Teixeira Krainski
-
Leonardo Fontenelle