\documentclass[a4paper, oneside, 10pt]{article} \usepackage[english]{babel} \usepackage[unicode]{hyperref} \usepackage[utf8x]{inputenc} \usepackage{listings} \usepackage{longtable} \date{\today} \title{} \author{} \begin{document} \section{\texorpdfstring{Objetivo}{Objetivo}} \label{sec:objetivo} O objetivo desse curso é fazê-lo adquirir rapidamente certa familiaridade com o software R. Ao final desse curso você deverá ter atingido dez metas, devendo ser capaz de: \begin{enumerate} \item saber que o R não é um ,,aplicativo" mas um \emph{ambiente de trabalho}; \item saber se o R é o software adequada para você; \item iniciar, salvar e concluir uma sessão no R; \item ler arquivos de dados tipo CSV; \item realizar operações matemáticas simples necessárias para criação e transformação de variáveis; \item obter estatísticas descritivas de variávies; \item construir gráficos exploratórios simples de análise de dados; \item construir modelos lineares clássicos; \item realizar inferências gráficas e numéricas nos modelos lineares; e \item conhecer as fontes para você continuar se desenvolvendo no R. \end{enumerate} \section{\texorpdfstring{1. O Esquema R}{1 O Esquema R}} \label{sec:1_o_esquema_r} O R \textbf{não é um ,,aplicativo"} que lhe possibilita através de uma interface gráfica amigável realizar algumas tarefas sem saber exatamente o que está fazendo. O R é um \textbf{ambiente de trabalho para realização de análises estatísticas}. Como software, suas características principais são: \begin{itemize} \item \textbf{INTERFACE:} o R é uma interface para análises de dados, criando um ambiente de trabalho. \item \textbf{INTERATIVIDADE:} essa interface é interativa, isto é, você digita comandos e obtem os resultados. \item \textbf{FUNCIONAL:} a linguagem \textbf{S}, a linguagem que se fala dentro do R, é uma \emph{linguagem funcional}, isto é, todas as análises e ações são realizadas por \emph{funções}. \item \textbf{ORIENTAÇÃO PARA OBJETOS:} a linguagem \textbf{S} é uma linguagem de programação orientada para objetos, isto é, todas as \emph{entidades} no ambiente R (dados, análises, gráficos, funções) são efetivamente objetos. \item \textbf{MODULAR:} o R é composto por módulos, que são chamados de pacotes (\textbf{packages}). O pacote básico traz a funcionalidade necessária para as análises matemáticas e estatísticas mais usuais. Existem literalmente milhares de outros pacotes para realizar análises específicas nas mais diversas áreas do conhecimento científico. \item \textbf{COLABORATIVO:} o R é um esforço mundial de programação em código aberto. \end{itemize} \\\begin{longtable}{|l|} \hline \multicolumn{1}{|c|}{\textbf{ Nesse ponto você já deve ter atingido a meta 1. }} \\ \hline \\ \hline \multicolumn{1}{|c|}{\textbf{ Se isso não aconteceu, re-leia o material acima e realize uma profunda meditação. }} \\ \hline \\ \hline \textbf{ Se mesmo assim você não alcançou a meta 1, procure um amigo que entenda de computação para traduzir o que você leu acima. Nesse caso, o curso está deixando de ser relâmpago. } \\ \hline \end{longtable} \\ \section{\texorpdfstring{2. Filosofia de trabalho ou o R é para mim?}{2 Filosofia de trabalho ou o R e para mim}} \label{sec:2_filosofia_de_trabalho_ou_o_r_e_para_mim} Do ponto de vista da análise de dados, o R tem uma filosofia que o diferencia radicalmente dos outros softwares estatísticos: \begin{itemize} \item \textbf{ANALISAR DADOS É PROGRAMAR COM DADOS:} toda a análise de dados deve ser pensada como a construção de programa que ao ser executado gera a análise esperada. \end{itemize} \textbf{PORTANTO}, reflita nos seguintes pontos antes de prosseguir: \subsection{\texorpdfstring{O R não é para você!}{O R nao e para voce}} \label{sec:o_r_nao_e_para_voce} Você pode ter certeza que o R não é para você se: \begin{itemize} \item Você não quer aprender uma linguagem e realizar análises utilizando comandos. \item Você acredita que análise estatística é um simples protocolo para obter alguns resultados numéricos. \item Você acredita que para cada situação ou conjunto de dados existe A análise estatística correta. \item Você não sabe o que é \textbf{análise estatística baseada em modelos} e não está nenhum pouco interessado em saber. \end{itemize} \subsection{\texorpdfstring{Não perca seu tempo com o R!}{Nao perca seu tempo com o R}} \label{sec:nao_perca_seu_tempo_com_o_r} \begin{itemize} \item Se você acredita que basta aprender algumas receitas no R para depois copiá-las quando quiser realizar as mesmas análises, sem entender realmente o que você está fazendo: NÃO PERCA SEU TEMPO COM O R, APRENDA UM SOFTWARE AMIGÁVEL. \end{itemize} \subsection{\texorpdfstring{Não se iluda com o R!}{Nao se iluda com o R}} \label{sec:nao_se_iluda_com_o_r} \begin{itemize} \item Se você imagina que é possível ,,tolerar essa coisa de programação com dados" por um tempo, pois, um dia, alguém vai desenvolver uma interface amigável e aí você já conhecerá o R e tudo será mais fácil. \item Não se iluda!!! Alguém pode até desenvolver uma interface amigável (de fato, já existe pelo menos uma). Mas a equipe de desenvolvedores do R não está interessada em ,,oficializar" interfaces amigáveis. \item O R não é um software comercial. Não há interesse em atrair usuários que não compartilhem da sua filosofia de trabalho. \end{itemize} \\\begin{longtable}{|l|} \hline \multicolumn{1}{|c|}{\textbf{ Nesse ponto você já deve ter atingido a meta 2. Mas cuidado com o auto-engano! }} \\ \hline \end{longtable} \\ \section{\texorpdfstring{3. Iniciando, Gravando e Concluindo}{3 Iniciando Gravando e Concluindo}} \label{sec:3_iniciando_gravando_e_concluindo} Nesse curso assumimos que você já tem o R instalado e funcionando no seu computador. Não será discutida a instalação, pois essa operação é análoga a instalação de qualquer software no sistema operacional que você trabalha. Para obter o R e informações de como instalá-lo, visite o site: \url{http://www.r-project.org/} . Para iniciar o R você deve: \begin{itemize} \item \textbf{No Ruindows:} realizar um clique duplo no ícone do R no seu ,,desktop" ou procurar o R na lista de programas instalados a partir do menu ,,Iniciar". \item \textbf{No Linux:} criar um diretório ou se dirigir a um diretório já criado e executar o comando ,,R". \end{itemize} Apesar das diferenças de interface devido a o sistema operacional, ao iniciar o R você deverá obter uma janela muito parecida com a seguinte janela:\lstset{frame=single, language=rsplus} \begin{lstlisting} R version 2.7.0 (2008-04-22) Copyright (C) 2008 The R Foundation for Statistical Computing ISBN 3-900051-07-0 R é um software livre e vem sem GARANTIA ALGUMA. Você pode redistribuí-lo sob certas circunstâncias. Digite 'license()' ou 'licence()' para detalhes de distribuição. R é um projeto colaborativo com muitos contribuidores. Digite 'contributors()' para obter mais informações e 'citation()' para saber como citar o R ou pacotes do R em publicações. Digite 'demo()' para demonstrações, 'help()' para o sistema on-line de ajuda, ou 'help.start()' para abrir o sistema de ajuda em HTML no seu navegador. Digite 'q()' para sair do R. [Área de trabalho anterior carregada] > \end{lstlisting} \subsubsection{\texorpdfstring{A Linha de Comando}{A Linha de Comando}} \label{sec:a_linha_de_comando} O R é uma linguagem interativa, ou seja, que permite ao usuário enviar um comando por vez e receber o resultado\footnote{é possível também de executar um lote de comandos, mas neste wiki trabalharemos apenas com o modo interativo.}. Para isso, usamos a linha de comando, que tem o sinal ,,\texttt{\textgreater }" quando o R está pronto para receber um comando. Os outros dois estados da linha de comando são o de execução e o de espera para a conlusão do comando. No modo de execução não é exibido nenhum sinal e não é possível digitar outro comando. Você só perceberá isso se der um comando que tenha um tempo de execução muito longo. Experimente o seguinte comando:\lstset{frame=single, language=rsplus} \begin{lstlisting} > for(i in 1:10000) prod(1:i) > \end{lstlisting} O estado de espera ocorre quando o usuário envia um comando incompleto, o que é indicado por um sinal de ,,\texttt{+}":\lstset{frame=single, language=rsplus} \begin{lstlisting} > log(1 + ) [1] 0 > \end{lstlisting} Na primeira linha, não fechamos os parênteses da função \texttt{log} e demos \emph{enter}. O R responde com o sinal de espera (\texttt{+}), indicando que o comando está incompleto. Digitando o parêntese que falta e apertando a tecla \emph{enter} novamente o R retorna o resultado do comando, precedido de um índice numérico. Ao longo desse curso, os exemplos mostrados dentro do R (como o exemplo acima) são totalmente funcionais. Você deveria ser capaz de digitá-los no seu computador, mas os resultados apresentados pelo R nem sempre serão mostrados nos exemplos. Para tirar o máximo proveito desse curso relâmpago, você deve repetir todos os comandos exemplificados e não ter medo de experimentar variações dos exemplos apresentados. \subsubsection{\texorpdfstring{Primeiros Comandos}{Primeiros Comandos}} \label{sec:primeiros_comandos} Se você voltar à mensagem inicial que o R apresenta, verá que ele já lhe ensina alguns comandos: \begin{itemize} \item \underline{\texttt{license}}\footnote{Note que para executar o comando é necessário digitar o nome da função seguido de parênteses: \texttt{license()}} detalha as condições de distribuição do R. \item \underline{\texttt{contributors}} lista a equipe do \emph{time-cerne} de desenvolvimento. \item \underline{\texttt{citation}} ensina como citar o R em trabalhos acadêmicos. \item \underline{\texttt{demo}} inicia uma sessão interativa de demonstração do R. \item \underline{\texttt{help}} para obter uma página de ajuda on-line. \item \underline{\texttt{help.start}} para iniciar um navegador de internet com as páginas de auxílio. \item \underline{\texttt{q}} é o comando para encerrar a sessão e sair do R ( no inglês q = quit ). \end{itemize} \subsubsection{\texorpdfstring{Comando mais utilizado no R: help}{Comando mais utilizado no R help}} \label{sec:comando_mais_utilizado_no_r_help} Da mesma forma que pessoas pouco letradas pensam que pessoas cultas possuem dicionário só para enfeitar a estante de livros e que raramente os utilizam, os iniciantes no R tendem a pensar que a função \underline{\texttt{help}} é para iniciantes. Ledo engano!! Até os maiores experts em R utilizam o comando \underline{\texttt{help}} com frequência, pelo simples fato que a quantidade de funções e comandos no R é tão grande que é humanamente impossível alguém conhecer todos eles e com todos os seu detalhes. Use e abuse da função \underline{\texttt{help}}. Para obter ajuda da própria função utilize o comando:\lstset{frame=single, language=rsplus} \begin{lstlisting} > help( help ) \end{lstlisting} Outros exemplos:\lstset{frame=single, language=rsplus} \begin{lstlisting} > help( "*" ) # auxílio sobre o símbolo "*" > help( sin ) # auxílio sobre a função "sin" = seno > ?sin # variante da função "help" > help( datasets ) # auxílio sobre os conjuntos de dados (datasets) que vêm com o R \end{lstlisting} \subsubsection{\texorpdfstring{Objetos no R}{Objetos no R}} \label{sec:objetos_no_r} Como foi dito, no R tudo é considerado um objeto. Até mesmo as funções que você vem utilizando são objetos. Para ver um objeto no R, basta digitar o seu \textbf{NOME}. O nome de uma função é o comando sem os parênteses:\lstset{frame=single, language=rsplus} \begin{lstlisting} > help > q > citation \end{lstlisting} No R é fácil criar objetos numéricos\footnote{Nota: a maioria dos comandos nesse curso são mostrados \textbf{SEM} os resultados apresentados pelo R}:\lstset{frame=single, language=rsplus} \begin{lstlisting} > x = 2 > x > y = 7 > y > z = x * y > z > w = x - y > w \end{lstlisting} Vejamos alguns exemplos com objetos vetoriais:\lstset{frame=single, language=rsplus} \begin{lstlisting} > k = c(1.3, -5, 6.7, 4.8) > k > x * k > m = c(0, 1, 1, 0, 1, 1) > m > m * k \end{lstlisting} \subsubsection{\texorpdfstring{A Área de Trabalho}{A Area de Trabalho}} \label{sec:a_area_de_trabalho} Você deve imaginar que ao iniciar uma sessão do R e criar uma série de objetos, você está fazendo isso numa ÁREA DE TRABALHO (\textbf{workspace}). Para saber quais objetos você criou no seu workspace use a função:\lstset{frame=single, language=rsplus} \begin{lstlisting} > ls() \end{lstlisting} Para apagar os objetos indesejados, utilize a função \underline{\texttt{rm}}, fornecendo os objetos que você deseja apagar:\lstset{frame=single, language=rsplus} \begin{lstlisting} > rm(x, y, z, w) > ls() \end{lstlisting} É importante lembrar que ao criar os objetos, o R não grava automaticamente o workspace no seu disco. Fica tudo na memória do computador. Basta uma interrupção momentânea de energia e você perde tudo. Por isso, é importante lembrar de periodicamente gravar o seu workspace, principalmente nas sessões mais longas:\lstset{frame=single, language=rsplus} \begin{lstlisting} > save.image() # grava o seu workspace com o nome genérico: ".RData" > save.image(file="minha_sessao_inicial_de_R.RData") # grava o seu workspace com o nome indicado \end{lstlisting} Lembre-se que na maioria dos sistemas operacionais, arquivos cujo o nome se inicia com um ponto (como ,,.RData") são arquivos ocultos! \\\begin{longtable}{|l|} \hline \multicolumn{1}{|c|}{\textbf{ Nesse ponto você deve ter alcançado a meta 3. }} \\ \hline \\ \hline \multicolumn{1}{|c|}{\textbf{ Inseguro? Experimente criar uma nova área de trabalho, criando variações das operações acima e gravando o workspace. Inicie uma nova sessão no workspace que foi gravado! }} \\ \hline \end{longtable} \\ \section{\texorpdfstring{4. Lendo Dados para Dentro do R: Formato CSV}{4 Lendo Dados para Dentro do R Formato CSV}} \label{sec:4_lendo_dados_para_dentro_do_r_formato_csv} O R é um ambiente para análise de dados. Não é um ambiente para \textbf{digitação} ou \textbf{organização} dos seus dados. O aplicativo mais utilizado para digitar e organizar os dados são as \textbf{planilhas eletrônicas}, como o Excell e assemelhados. As planilhas conseguem gravar os dados em vários formatos, além do formato nativo da planilha\footnote{No Excell, o formato nativo é o XLS}. \subsection{\texorpdfstring{Formato CSV}{Formato CSV}} \label{sec:formato_csv} No caso do R, o melhor é gravar os dados no formato CSV (CSV = \emph{Comma-Separeted Values}). O formato CSV consiste em uma única tabela (spreadsheet) da sua planilha eletrônica, onde os valores são gravados linha-a-linha, sendo que numa mesma linha os valores são separados por vírgulas. O formato UNIVERSAL de tabela de dados para análise estatística é o seguinte: \begin{itemize} \item cada \textbf{LINHA} é uma observação, \item cada \textbf{COLUNA} é uma variável ou atributo que foi tomado em cada observação. \end{itemize} No formato CSV, cada linha será uma observação e as colunas serão separadas por vírgulas. \subsection{\texorpdfstring{Lendo um Arquivo CSV}{Lendo um Arquivo CSV}} \label{sec:lendo_um_arquivo_csv} Como exemplo trabalharemos com um arquivo que apresenta três parcelas, cada uma em um ,,caxetal" diferente. As primeiras linhas desse arquivo formam a seguinte tabela: \textless csv\textgreater ,,local",,,parcela",,,arvore",,,fuste",,,cap",,,h",,,especie" ,,chauas",1,1,1,210,80,,,Myrcia sulfiflora" ,,chauas",1,3,1,170,80,,,Myrcia sulfiflora" ,,chauas",1,4,1,720,70,,,Syagrus romanzoffianus" ,,chauas",1,5,1,200,80,,,Tabebuia cassinoides" ,,chauas",1,6,1,750,170,,,indet.1" ,,chauas",1,7,1,320,80,,,Myrcia sulfiflora" ,,chauas",1,8,1,480,160,,,Tabebuia cassinoides" ,,chauas",1,9,1,240,140,,,Tabebuia cassinoides" \textless /csv\textgreater Grave o arquivo no diretório que estiver trabalhando com o R: \href{media/publico/tutoriais/r-relampago/exemplo-caixeta.csv}{exemplo-caixeta.csv}. Esse arquivo pode ser visualizado em qualquer editor de textos, pois o formato CSV é um formato texto:\lstset{frame=single, language=rsplus} \begin{lstlisting} "local","parcela","arvore","fuste","cap","h","especie" "chauas",1,1,1,210,80,"Myrcia sulfiflora" "chauas",1,3,1,170,80,"Myrcia sulfiflora" "chauas",1,4,1,720,70,"Syagrus romanzoffianus" "chauas",1,5,1,200,80,"Tabebuia cassinoides" "chauas",1,6,1,750,170,"indet.1" "chauas",1,7,1,320,80,"Myrcia sulfiflora" "chauas",1,8,1,480,160,"Tabebuia cassinoides" "chauas",1,9,1,240,140,"Tabebuia cassinoides" \end{lstlisting} Note nos seguintes pontos: \begin{itemize} \item A primeira linha do arquivo contem o nome das variáveis ou nome das colunas da tabela. \item Os valores de cada variável (coluna) estão seprados por vírgulas. \item As ,,palavras" estão envoltas em aspas duplas (,,). \end{itemize} Para ler esse arquivo no R, basta utilizar a função \underline{\texttt{read.csv}}. Cuidado!! Se você digitar simplesmente:\lstset{frame=single, language=rsplus} \begin{lstlisting} > read.csv(file="exemplo-caixeta.csv") \end{lstlisting} as linhas do arquivo aparecerão na tela mas não serão gravadas em nada. É necessário gravar a leitura do arquivo num \textbf{objeto}:\lstset{frame=single, language=rsplus} \begin{lstlisting} > cax = read.csv(file="exemplo-caixeta.csv") \end{lstlisting} Agora se você digitar o nome do objeto:\lstset{frame=single, language=rsplus} \begin{lstlisting} > cax \end{lstlisting} o R lhe apresentará todas as 198 linhas de dados!! Para visualizar apenas as primeiras linhas do dataframe (objeto de dados) use o comando \underline{\texttt{head}}:\lstset{frame=single, language=rsplus} \begin{lstlisting} > head(cax) local parcela arvore fuste cap h especie 1 chauas 1 1 1 210 80 Myrcia sulfiflora 2 chauas 1 3 1 170 80 Myrcia sulfiflora 3 chauas 1 4 1 720 70 Syagrus romanzoffianus 4 chauas 1 5 1 200 80 Tabebuia cassinoides 5 chauas 1 6 1 750 170 indet.1 6 chauas 1 7 1 320 80 Myrcia sulfiflora \end{lstlisting} \subsection{\texorpdfstring{Problema da Planilha ou do CSV}{Problema da Planilha ou do CSV}} \label{sec:problema_da_planilha_ou_do_csv} Um grande problema surge quando se utiliza uma planilha eletrônica onde o \textbf{separador decimal} também é a vírgula. Nesse caso, o arquivo CSV será uma grande confusão, pois a vírgula não só delimitará cada coluna da tabela de dados como também indicará o separador decimal do números que não forem inteiros. Dois aspectos devem ser considerados: \begin{itemize} \item PRIMEIRO: jamais digitar dados com marcador decimal (no Brasil a vírgula). Essa é uma regra importante, pois a maior parte dos erros de digitação envolvem a utilização do marcador decimal na definição dos números. Se você mediu o diâmetro de uma árvore em centímetros com uma casa decimal, anote os dados em milímetros. \item SEGUNDO: se a digitação com marcador decimal se tornou inevitável\footnote{Você vai se arrepender disso depois!!} e você utilizou a \textbf{vírgula} como marcador decimal, ao gravar o arquivo CSV, procure fazer com que a planilha utilize um outro símbolo para separação de valores, como por exemplo o \textbf{ponto-e-vírgula (;)}. A maneira de fazer isso depende da planilha que você estiver utilizando. \end{itemize} O arquivo \href{media/publico/tutoriais/r-relampago/exemplo-caixeta-2.csv}{exemplo-caixeta-2.csv} é um exemplo de arquivo CSV com ponto-e-vírgula como separação de valores. No R, esse arquivo deverá ser lidos com o argumento \underline{\texttt{sep}} definindo o símbolo usado na separação de valores:\lstset{frame=single, language=rsplus} \begin{lstlisting} > cax2 = read.csv(file="exemplo-caixeta-2.csv",sep=";") > head( cax2 ) \end{lstlisting} A página de auxílio da função \underline{\texttt{read.csv}} detalha diferentes formas de leitura de dados que podem ser utilizadas no R. \section{\texorpdfstring{5. Manipulando e Criando Variáveis}{5 Manipulando e Criando Variaveis}} \label{sec:5_manipulando_e_criando_variaveis} \subsection{\texorpdfstring{Entendendo um Data Frame no R}{Entendendo um Data Frame no R}} \label{sec:entendendo_um_data_frame_no_r} O comando \underline{\texttt{head}} sempre apresenta as primeiras linhas da \textbf{tabela de dados} (\emph{data frame}). \begin{itemize} \item As colunas da tabela (variáveis) são mostradas pelos nomes que estavam na primeira linha do arquivo CSV. \item As linhas da tabela (observações) são geralmente numeradas. Note que a primeira coluna de números não é uma variável! Ela indica cada linha do arquivo CSV, ou seja cada observação. No R, as linhas do data frame (observações) também devem ter nomes únicos. Se o usuário não os fornece, o R simplesmente os nomeia segundo a numeração da ordem em que os dados são lidos. \end{itemize} Se quisermos apenas uma variável (coluna) desse data frame, basta unir o nome do data frame (\underline{\texttt{cax}}) ao nome da coluna desejada com o símbolo especial \textbf{,,\$"}:\lstset{frame=single, language=rsplus} \begin{lstlisting} > cax$local > cax$cap \end{lstlisting} \subsection{\texorpdfstring{Novas Variáveis no Data Frame}{Novas Variaveis no Data Frame}} \label{sec:novas_variaveis_no_data_frame} Novas variáveis (colunas) podem ser criadas também utilizando o símbolo ,,\$". Por exemplo:\lstset{frame=single, language=rsplus} \begin{lstlisting} > pi # constante universal PI [1] 3.141593 > cax$dap = (cax$cap/10) / pi # cálculo do DAP (cm) a partir do CAP (mm) > cax$g = (pi/4) * (cax$dap/100)^2 # cálculo da área transversal (m2) a partir do DAP (cm) > cax$vol.cilindrico = cax$g * (cax$h/10) # cálculo do volume cilíndrico a partir da área transv. e da altura (dm) > head(cax) \end{lstlisting} Note que: \begin{itemize} \item A palavra \underline{\texttt{pi}} no R está reservada para representar a constante universal pi. \item Ao utilizar a expressão \underline{\texttt{cax\$dap =}} estamos criando uma nova variável (coluna) no dataframe \underline{\texttt{cax}} com o nome \underline{\texttt{dap}}, cujos valores serão o resultado da expressão matemática apresentada após o sinal de igualdade. O mesmo acontece com as colunas \underline{\texttt{g}} e \underline{\texttt{vol.cilindrico}}\_. \end{itemize} Não há como \textbf{apagar} as variáveis de dentro de um data frame! É necessário criar um novo data frame apenas com as variáveis desejadas, mas isso não é assunto para um curso relâmpago! \\\begin{longtable}{|l|} \hline \multicolumn{1}{|c|}{\textbf{ As metas 4 e 5 foram atingidas? }} \\ \hline \\ \hline \multicolumn{1}{|c|}{\textbf{ Se você está inseguro, repita todos os passos dos itens 4 e 5 com os seus próprios dados! }} \\ \hline \end{longtable} \\ \section{\texorpdfstring{6. Descrevendo as Observações}{6 Descrevendo as Observaoes}} \label{sec:6_descrevendo_as_observaoes} \subsection{\texorpdfstring{Contagens}{Contagens}} \label{sec:contagens} A forma mais simples de descrever quantitativamente observações é agrupá-las em categorias e contar quantas observações pertence a cada categoria. No R a forma mais direta de obter contagens (frequências) é através da função \underline{\texttt{table}}. Tomando como exemplo o dataframe \underline{\texttt{cax}}, podemos nos perguntar quantas árvores foram observadas em cada caixetal (variável \underline{\texttt{local}}):\lstset{frame=single, language=rsplus} \begin{lstlisting} > table(cax$local) \end{lstlisting} Também é interessante saber o número de árvores por \underline{\texttt{local}} e \underline{\texttt{parcela}}:\lstset{frame=single, language=rsplus} \begin{lstlisting} > table(cax$local, cax$parcela) \end{lstlisting} \\\begin{longtable}{|l|} \hline \textbf{Observação:} note que os \textbf{argumentos} de uma função são separados por vírgula (,) \\ \hline \end{longtable} \\ Podemos verificar a abundância de cada espécie (\underline{\texttt{especie}}) em cada caixetal (\underline{\texttt{local}}):\lstset{frame=single, language=rsplus} \begin{lstlisting} > table( cax$especie, cax$local ) \end{lstlisting} \subsubsection{\texorpdfstring{Gráficos de Contagem}{Graficos de Contagem}} \label{sec:graficos_de_contagem} Dados de contagem também podem ser apresentado na forma de \textbf{gráficos de barra}:\lstset{frame=single, language=rsplus} \begin{lstlisting} > barplot( table(cax$local) ) \end{lstlisting} \\\begin{longtable}{|l|} \hline \textbf{Observação:} veja que no R você pode construir um comando chamando função dentro de função em vários níveis. No exemplo acima, o resultado da função \underline{\texttt{table}} foi colocado como argumento para a função \underline{\texttt{barplot}}. \\ \hline \end{longtable} \\ Formas alternativas de construir esses gráficos são:\lstset{frame=single, language=rsplus} \begin{lstlisting} > barplot( table(cax$fuste) ) > plot( table(cax$fuste) ) \end{lstlisting} Um gráfico de abundância das espécies presentes nos três caixetais:\lstset{frame=single, language=rsplus} \begin{lstlisting} > par( mar=c(5,10,4,2) ) # Define margens do gráfico, aumentando a esquerda > barplot(sort(table(cax$especie)), horiz=T, las=1, xlab="Abundância") # Gráfico horizontal c/ nomes horizontais > dev.off() # Fecha a janela gráfica \end{lstlisting} \\\begin{longtable}{|l|} \hline \textbf{Observação:} no exemplo acima temos um comando com três funções \emph{aninhadas} (\underline{\texttt{table}} dentro de \underline{\texttt{sort}}, que está dentro de \underline{\texttt{barplot}}). \\ \hline \end{longtable} \\ Embora seja convencional apresentar o gráfico de abundância com barras, um gráfico na forma de pontos é de construção mais simples, sendo mais informativo:\lstset{frame=single, language=rsplus} \begin{lstlisting} > dotchart( sort(table(cax$especie)), xlab="Abundância" ) \end{lstlisting} \subsection{\texorpdfstring{Sumário de Variáveis}{Sumario de Variaveis}} \label{sec:sumario_de_variaveis} A função \underline{\texttt{summary}} retorna uma conjunto de estatísticas descritivas (\textbf{sumário}) de todas as variáveis de um data frame de acordo com o seu tipo:\lstset{frame=single, language=rsplus} \begin{lstlisting} > summary(cax) \end{lstlisting} Note que para as variáveis \underline{\texttt{parcela}} e \underline{\texttt{arvore}} esse sumário não faz sentido, uma vez que elas são simples variáveis indentificadoras da parcela e da árvore\footnote{Embora codificadas como números essas variáveis são variáveis nominais}. Mas o sumário também pode ser obtida para cada variável individualmente:\lstset{frame=single, language=rsplus} \begin{lstlisting} > summary(cax$dap) > summary(cax$h) > summary(cax$especie) \end{lstlisting} \subsection{\texorpdfstring{Estatísticas Descritivas}{Estatisticas Descritivas}} \label{sec:estatisticas_descritivas} O R também possui funções para as diversas estatísticas descritivas de variáveis quantitativas:\begin{longtable}{|l|l|} \hline \multicolumn{1}{|c|}{\textbf{ Estatística Descritiva }} & \multicolumn{1}{|c|}{\textbf{ Nome da Função }} \\ \hline Média & \multicolumn{1}{|c|}{ \texttt{mean} } \\ \hline Mediana & \multicolumn{1}{|c|}{ \texttt{median} } \\ \hline Mínimo & \multicolumn{1}{|c|}{ \texttt{min} } \\ \hline Máximo & \multicolumn{1}{|c|}{ \texttt{max} } \\ \hline Amplitude de variação & \multicolumn{1}{|c|}{ \texttt{range} } \\ \hline Quartis e quantis & \multicolumn{1}{|c|}{ \texttt{quantile} } \\ \hline Distância Interquartil (\emph{Inter Quarter Range}) & \multicolumn{1}{|c|}{ \texttt{IQR} } \\ \hline Variância & \multicolumn{1}{|c|}{ \texttt{var} } \\ \hline Desvio padrão (\emph{Standard Deviation}) & \multicolumn{1}{|c|}{ \texttt{sd} } \\ \hline Desvio abosluto mediano (\emph{Mean Absolut Deviation}) & \multicolumn{1}{|c|}{ \texttt{mad} } \\ \hline \end{longtable} \lstset{frame=single, language=rsplus} \begin{lstlisting} > mean(cax$dap) > mdap = mean(cax$dap) > mdap > > median(cax$dap) > min(cax$dap) > max(cax$dap) > range(cax$fuste) > quantile(cax$h) > IQR(cax$h) > var(cax$h) > sd(cax$h) \end{lstlisting} \section{\texorpdfstring{7. Gráficos Exploratórios}{7 Graficos Exploratorios}} \label{sec:7_graficos_exploratorios} O R é um ambiente de trabalho onde a análise gráfica de dados é de fácil execução. Entretanto, é necessário diferenciar dois tipos de gráficos: \begin{itemize} \item \textbf{Gráficos para análise de dados:} são gráficos simples que permitam visualizar o mais claro possível padrões presentes nos dados. Esses gráficos são construídos rapidamente no R e as formas de construí-los permitem inúmeras interações com os \textbf{elementos de informação} nos gráficos. \end{itemize} \begin{itemize} \item \textbf{Gráficos prontos para apresentação:} são construídos para inclusão em documentos e trabalhos técnicos e científicos, como forma de ilustrar resultados e conclusões. Gráficos de apresentação são mais elaborados. Sua construção no R exige mais tempo e conhecimento, pois o R não oferece recursos interativos para manipular os \textbf{elementos pictoriais} dos gráficos. \end{itemize} Vejamos alguns gráficos para análise exploratória de dados. \subsection{\texorpdfstring{Histogramas}{Histogramas}} \label{sec:histogramas} Histogramas são gráficos tradicionais na análise exploratória de dados, pois nos apresentam um gráfico da distribuição de probabilidade da variável analisada.\lstset{frame=single, language=rsplus} \begin{lstlisting} > hist( cax$dap ) > hist( cax$h, col="red" ) > hist( cax$h, col="blue", probability=T ) \end{lstlisting} Uma possibilidade de gráfico que o R permite é adicionar uma curva de \textbf{densidade probabilística} ao histograma, para melhor estudar o comportamento da variável.\lstset{frame=single, language=rsplus} \begin{lstlisting} > hist( cax$dap, probability=T , col="blue") > lines( density(cax$dap) , col="red") \end{lstlisting} Um \textbf{gráfico tipo texto} análogo ao histograma é o tradicional \textbf{gráfico de ramo-folha} da análise exploratória de dados:\lstset{frame=single, language=rsplus} \begin{lstlisting} > stem(cax$dap) > stem(cax$h) \end{lstlisting} \subsection{\texorpdfstring{Boxplot}{Boxplot}} \label{sec:boxplot} Os boxplots são gráficos de uso frequente para se estudar o comportamento das variáveis. Sua construção no R é direta e simples:\lstset{frame=single, language=rsplus} \begin{lstlisting} > boxplot( cax$dap ) > boxplot( dap ~ local, data=cax ) \end{lstlisting} Transformar um gráfico de análise em um gráfico de apresentação demanda o conhecimento sobre as ferramentas gráficas presentes no R:\lstset{frame=single, language=rsplus} \begin{lstlisting} > par( mar=c(5,10,4,2) ) # Altera as margens da janela gráfica > boxplot( dap ~ especie, data=cax , horizontal=T, las=1) # Boxplot > dev.off() # Fecha a janela gráfica \end{lstlisting} \subsection{\texorpdfstring{Gráfico de Dispersão}{Grafico de Dispersao}} \label{sec:grafico_de_dispersao} A função \underline{\texttt{plot}} é a função básica para construção de gráficos de dispersão para duas variáveis quantitativas:\lstset{frame=single, language=rsplus} \begin{lstlisting} > plot( cax$dap, cax$h ) > scatter.smooth( cax$dap, cax$h ) \end{lstlisting} \\\begin{longtable}{|l|} \hline \multicolumn{1}{|c|}{\textbf{ Você se sente seguro em relação às metas 6 e 7? }} \\ \hline \multicolumn{1}{|r|}{\textbf{ Não? Então utilize os seus próprios dados para calcular estatísticas descritivas e construir gráficos exploratórios . }} \\ \hline \end{longtable} \\ \section{\texorpdfstring{8. Modelos Lineares}{8 Modelos Lineares}} \label{sec:8_modelos_lineares} Utilizaremos alguns modelos lineares para estudar a relação entre o DAP (variável \underline{\texttt{dap}}) e a altura total (variável \underline{\texttt{h}}) das árvores dos caxetais. A função \underline{\texttt{lm}} (\emph{linear model}) é a função utilizada para \textbf{construir} um modelo linear. O primeiro passo é construir um modelo linear gravando-o num objeto na área de trabalho.\lstset{frame=single, language=rsplus} \begin{lstlisting} > hipso1 = lm( formula = h ~ dap, data=cax ) > hipso1 = lm( h ~ dap, data=cax ) \end{lstlisting} O primeiro argumento da função \underline{\texttt{lm}} é uma \textbf{fórmula estatística} (\underline{\texttt{formula = h \textasciitilde{} dap}}) que descreve a variável \underline{\texttt{h}} como variável resposta e a variável \underline{\texttt{dap}} como variável preditora. Ela deve ser lida da seguinte forma: \textbf{modele \underline{\texttt{h}} como uma função linear de \underline{\texttt{dap}}}. O segundo argumento (\underline{\texttt{data=cax}}) define que as variáveis da fórmula estão no data frame \underline{\texttt{cax}}. Vejamos o objeto \underline{\texttt{hipso1}}:\lstset{frame=single, language=rsplus} \begin{lstlisting} > hipso1 \end{lstlisting} Mas que decepção!! O R não fez nada? \section{\texorpdfstring{9. Inferência sobre Modelos Lineares}{9 Inferencia sobre Modelos Lineares}} \label{sec:9_inferencia_sobre_modelos_lineares} O R fez muita coisa! Ele construiu um modelo linear e o gravou no objeto \underline{\texttt{hipso1}}. A questão agora é o que você deseja saber desse objeto que é um modelo linear? O primeiro interesse é analisar o comportamento dos resíduos do modelo linear, para verificar se o modelo é apropriado aos dados. Para isso basta utilizar a função \underline{\texttt{plot}} com o objeto \underline{\texttt{hipso1}}.\lstset{frame=single, language=rsplus} \begin{lstlisting} > plot( hipso1 ) \end{lstlisting} O R entra num modo interativo diferente, apresentando sequencialmente, à medida que você tecle \texttt{\textless Return\textgreater }, um gráfico diferente que lhe permite avaliar o comportamento dos resíduos do modelo. Esses gráficos são os gráficos necessários para se verificar as pressuposições básicas do modelo linear clássico. E para se fazer inferência sobre as estimativas dos coeficientes de regressão e sobre a qualidade do ajuste do modelo? Se utiliza as funções \underline{\texttt{summary}} e \underline{\texttt{anova}}:\lstset{frame=single, language=rsplus} \begin{lstlisting} > summary( hipso1 ) > anova( hipso1 ) \end{lstlisting} \subsection{\texorpdfstring{Cada Modelo um Objeto}{Cada Modelo um Objeto}} \label{sec:cada_modelo_um_objeto} Você pode ajustar quantos modelos você desejar para estudar a mesma relação. Podemos considerar que a relação entre DAP e altura é linear na escala logarítmica, assim um modelo apropriado seria:\lstset{frame=single, language=rsplus} \begin{lstlisting} > hipso2 = lm( log(h) ~ log(dap) , data=cax) > plot(hipso2) > summary(hipso2) \end{lstlisting} Ou então podemos verificar o modelo conhecido na Mensuração Florestal como \emph{Modelo Schumacher}:\lstset{frame=single, language=rsplus} \begin{lstlisting} > hipso3 = lm( log(h) ~ I(1/dap) , data=cax) > plot(hipso3) > summary(hipso3) \end{lstlisting} Alguém aprecia parábolas ?\lstset{frame=single, language=rsplus} \begin{lstlisting} > hipso4 = lm( h ~ dap + I(dap^2) , data=cax) > plot(hipso4) > summary(hipso4) \end{lstlisting} Como podemos visualizar todos esses modelos junto com a relação DAP - altura ?\lstset{frame=single, language=rsplus} \begin{lstlisting} > scatter.smooth( cax$dap, cax$h) > hipso1 > curve( 40.182 + 5.218*x, 0, 26, col="blue", add=T ) > > hipso2 > curve( exp( 3.2031 + 0.5574*log(x) ), 0, 26, col="red", add=T ) > > hipso3 > curve( exp( 4.639 - 1.871/x ), 0, 26, col="darkgreen", add=T ) > > hipso4 > curve( 10.4109 + 11.1879*x - 0.2325*x^2, 0, 26, col="orange", add=T ) \end{lstlisting} A abordagem mais apropriada é consideramos que cada caxetal talvez tenha uma relação altura-DAP diferente:\lstset{frame=single, language=rsplus} \begin{lstlisting} > hipso.plus = lm( h ~ dap * local, data=cax) > plot( hipso.plus ) > summary( hipso.plus ) \end{lstlisting} \\\begin{longtable}{|l|} \hline \multicolumn{1}{|c|}{\textbf{ As metas 8 e 9 foram alcançadas? }} \\ \hline \multicolumn{1}{|r|}{\textbf{ Não? Construa mais modelos com os seus próprios dados. }} \\ \hline \end{longtable} \\ \section{\texorpdfstring{10. Para onde ir a partir daqui?}{10 Para onde ir a partir daqui}} \label{sec:10_para_onde_ir_a_partir_daqui} Bem! Chegamos a nossa meta final: as fontes para continuar se desenvolvendo no R. \begin{itemize} \item \textbf{\url{http://www.r-project.org/}} é o site do Projeto R e possui as informações básicas para continuar aprendendo o R. Lá você encontrará as últimas versões do R e terá acesso aos \textbf{milhares} de pacotes que acrescentam funcionalidade extra ao R. \end{itemize} \begin{itemize} \item No site do projeto R, você encontrará também os manuais básicos que são as referências oficiais para o R: \begin{itemize} \item An Introduction to R \item The R language definition \item Writing R Extensions \item R Data Import/Export \item R Installation and Administration \item R Internals \item The R Reference Index \end{itemize} \end{itemize} \begin{itemize} \item Os livros de \textbf{John M. Chambers} também são referências básicas para o R: \begin{itemize} \item Chambers, J.M. 2008 \textbf{Software for Data Analysis: Programming with R}. New York: Springer. \item Chambers, J.M. 2004 \textbf{Programming with Data: A Guide to the S Language}. New YOrk: Springer. \end{itemize} \end{itemize} \begin{itemize} \item Um livro de R escrito para ecologistas: \begin{itemize} \item Crawley, Michael J. 2007. \textbf{The R Book}. New York: John Wiley. \end{itemize} \end{itemize} \begin{itemize} \item Existe muitos sites onde você poderá aprender mais sobre o R, basta fazer uma busca simples na internet. Dois sites \textbf{em português} que você pode continuar aprendendo o R são: \begin{itemize} \item \href{http://cmq.esalq.usp.br/wiki/doku.php?id=biometria:r-tutor:00-inicio}{ Uso da Linguagem R} e \item \href{http://ecologia.ib.usp.br/bie5782/doku.php}{ Uso da Linguagem R para Análise de Dados Ecológicos}. \end{itemize} \end{itemize} Embora ambos sejam semelhantes no conteúdo, o segundo site é mais didático e está mais atualizado. \\ \begin{center} \line(1,0){250} \end{center} Essa lista está longe de ser exaustiva!! Existem muitos outros recursos para aprender o R, essas são apenas algumas dicas iniciais. \\\begin{longtable}{|l|} \hline \multicolumn{1}{|c|}{\textbf{ Dez metas alcançadas? }} \\ \hline \multicolumn{1}{|c|}{\textbf{ Cada meta é um passo. Todo caminho se percorre passo a passo. Continue caminhando! }} \\ \hline \multicolumn{1}{|c|}{ \textbf{\emph{Be an useR ! Be happy !}} } \\ \hline \end{longtable} \\ \section{\texorpdfstring{Autor}{Autor}} \label{sec:autor} \lstset{frame=single, language=HTML} \begin{lstlisting} João Luís Ferreira Batista \end{lstlisting} \lstset{frame=single, language=HTML} \begin{lstlisting} Laboratório de Biometria Ecológica
Centro de Métodos Quantitativos
Departamento de Ciências Florestais
Escola Superior de Agricultura "Luiz de Queiroz"
UNIVERSIDADE DE SÃO PAULO
\end{lstlisting} \end{document}