Um pequeno experimento com uso de funções em Análise de Dados com R no Universo Tidy

July 6, 2017 no comments Posted in Análise de Dados, R

O tidyverse ou universo ‘arrumado’ é uma coleção de pacotes R que compartilham filosofias comuns e são projetados para trabalhar em conjunto de dados ditos “tidy” e que podem ser melhor conhecidos no site http://tidyverse.org/   . Grande parte dos pacotes foi desenvolvida pelo Hadley Wickham.

Se você é novo no tidyverse o melhor lugar para aprender a philsophy completa e como tudo se encaixa é o livro “R para de ciência dos dados” de autoria do Garrett Grolemund e do
Hadley Wickham. Este livro está disponível gratuitamente online .

A novidade que mais me interessou logo a princípio foi o  uso do tibble no lugar do data.frame. Em termos práticos de representação da informação são a mesma coisa, mas a sua manipulação é mais simples, mais direta e toda focalizada no uso de Pipes ( %>% ) e na estrutura de comandos no estilo do ‘dplyr’.  Dplyr por sua vez que merece cada vez mais uma revisão dada a enorme quantidade de funções implementadas nas versões mais recentes.

Existem N artigos interessantes sobre esse universo, mas ainda poucos na língua portuguesa. Espero que outros se animem.

Eu sou um usuário pouco sistemático, as vezes inicio de forma estruturada, mas com frequência me pego tendo que refatorar o código que cresceu demais sem os devidos cuidados. A medida que o código começa a ficar repetitivo quero usar funções e hoje resolvi testar como seria usar o ‘dplyr’ dentro de uma função recebendo os nomes das variáveis como parâmetros de uma função.

Em termos de operadores a coisa é meio “feia”, mas funciona que é uma maravilha.

Aqui um pequeno exemplo que pelas imagens já fica claro como proceder.

Primeiro o meu tibble, o equivalente a um data frame. 100 linhas, 9 colunas, ao imprimir primeira vantagem, observem o que tibble só imprime as 10 primeiras linhas por padrão e já exibe o tipo de dados de cada coluna, menos filtros do tipo [1:10,]  ou head(dataframe),  e muito menos um lapply( dataframe, class ) para investigar os tipos.

Um tibble quando lido de um arquivo externo ou convertido não faz aquela “eca” de converter strings em fator por padrão.

Então suponha que irei fazer N sumários de descrições dos dados usando o ‘dplyr’ e não quero ficar copiando e colando código e alterando nome de variáveis na mão. Usar funções é o racional nesse caso.

Aqui uma pequenina função que recebe o tibble,  dois parâmetros o nome da variável com a qual quero agregar/agrupar os meus dados que chamnei de group_by e outra variável expr, da qual pretendo contar ocorrências, média e soma dos seus valores.

Quais são os detalhes importantes?

  • a função enquo() que irá receber um parâmetro sem aspas, envolvê-lo para depois ser realizado como um nome de um atributo e não uma string. O ‘dplyr‘ entende que expr é uma variável que contem o nome de uma variável;
  • a função quo_name() que é realmente massa, pois irá permitir que concatenemos o nome da variável com outra string para ser usado no “lado direito” da atribuição;
  • operadores “!!”  e “:=” .

Pronto. Agora já podemos chamar a função para cada atributo de interesse e receber os sumários.

Adorei.

Para saber mais sobre Análise de Dados no Universo Tidy.

 

Hadley Wickham, o homem que revolucionou o R

July 6, 2017 no comments Posted in Análise de Dados, R

Uma das novidades mais impactantes no mundo R tem sido a contínua contribuição do Hadley Wickham e seus pacotes, inicialmente com o reshape e agora com um leque amplo de ferramentas que implementam o “Tidyverse”.

A lista é extensa demais 

O Hadley é uma máquina.
Interessante é que há já uma linha forte de instrutores de R e professores de Estatísitca que advogam o ensino do R via a visão e a notação do Tidyverse.
Eu uso parte do universo há algum tempo, mas de forma desleixada, e a cada dia descubro que existe um recurso que me facilitaria a vida se tivesse estudado de forma mais sistemática.

Aqui uma matéria extensa e muito boa que saiu na Priceonomics.

Priceonomics turns data into great stories. We’re a collection of writers, data scientists, engineers and analysts that are obsessed with creating and spreading quality, data-driven information. We’re based in San Francisco, CA and funded by great investors like Y Combinator, Spark Capital, SV Angel and more.

https://priceonomics.com/hadley-wickham-the-man-who-revolutionized-r/

 

Bye Bye “Fortify” >> broom: let’s tidy up a bit #R

June 24, 2017 no comments Posted in Análise de Dados, R

[tradução Google Translated livremente adaptada]

O pacote “broom” tira a saída desordenada de funções incorporadas em R, como lm, nls ou t.test, e as transforma em quadros de dados arrumados.

O conceito de “TIDY DATA”, apresentado por Hadley Wickham, oferece uma estrutura poderosa para manipulação e análise de dados.

O artigo faz uma proposição convincente sobre o problema que este pacote tenta resolver (enfâse a minha): enquanto as entradas do modelo geralmente requerem entradas arrumadas, tal atenção aos detalhes não se aplica ao modelo  de saídas. Saídas como previsões e coeficientes estimados nem sempre são arrumadas. Isso torna mais difícil combinar resultados de vários modelos.

Por exemplo, em R, a representação padrão dos coeficientes do modelo não é organizada porque não possui uma variável explícita que registre o nome da variável para cada estimativa; em vez disso, elas são registradas como nomes de linhas.

Em R, os nomes de linha devem ser únicos, de modo a combinar coeficientes de muitos modelos (por exemplo, de resmastras de inicialização ou subgrupos) requerem soluções alternativas para evitar a perda de informações importantes. Isso o afasta do fluxo de análise e torna mais difícil combinar os resultados de vários modelos.

Atualmente, não conheço nenhum pacote que resolva esse problema.

O “broom” é uma tentativa de preencher a lacuna das saídas desordenadas de previsões e estimativas para os dados arrumados com os quais queremos trabalhar.

Centra-se em torno de três métodos S3, cada um dos quais obtém objetos comuns produzidos por funções estatísticas R (lm, t.test, nls, etc.) e converte-os em um quadro de dados.

O pacote “broom” é especialmente projetado para trabalhar com o pacote Dplyr de Hadley (veja a vassoura da vassoura + dplyr para mais).

O pacote “broom” deve ser distinguida de pacotes como reshape2 e tidyr, que reorganizam e remodelam os quadros de dados em diferentes formas. Esses pacotes executam tarefas críticas na análise de dados arrumados, mas se concentram na manipulação de quadros de dados em um formato específico para outro.

Em contraste, pacote “broom” é projetado para ter um formato que não está em um quadro de dados (às vezes, nem em qualquer lugar próximo) e convertê-lo em um quadro de dados arrumado.

A organização das saídas do modelo não é uma ciência exata, e é baseado em um julgamento dos tipos de valores que um cientista de dados normalmente deseja fora de uma análise arrumada (por exemplo, estimativas, estatísticas de teste e valores de p).

Você pode perder algumas das informações no objeto original que você queria, ou manter mais informações do que você precisa.

The broom package takes the messy output of built-in functions in R, such as lm, nls, or t.test, and turns them into tidy data frames. The concept of “tidy data”, as introduced by Hadley Wickham, offers a powerful framework for data manipulation and analysis. That paper makes a convincing statement of the problem this package tries to solve (emphasis mine): While model inputs usually require tidy inputs, such attention to detail doesn’t carry over to model outputs. Outputs such as predictions and estimate

Source: broom: let’s tidy up a bit

Photo:  Santeri Viinamäki [CC BY-SA 4.0 (http://creativecommons.org/licenses/by-sa/4.0)], via Wikimedia Commons

Como Instalar o R no Android  | Linux Journal

June 22, 2017 no comments Posted in R

Este mês, você também aprenderá a instalar o software de estatística R completo em um dispositivo Android móvel. Os dispositivos móveis são poderosos o suficiente para instalar esses pacotes, e com a ajuda de Marius Hofert e Kurt Hornik, você aprenderá a usar o Linux em um ambiente chroot no Android. Mesmo que você não esteja interessado em instalar o R, o processo de instalação do Linux no Android é fascinante e divertido! Marius e Kurt passam por todo o processo, incluindo informações sobre desbloqueio de bootloaders e dispositivos de rooting.

LINUX JORNAL

Sources:

June 2016 Issue of Linux Journal | Linux Journal

How we R in android

How we R in Android (pdf)

 

Calcular a hora do nascer e do pôr do Sol usando R. sunrise.set {package: StreamMetabolism}

May 17, 2017 no comments Posted in Código, R

sunrise.set {StreamMetabolism}

Esta função calcula o horário do nascer do sol no formato POSIXct e o retorna em um formato acessível para  exportação como um arquivo csv ou uso direto em seu código. Esta função é baseada em mapas que se baseiam na calculadora NOAA de horários de nascer e por do sol.

Exemplo de uso:

http://artax.karlin.mff.cuni.cz/r-help/library/StreamMetabolism/html/sunrise.set.html

Uma aplicação interativa em Shiny, R e Radarchart para visualização de Diagramas Kiviat

March 28, 2017 no comments Posted in Análise de Dados, R, RStudio, Shiny

Na publicação anterior (Diagramas Kiviat (Spider Charts) em R!)  vimos como é simples produzir  um diagrama de Kiviat ou Radar Chart no R com o pacote radarchart.

Aqui a versão do exemplo para o Shiny.

O visitante tem apenas a opção de escolher o nome de uma ou mais pessoas o grafico se atualiza automaticamente.

Uma aplicação Shiny é composta por 2 seções, a interface e o servidor, que podem ser definidos em um mesmo arquivo ou em dois (ui.R, server.R). O RStudio oferece facilidades para o desenviolvimento de aplicações Shiny. Saiba mais em “Aplicações “Shiny”, um primeiro contato usando o RStudio.

O código a seguir é capaz de produzir a aplicação cuja interface podemos ver abaixo. O gráfico é redesenhado em função das seleções no checkbox e dados são exibidos sobre os pontos no gráfico.

 

A interface:

 

 

 

O Servidor:

Referências Bibliográficas, Métricas, Fatores de Impacto, Co-citação? > Bibliometrix

December 1, 2016 no comments Posted in Análise de Dados, R

Pouco tempo para escrever, mas continuo tentando coletar coisas interessantes do mundo R e assemelhados. O conteúdo desse post interessa aos que lidam referências bibliográficas e gostam de gráficos.

Com a falta de tempo aqui terei uma enxurrada de links relacionados a gráficos relacionais, associações, publicações e conexões entre autores.

As descobertas da semana vieram no curso de tentar representar de forma hierárquica e também histórica um conjunto de referências bibliográficas disponíveis em sites especializados como o Web of Science, Scopus e Google Scholar.

A representação que desejo se assemelha a uma árvore onde os níveis são função das datas e cada nó pode ter mais pai, ou seja, um grafo acíclico direcionado,  mas com um layout de representação bem particular, similar ao da figura a seguir.

Alguns autores chamam de lattice, o que geral provoca alguma confusão com lattices em cristais, pelo menos em buscas no Google isso fica evidente.

Ou seja tenho alguns problemas para resolver, obter a informação, extrair a parte interessante e isso com frequência é muito mais complicado do que parece e ao fim representar os achados no formato desejado.

As fontes das informações priorizei as do Scopus e Web of Science em função do primeiro achado, o BIBLIOMETRIX. Um pacote para R que opera sobre referências bibliométricas em vários formatos entre eles o BIBTex.

 

Resumidamente, o Bilbiometrix é capaz de a partir de suas referências bibliográficas extrair uma série de indicadores de produção dos autores, fatores de impacto de revistas etc e tal, e o mais importante, as referências e  as citações, permitindo análises de co-citação.

Alguns dos relatórios que o Bibliometrix é capaz de produzir.

 

O Bibliometrix produz grafos de co-citação, mas acho de pouco utilidade, vejam o exemplo.

Parte da dificuldade é oriunda de diversidade de formatos das referências que ocorrem em cada referência, aqui um pequeno exemplo

Onde para os meus objetivos de exibir em diagrama a principal dificuldade é a existência de informações adicionais depois do título e que podem estar ou não presentes. Alem disso o ano está embebido no título e entre parêntesis e para piorar existem títulos que adotam vírgulas, mas isso é outra conversa.  Até o presente momento já consegui extrair o núcleo da informação no formato <ano> | < primeiro autor> | < parte inicial do título >

[1] “1993 | AGRAWAL, R | MINING ASSOCIATION RULES BETWEE…;1995 |  AGRAWAL, R | MINING SEQUENTIAL PATTERNS (199…;1996 |  AGRAWAL, R | FAST DISCOVERY OF ASSOCIATION R…;1995 |  BAIROCH, A | THE PROSITE DATABASE, ITS STATU…;1996 |  BETTINI, C | TESTING COMPLEX TEMPORAL RELATI…;1997 |  DAS, G | EPISODE MATCHING (1997) PROCEED…”

A seguir irei produzir o lattice desejado a partir dessa estrutura de informação. Veremos. Hei, esqueci em falar nos pacotes gráficos que encontrei nessa busca. Sem tempo agora, fica para a próxima.

Bye,

João Carlos

Atualizando a versão do R (2016) e todos os pacotes instalados (Ubuntu/Linux)

November 13, 2016 no comments Posted in R

Atividade periódica:

Verificar a versão + recente do R.

Hoje, 13/11/2016,  3.3.2

Onde está a versão + recente do R? CRAN

O CRAN é uma rede de servidores web/ftp em todo o mundo que armazenam versões idênticas e atualizadas de código e da documentação para R. Use o o servidor espelho CRAN mais próximo de você para minimizar a carga da rede. (tradução livre)

https://cran.r-project.org/index.html

Atualização do pacote base do R:

Atualizar todos os pacotes

Aqui uma excelente dica vinda do blog do Rainer e que nos libera de saber lista dos pacotes instalados e de enumerar o seu camino físico.  (Update all user installed R packages – again.)

Como root ou sudo, No R em linha de comando

Selecione o servidor espelho mais próximo no Brasil é o servidor da CRAN Fiocruz Brasil:

e pronto

É bom ficar em dia! 🙂

Referências relativas a pastas e arquivos no RStudio

November 10, 2016 no comments Posted in Código, R, RStudio

Esse post está sendo escrito após o lançamento da versão 1.0 do RStudio em 2016, que tornou a importação de arquivos e a publicação de resultados bem mais agradável. Se ainda não tem o RStudio, trate de instalar a versão desktop [1].

Uma pausa para falar em Diretórios e Referências dentro dos códigos em R. O R adota o conceito de diretório de trabalho. Em geral há uma definição padrão durante a instalação que irá depender do sistema operacional.

Esse diretório pode ser alterado pelo comando setwd(“caminho do diretorio – path”)  – set working directory.

Se o seu script faz referências a pastas externas e o script não está na mesma pasta que o diretorio de trabalho e/ou os dados estão em diretórios diferentes, podemos ter problemas.

A desvantagem de usar o setwd() para um diretório físico é que toda vez que movermos esse script para outra pasta/folder teremos que alterar o código.

Se você pretende que o script seja executado no próprio RStudio, mas eventualmente em em outra pasta, o próprio RStudio facilita a nossa vida,  vá no menu SESSION > To Source File Location. Pronto ele ajustará o diretório de trabalho para a pasta aonde está o seu script.

Screen Shot 2016-11-10 at 10.41.52.png

Mas é possível automatizar ainda mais e evitar essa ida ao menu Session usando o pacote rstudioapi.

Instalar um pacote no RStudio é possível de 3 maneiras:

1 ) na área de trabalho onde existe uma aba “packages”

 

2 ) no menu tool > install packages

 

3) e direto na janela de console do R

Uma vez instalado o pacote rstudioapi, basta inserir o comando abaixo logo

em uma linha que anteceda a qualquer comando que pretenda referenciar arquivos externos.

Feito isso agora o nosso script pode fazer referências relativas a diretórios que estão dentro da pasta do script.

 

Agora podemos mover a vontade toda a pasta para outros locais sabendo que as referências não serão afetadas.

 

Referências

Choose Your Version of RStudio – RStudio Desktop  https://www.rstudio.com/products/rstudio/download3/