Prefácio

Este livro foi criado inicialmente para servir como um material de apoio básico aos estudantes da disciplina Preparação de dados para Análises Estatísticas - Introdução ao R (BOT-89) do Programa de Pós-Graduação em Ciências Biológicas (Botânica) do INPA, ofertada desde o ano de 2011.

Inicialmente, a disciplina consistiu de uma modificação da documentação do curso de Introdução à Linguagem R oferecida pelo Programa de Pós-graduação em Ecologia do Instituto de Biociências da Universidade de São Paulo, atualmente ministrada pelo professor Dr. Alexandre Adalardo de Oliveira, e que contem aulas de autoria dos professores Drs. A. A. de Oliveira, João Luís Ferreira Batista, Paulo Inácio K. L. Prado, e Rodrigo Augusto Santinelo Pereira (Batista, I., e Oliveira 2009). Como exemplo, parte dos dados (dados de avistamento de aves no Cerrado e Levantamento em Caixetais) utilizados em nossas aulas são originários desta disciplina da Ecologia da USP.

Modificações nessa estrutura foram feitas por Alberto Vicentini ao longo dos últimos 10 anos em disciplinas anuais ofertadas no Programa de pós-graduação em Ciências Biológicas (Botânica) do Instituto Nacional de Pesquisas da Amazônia (INPA). Ricardo Perdiz transpôs as aulas originais formatadas em dokuwiki para o formato Rmarkdown. Também fez correções e acrescentou (poucos) novos conteúdos.

Nossa meta é prover uma introdução básica da linguagem de programação R, que é extremamente poderosa para manipulação de dados, análises estatísticas, produção de gráficos e de documentos dinâmicos, e cujo domínio oferece um grande ganho de produtividade a todo cientista e facilita o entendimento de métodos analíticos. Ressaltamos que isto não é um curso de estatística.

Estrutura do livro

Nota: Este livro está em constante atualização. Você pode encontrar os arquivos de Rmarkdown que geraram este livro no endereço https://github.com/LABOTAM/LABOTAM.github.io/tree/main. Se você tiver alguma contribuição a fazer, seja na forma de correções, críticas, ou o desejo de contribuir ativamente com o projeto, sinta-se à vontade para abrir um problema no repositório do livro. Grato!

O livro está dividido em três partes. A primeira parte contem 10 capítulos e aborda os ensinamentos básicos para o usuário aprender a usar a linguagem como uma ferramenta científica.

  • Capítulo 1 aborda os aspectos básicos da linguagem R, o software que utilizamos para usar a linguagem, pacotes com funções, como solicitar ajuda sobre funções, dicas de organização das pastas, e o R como uma calculadora.
  • Capítulo 2 aborda a criação, indexação, e operações matemáticas com vetores no R.
  • Capítulo 3 aborda a criação, indexação, filtragem, importação e exportação de matrizes e data.frames.
  • Capítulo 4 ensina a criar, indexar, e filtrar listas e objetos complexos.
  • Capítulo 5 aborda as funções gráficas do pacote base do R.
  • Capítulo 6 aborda dois conceitos chave em qualquer linguagem de programação: iteração e controles de fluxo.
  • Capítulo 7 abrange o tópico de sumarização de dados, explicando tabelas de contagem, tabelas dinâmicas e junção de tabelas.
  • Capítulo 8 ensina ferramentas básicas para a manipulação de textos, arquivos e pastas.
  • Capítulo 9 ensina de maneira breve funções para amostragens aleatórias e distribuições de valores.
  • Capítulo 10 abrange o uso de funções customizadas para extração de variáveis morfológicas de notas de texto obtidas de espécimes de plantas.

A segunda parte contem tutoriais curtos de análise exploratória de dado (AED). A AED deve ser iniciada ainda durante a coleta de dados, pois através dela podemos conhecer nossos dados e acompanhar como estamos coletando esses dados. AED baseia-se largamente em técnicas visuais (gráficos) e pode levar entre 20 a 50% do tempo das análises. Os capítulos abaixo exemplificam algumas ferramentas do R para fazer AED:

  • Capítulo 11 aborda a checagem inicial dos dados.
  • Capítulo 12 aborda a AED em dados univariados.
  • Capítulo 13 aborda a AED em dados biivariados.
  • Capítulo 14 aborda a AED em dados multivariados.

Por fim, temos o apêndice contendo materiais suplementares:

  • Apêndice A inclui uma discussão breve sobre o universo de pacotes conhecidos como Tidyverse, comparando-os com o pacote base do R.
  • Apêndice B apresenta um tutorial para baixar e descomprimir arquivos .zip dentro R.
  • Apêndice C apresenta uma lista de vídeos gravados por nós, autores, abordando diversos tópicos deste livro e que podem auxiliar o aprendizado da linguagem.

Sobre os autores

Alberto é doutor em Ecologia, Evolução e Sistemática, com uma ênfase em Evolução pela Universidade do Missouri, Saint Louis (University of Missouri Saint Louis). É cientista do Instituto Nacional de Pesquisas da Amazônia (INPA) desde o ano de 2009. Ministra anualmente disciplinas ligadas ao Programa de pós-graduação em Ciências Biológicas do INPA, como Preparação de dados para análises Estáticas - Introdução ao uso de linguagem R (BOT-89), Delineamento Experimental e Amostral (BOT-90), e Teoria e Prática de Sistemática Filogenética (BOT-99). É colíder do grupo de pesquisa Ecologia e Evolução de Plantas da Amazônia do Conselho Nacional de Desenvolvimento Científico e Tecnológico (CNPq).

Ricardo (ricardoperdiz.com) é formado em Ciências Biológicas pela Universidade Estadual de Santa Cruz (UESC), mestre em Botânica pela Universidade Estadual de Feira de Santana (UEFS) e doutor em Ciências Biológicas (Botânica) pelo INPA. Seus principais interesses são estar e se divertir com a família, trabalhar na floresta coletando e admirando a beleza da Natureza, trabalhar no herbário e laboratório, e também adora se divertir na frente do computador analisando dados e escrevendo. Seu esporte favorito é o basquete e a natação, apesar de não praticar ambos há algum tempo. Pescar também é apreciado, apesar de o peixe não ser pescado, somente admirado!

Agradecimentos

Agradecemos aos Drs. Alexandre Oliveira, João Luís Ferreira Batista, Paulo Inácio K. L. Prado, e Rodrigo Augusto Santinelo Pereira, por permitirem o uso de conteúdo parcial da disciplina introdutória ministrada por eles na USP como base para a criação deste livro.

Pré-requisitos

Devido ao modo como foi construído, este livro pode ser tanto lido quanto “executado”, uma vez que seus arquivos são o que chamamos de Rmarkdown, uma linguagem que mistura texto com código. Sendo assim, o livro pode ser visualizado em computadores, em celulares modernos, e em tablets. Não é necessário ter um computador próprio, apesar de que possuir um facilita o aprendizado. Entendemos que nosso país ainda carece de muito investimento na melhora da qualidade de vida da população em geral, o que inclui acesso facilitado aos bens de informática. Desta forma, providenciamos duas maneiras de o leitor deste livro fazer bem uso das informações aqui contidas.

Caso você possua um computador

Instale o R

Baixe e instale o R, próprio para o seu sistema operacional.

Instale um ambiente de desenvolvimento integrado - IDE

Recomendamos que o software RStudio seja instalado no seu computador, pois ele foi criado facilitar a interação do usuário com os múltiplos recursos oferecidos pela linguagem, em especial os inúmeros pacotes desenvolvidos por funcionários desta empresa, entre os quais se inclui o pacote bookdown, utilizado para construir este livro online. Ademais, ambientes de desenvolvimento integrado (do inglês Integrated Development Environment, IDE) como este software têm o objetivo de prover ao usuário mais ferramentas na interação entre o código e o resultado da execução do código, além de facilitar o uso de ferramentas alternativas para construção de texto mesclado com códigos (e.g., LaTeX, Markdown etc), o que permite uma dinamicidade na construção de textos acadêmicos.

Existem outras alternativas de software, tais como o Atom e o Visual Studio Code. Fique à vontade para escolher.

Baixe os pacotes abaixo

Serão necessários o uso de alguns pacotes de R (veja seção 1.3 para entender o que são pacotes de R) para poder fazer uso tanto do repositório localmente quanto fazer uso das próprias aulas. Então, rode o comando abaixo para instalar esses pacotes em seu computador:

install.packages(c('rmarkdown', 'bookdown', 'knitr', 'kableExtra', 'ape', 'labdsv', 'vegan', 'maps', 'readxl', 'readr', 'data.table', 'rgdal', 'taxize'))

Há uma lista de pacotes que serão utilizados apenas no apêndice A. Eles não são necessários para acompanhar o curso, mas caso você chegue a este apêndice, eles serão necessários. Portanto, caso queira já instalá-los, execute o comando abaixo:

install.packages(c('ggplot2', 'dplyr', 'tibble', 'tidyr', 'purrr', 'magrittr'))

Baixe o repositório para seu computador

Acesse a página do repositório contendo os código fonte deste livro (Fig. 0.1).

Imagem inicial do repositório hospedado no GitHub contendo o código fonte deste livro.

Figura 0.1: Imagem inicial do repositório hospedado no GitHub contendo o código fonte deste livro.

Busque um botão de cor verde chamado Code (Fig. 0.2). Clique neste botão e aparecerão algumas opções. Clique no botão Download Zip, destacado em vermelho na figura 0.2, e escolha onde você quer salvar o arquivo.

Destaque do botão *Code* (retângulo **azul** pontilhado circundando o botão, com uma seta **azul** apontando para o mesmo botão) presente na página inicial do repositório hospedado no GitHub contendo o código fonte deste livro. Há um outro retângulo de cor **vermelha** destacando a opção **Download Zip**.

Figura 0.2: Destaque do botão Code (retângulo azul pontilhado circundando o botão, com uma seta azul apontando para o mesmo botão) presente na página inicial do repositório hospedado no GitHub contendo o código fonte deste livro. Há um outro retângulo de cor vermelha destacando a opção Download Zip.

Após baixar, descomprima este arquivo .zip, escolha onde você deseja guardar a pasta, e comece a acessar os arquivos.

Os arquivos contendo cada capítulo deste livro são listados abaixo e podem ser encontrados na página inicial do repositório:

## 01-intro.Rmd
## 02-vetores.Rmd
## 03-matrizes_dframes.Rmd
## 04-listas_objComplexos.Rmd
## 05-funcoes_graficas.Rmd
## 06-iteracoes_controleFluxo.Rmd
## 07-sumarizacao_dados.Rmd
## 08-manip_txt_arqs_pasta.Rmd
## 09-amostragens_aleatorias.Rmd
## 10-extracao_dados.Rmd
## 11-aed_checadados.Rmd
## 12-aed_checaunivar.Rmd
## 13-aed_checabivar.Rmd
## 14-aed_checamultivar.Rmd
## 15-tidyverse.Rmd
## 16-baixa_descomprime.Rmd
## 17-videos.Rmd
## 18-referencias.Rmd

Você pode tanto utilizar os arquivos escritos em formato Rmarkdown e executar os códigos em cada célula de código (code chunks) ou usar os scripts contidos na pasta codigo, que nada mais são do que os capítulos do livro convertidos para um script de R, isto é, em formato .R. Nesses scripts, todos os pedaços de texto, incluindo cabeçalhos e comentários estão precedidos de #'; o que for código aparecerá sem #' precedentes. Clique no nome dos scripts abaixo para levá-lo direto ao arquivo dentro do repositório.

Caso você não possua um computador

O Google oferece um serviço chamado Google Colab que pode ser utilizado em computadores, em celulares modernos com acesso à internet e possuídores de um navegador, e em tablets.

Em breve, apresentaremos aqui um endereço contendo todo o conteúdo deste livro já convertido para o formato de um Jupyter Notebook, que é o modelo de arquivo utilizado pelo Google Colab.

O que é o R e por qual razão você deve se preocupar em programar

O R em poucas palavras

O R é um software livre e gratuito de desenvolvimento coletivo e é muito útil para quem trabalha com ciências e precisa manipular e analisar dados, gerar gráficos e publicações dinâmicas. Tem uma comunidade enorme de usuários e colaboradores e está disponível gratuitamente em diversos repositórios espalhados pelo mundo (https://cran.r-project.org/).

O R foi criado para permitir a melhor e mais ampla exploração de dados possível, (…) mas sempre explicando a natureza dos métodos utilizados, num formato aberto (livre) e compreensível (Chambers 2008).

O R é uma linguagem de programação; você conversa com o R através de um código.

Por ser uma linguagem de programação, no R você pode fazer tudo. A pergunta não é sobre SE o R faz alguma coisa, mas COMO fazer no R alguma coisa. E há várias maneiras de fazer a mesma coisa no R. É fundamental aprender a falar R, pois sabendo falar você pode dizer do seu jeito.

Todo estudante de ciências deveria aprender a programar, porque programar lhe ensina a pensar (Steve Jobs). Usar o R é a melhor forma de aprender estatística porque você precisa de fato entender o que está fazendo ao escrever um código.

Aprender a programar é como aprender um novo idioma; aprendendo o R fica mais fácil aprender outras linguagens de programação e lhe ajuda a aprender inglês, e o inglês lhe facilita falar R.

O R é uma fantástica ferramenta para fazer gráficos; veja exemplos em http://www.r-graph-gallery.com.

Com o desenvolvimento da linguagem na última década, você pode gerar aplicativos (Shiny) e relatório dinâmicos usando Rmarkdown, facilitando a formatação gráfica e a reprodutibilidade dos seus artigos, relatórios e projetos científicos.

Por que programar?

A maioria dos programas de computador não é muito boa. O código no seu laptop, televisor, telefone, carro é geralmente mal documentado, inconsistente e pouco testado. Por que isso importa para a ciência? Porque transformar dados brutos (raw data) em artigos científicos geralmente requer um pouco de programação, o que significa que a maioria dos cientistas escreve software (Nick Barnes, 2010, Publish your computer code, Nature News).

É tentador tratar todas as coisas como se fossem pregos, se a única ferramenta que você tem é um martelo (Abraham Maslow, 1996, Lei do Instrumento)! Liberte-se da camisa de força dos softwares de estatística que limitam as análises que você pode fazer e como pode fazer.

Um dos objetivos da análise estatística é o de destilar um conjunto longo e complicado de dados em um número pequeno de estatísticas descritivas que façam sentido. Muitos dos pacotes estatísticos de computadores modernos, no entanto, fazem exatamente o oposto disso. Eles produzem automaticamente um número excessivo de resultados que termina sendo aceito sem crítica; pode levar à super interpretação dos dados; e incentiva o mal hábito de jogar dados e cuspir resultados (data trawling). O R, por outro lado, não lhe diz nada a não ser aquilo que você peça explicitamente (Crawley 2007).

(…) aprender a programar é importante porque desenvolve habilidades analíticas e de resolução de problemas. É uma atividade criativa, um meio de expressar idéias abstratas. Assim, programar é divertido e é muito mais do que uma habilidade profissional. Ao projetar programas, aprendemos muitas habilidades que são importantes para todas as profissões. Essas habilidades podem ser resumidas como: (1) Leitura crítica, (2) Pensamento analítico, (3) Síntese criativa (Why programming is important).

Uma das coisas mais importantes que você (como cientista) pode fazer é dedicar um tempo para aprender uma linguagem de programação de verdade. Aprender a programar é como aprender outro idioma: exige tempo e treinamento, e não há resultados práticos imediatos. Mas se você supera essa primeira subida íngreme da curva de aprendizado, os ganhos como cientista são enormes. Programar não vai apenas livrar você da camisa de força dos pacotes estatísticos, mas também irá aguçar suas habilidades analíticas e ampliar os horizontes de modelagem (..) e estatística (Gotelli e Ellison 2013).

Curvas de aprendizagem do aluno Sabichão (Geek) e de um aluno que tem medo de código (non-geek).

Figura 0.3: Curvas de aprendizagem do aluno Sabichão (Geek) e de um aluno que tem medo de código (non-geek).

Análise exploratória de dados (AED)

O que é AED e por que fazer AED?

Em estatística, análise exploratória de dados (AED) é uma abordagem para analisar conjuntos de dados visando resumir as suas principais características, particularmente com métodos gráficos e visuais. Um modelo estatístico pode ou não ser usado, mas AED objetiva principalmente ver o que os dados podem nos dizer para além da modelagem ou de testes de hipóteses. A AED foi promovida por John Tukey para incentivar estatísticos a explorar dados e, eventualmente, formular novas hipóteses que possam levar à nova coleta de dados e a experimentos. AED é diferente de análise de dados inicial (AID), que foca mais estreitamente na verificação de suposições necessárias aos modelos de testes de hipóteses, manipulação de valores ausentes e transformações de variáveis, conforme necessário. AED abrange AID (Texto traduzido da WikiPedia).

Muitas vezes esquecemos como funciona a ciência e a engenharia. Idéias vêm mais frequentemente de exploração anterior do que de descargas atmosféricas. (…) Encontrar a pergunta é muitas vezes mais importante do que encontrar a resposta. Análise exploratória de dados é uma atitude, uma flexibilidade que depende de visualização gráfica, não é um conjunto de técnicas (Tukey 1980).

Em sistemática e taxonomia, uma ciência histórica, a análise exploratória é fundamental, pois é através dela que podemos postular boas hipóteses e usar teste de hipóteses para confirmá-las.

Aplicar a análise exploratória de dados para criar hipóteses e então usar os mesmos dados para testar essas hipóteses deve ser evitado. Se alguém tem conhecimento a priori limitado, então uma abordagem válida é criar dois conjuntos de dados: aplicar exploração de dados sobre o primeiro conjunto para criar hipóteses e usar o segundo conjunto de dados para testar essas hipóteses . Tal processo, no entanto, só é prático para conjuntos de dados grandes. Independentemente da situação específica, o uso constante e a estruturação de relatórios transparentes de exploração sistemática de dados melhorariam a qualidade da pesquisa ecológica e de quaisquer recomendações que ela produziria (Zuur, Ieno, e Elphick 2010).

A análise exploratória não é dragagem de dados! Assume-se que o pesquisador formulou hipóteses biológicas plausíveis a priori amparadas pela teoria.

Objetivos da AED

  • Controlar a qualidade dos dados;
  • Sugerir hipóteses para os padrões observados (novos estudos);
  • Apoiar a escolha dos procedimentos estatísticos de testes de hipótese;
  • Avaliar se os dados atendem às premissas dos procedimentos estatísticos escolhidos.

Para ler

Dois artigos que você deveria ler: Tukey (1980) e Zuur, Ieno, e Elphick (2010).

Exercícios no notaR

Ao fim de alguns capítulos, disponibilizaremos em seções chamadas Exercícios uma lista de endereços ligados ao notaR, um sistema criado para auxiliar no aprendizado da linguagem R desenvolvido pelo laboratório de Ecologia Teórica da Universidade de São Paulo (Chalom et al. 2012).

Conhecendo o notaR

Os exercícios do notaR obrigam o usuário a construir um script de R a partir de um enunciado, acabando por fugir do tradicional copia-cola de tutoriais de R. Muitos exercícios no sistema não obrigam o usuário a estar autenticado (estar logado usando login e senha) no sistema para poder fazê-los. Leia com atenção o enunciado de cada exercício antes de iniciar a construir o seu script.

Uma lista de todos os exercícios notaR incluídos neste livro está relacionada abaixo:

Referências úteis

Listamos abaixo algumas referências importantes para complementar o seu estudo:

Referências

Batista, J. L. F., Prado P. I., e A. A. Oliveira, eds. 2009. Introdução ao R - Uma Apostila online. Universidade de São Paulo. http://ecologia.ib.usp.br/bie5782.

Chalom, A., M. Salles, P. I. Prado, e A. Adalardo. 2012. notaR - Um sistema para notas automatizadas em cursos que utilizam a linguagem R (Version 2.0). https://github.com/lageIBUSP/notaR.

Chambers, John M. 2008. Programming with R. Editado por W. Härdle e David Hand. Springer. https://doi.org/10.1007/978-0-387-75936-4.

Crawley, Michael J. 2007. The R book. John Wiley & Sons, Ltd. https://doi.org/10.1002/9780470515075.

Gotelli, Nicholas J., e Aaron M. Ellison. 2013. A Primer of Ecological Statistics. 2 ed. Sinauer Associates.

Tukey, John W. 1980. «We need both exploratory and confirmatory». The American Statistician 34 (1): 23–25. https://doi.org/10.1080/00031305.1980.10482706.

Zuur, Alain F., Elena N. Ieno, e Chris S. Elphick. 2010. «A protocol for data exploration to avoid common statistical problems». Methods in Ecology and Evolution 1 (1): 3–14. https://doi.org/10.1111/j.2041-210X.2009.00001.x.