Escola Nacional de Sade Pblica FiocruzDepartamento de Epidemiologia e Mtodos Quantitativos em SadeAprendendoR Antonio Guilherme Fonseca PachecoGeraldo Marcelo da CunhaValeska Lima Andreozzi
O objetivo desse material introduzir o ambiente R para alunos de ps-graduao em Sade Pblica e mostrar suas vantagens e desvantagens. Estamosconsiderando que os alunos que esto fazendo uso deste material j tiveram algumcontato mesmo que bsico com o computador e que j tenham algum conhecimento denoes bsicas de operao do Windows.Gostaramos de iniciar a apresentao do R a partir de algumas perguntas queso comuns (e que na maioria das vezes foram feitas por ns mesmos antes de termosnos tornados amantes do R);-) O que o R?O R um sistema desenvolvido a partir da linguagem S (que tambm usadanuma verso comercial o S-Plus), que tem suas origens nos laboratrios da AT&T nofinal dos anos 80. Em 1995 dois professores de estatstica da Universidade de Auckland,na Nova Zelndia, iniciaram o Projeto R, com o intuito de desenvolver um programaestatstico poderoso baseado em S, e de domnio pblico.Com o R posso utilizar menus para fazer anlises estatsticas, como noSPSS, SAS e S-Plus?No. O R em verso para Windows at provido de menus, mas todos sousados para realizar tarefas no estatsticas (como atualizar a verso ou salvar umgrfico). Todas as funes estatsticas que acompanham o R devem ser chamadas apartir do cursor do programa (seja digitando um comando ou copiando e colando umcomando previamente digitado).O fato do R no possuir menus no seria uma desvantagem em relao aoutros pacotes estatsticos?Depende. Muitos iro certamente interpretar esse fato como uma desvantagem,mas a gente entende que na verdade esta uma vantagem forte do R. A utilizao do Rpara realizar anlises estatsticas exige muito mais do que simplesmente apertar algunsbotes em srie e dar alguns cliques no mouse: para trabalhar dados com o R precisoPENSAR e ENTENDER o que se est fazendo. Ao contrrio de muitos pacotesestatsticos clssicos, o R permite uma grande flexibilidade em relao s funesestatsticas pr-existentes, i.e. as funes so editveis, alm da possibilidade de vocmesmo poder criar as suas prprias funes personalizadas (como ser mostrado maistarde). Quanto custa para ter uma cpia oficial do R?No custa nada: ele de graa MESMO, ou seja, ningum precisa gastar US$1.349, o que seria necessrio para comprar o mdulo bsico do SPSS, por exemplo; nemser obrigado a cometer um pequeno delito para usar o R. Se ningum est ganhando dinheiro para manter o R atualizado, comoposso ter certeza que se trata de um produto confivel?Esta uma outra vantagem do R: o Projeto R de uma colaborao internacional devrios pesquisadores que se comunicam atravs de uma eficiente lista de discusso pelaInternet. Com isso, no s bugs (defeitos de programao) so detectados ecorrigidos, como tambm novos mdulos contendo mtodos estatsticos recentementeimplementados so regularmente disponibilizados e atualizados na rede.2
O que so esses mdulos adicionais?Os mdulos adicionais funcionam da seguinte forma: um pesquisador em algumlugar do mundo precisou desenvolver uma aplicao numa rea que no coberta nempelo mdulo bsico nem pelos mdulos de colaboradores existentes. O que essepesquisador faz desenvolver o que chamada de uma biblioteca para o R com asfunes que ele criou e utilizou, disponibilizando-a na rede. A vantagem que abiblioteca pode ser usada por diferentes pessoas, que iro eventualmente reportar errosnas funes, que podem ento ser atualizadas pelo seu criador.Que plataformas (sistemas operacionais) suportam o R?Atualmente o R est disponvel para a famlia UNIX (incluindo LINUX), amaior parte dos Mac OS e ainda Windows 95, 98, NT, 2000, Me, XP.Onde posso conseguir o R?O R est disponvel na internet no website do CRAN que o ComprehensiveR Archive Network ou Rede Completa de Arquivos do R, no seguinte endereo:http://www.r-project.org/J sei, no gostou da traduo do website, n? Bem, se algum tiver umatraduo melhor para comprehensive, por favor me avise...;-) Muito bem. Agora que j ganhamos uma certa noo do que vem a ser o R,vamos ver como esse material est dividido.A idia desse documento separar em mdulos diferentes assuntos estatsticosque so tratados pelo R; desse modo, pessoas que tenham interesses em tipos de anlisesdiferentes podero consultar partes especficas do material, sem ter o trabalho depagin-lo exaustivamente para encontrar o que se quer.O primeiro mdulo, Baixando e Instalando o R, bastante curto e trata dapgina da internet que abriga todo o material necessrio para baixar e instalar o R chamada CRAN. O segundo mdulo, chamado Bsico serve para dar uma noo geraldo funcionamento do R, desde uma simples calculadora at uma poderosa ferramenta deprogramao em estatsticas, sempre usando exemplos intuitivos e em um nvel bastanteinicial. Esses dois mdulos no exigem o uso de qualquer dado externo ou pacotes quej no estejam includos na verso mais bsica do R aquela que voc ir instalarinicialmente na sua mquina.O terceiro mdulo trata da entrada e sada de dados no R. Nesse caso no s sermostrado como o R l dados externos, mas tambm como se exportam dados, sadas emtexto e sadas grficas. O uso de um pacote prprio para esse fim tambm mostrada edados externos sero necessrios para a parte de importao de dados.Esses trs mdulos so os nicos que podem ser encarados como seqenciais etambm fundamentais para uma compreenso inicial do ambiente. A partir da, umasrie de mdulos j esto e sero mais tarde desenvolvidos para aulas ou assuntosespecficos e ficaro guardados em arquivos separados, permitindo um acesso rpido einterativo aos assuntos de interesse.Portanto, divirta-se... 3
Mdulo Baixando e Instalando o RAutor: Antonio Guilherme Fonseca PachecoPr-requisitos: Conhecimentos bsicos de informtica e acesso internet (preferencialmente.)Pacotes e arquivos necessrios: Nenhum.Esse mdulo inicial tem o objetivo de capacitar pessoas a navegar mais facilmente nowebwsite do R, chamado CRAN (Comprehensive R Archive Network) e ainda orientar a instalaodo R para Windows e fazer uma configurao inicial bsica do programa, incluindo a instalao depacotes adicionais. Como esse material poder estar acompanhado de um CD-ROM j com oprograma de instalao do R e os seus pacotes, abordaremos tambm esse tpico. No CRAN possvel baixar no s o pacote principal do R, mas tambm os pacotes opcionais (chamados decontribudos) e tambm uma srie de manuais. Vale lembrar que no s a verso para Windows estdisponvel no CRAN, mas tambm verses para a famlia UNIX (incluindo Linux) e ainda paraMac. Dispensvel dizer que a correta utilizao desse mdulo pressupe que a mquina dousurio esteja conectada internet.Conhecendo o CRANO primeiro macete encontrar o website do CRAN, que no muito fcil de achar se vocno souber o endereo (que por sinal no l muito intuitivo). A dica ir no website de uma dessasferramentas de busca na internet (como por exemplo o Google) e procurar por CRAN.Certamente uma das primeiras respostas ser o endereo do CRAN. claro que no somos tomaus assim para fazermos voc voltar primeira parte desse documento para procurar o endereosem usar o Google... V em:http://cran.r-project.org/Uma vez l, voc ver algo como a figura abaixo.Nessa pgina voc vai encontrar praticamente tudo que voc precisa saber sobre o R e tudoque voc precisar baixar para a sua mquina para instalar o R e seus pacotes adicionais, alm deinformao sobre a excelente lista de discusso que mantida na internet e da qual participam aspessoas do ncleo de desenvolvimento do R.Na parte central da pgina voc vai observar uma lista de pginas mais usadas e umapequena explicao do R e do CRAN abaixo. Como essa parte da pgina pode mudar, vamosutilizar os atalhos que esto listados esquerda, que acabaro levando para as mesmas pginaslistadas como mais freqentes. esquerda da pgina, ento, voc vai encontrar vrios links para os diversos recursosdisponveis no CRAN... Vamos ver aonde alguns deles nos levaro e depois de aberto o caminho,sugerimos que voc mesmo, imbudo de seu esprito aventureiro de surfista da rede, explore osdemais atalhos. Inicialmente, repare que eles esto divididos em 5 grupos. Ns iremos abordarapenas os atalhos dos grupos Software e Documentation.1
Apesar de voc provavelmente estar fazendo esse curso em um laboratrio que j teminstalado o R em uma plataforma Windows, sempre bom instalar uma cpia do programa em umaoutra mquina que voc tenha acesso (seja em casa ou no trabalho). O atalho para baixar oprograma que instala o R para Windows na sua mquina o R Binaries que fica no grupo Software.Uma vez clicando nesse atalho, uma pgina se abrir com o ttulo de Index of /bin. Observe que osatalhos sua esquerda permanecem l. Nessa pgina (que mais parece uma estrutura de diretrios o que de fato ), a escolha bvia se voc vai instalar o R para Windows clicar em windows/.Ao clicar no atalho, uma nova pgina ser mostrada com 3 atalhos: base, contrib eunsupported. O primeiro atalho (que o que estamos procurando) nos levar a uma nova pginaonde poderemos baixar o executvel para a instalao. Os outros atalhos ns iremos deixar de lado,pois so para acessar pacotes contribudos para o R, um assunto que vamos abordar em outrosmdulos. Apesar de ser possvel baixar cada um dos pacotes e instal-los manualmente no R, nsveremos que uma vez instalado o R, existe uma maneira muito mais simples de instalar pacotes doCRAN usando o prprio R como interface.Muito bem, clicando ento em base uma nova pgina se abrir e voc deve procurar peloatalho rwXXXX.exe, onde os XXXX representam a verso atualmente disponvel. Por exemplo,quando esse material estava sendo escrito, a verso disponvel era a 1.6.2 e o atalho era rw1062.exe.Basta agora clicar nesse atalho e o seu browser ir automaticamente perguntar onde voc desejasalvar o arquivo. Salve onde voc estiver mais acostumado (e.g no desktop ou em MeusDocumentos) e aguarde. Ateno: esse arquivo tem em torno de 20 Mb de tamanho e dependendoda sua velocidade de conexo com a internet, o download pode demorar at mais de uma hora.Uma vez baixado o programa de instalao, basta dar um duplo-clique em seu cone e seguiras instrues de instalao (veja as instrues mais detalhadas abaixo.)Bem, vamos passar agora para a documentao do R. Observe os grupos de menus esquerda e procure o grupo Documentation. Primeiramente, o atalho Manual ir lev-lo para uma2
pgina de onde possvel baixar vrios materiais em formato PDF (que pode ser lido pelo AdobeAcrobat Reader, um programa que pode ser baixado gratuitamente da rede na verdade se a suamquina j tem o Reader instalado, o documento aparecer automaticamente na tela do seubrowser. No vamos nos estender aqui explicando cada um dos materiais. Experimente baixaralguns e divirta-se...O atalho seguinte chamado FAQs, que voc j deve ter ouvido falar em algum lugar, masque se no sabe o que significa, aqui vai: so perguntas feitas com freqncia, sobre algumassunto que naturalmente aqui sobre o R (FAQ em ingls abreviao de Frequently AskedQuestions). Ao clicar nesse atalho, vai se abrir uma pgina com links para a FAQ do R (que umaFAQ geral) e tambm FAQs especficas para usurios de Windows e Mac. Clique e boa leitura...O terceiro atalho desse grupo chamado Contributed e contm diversos manuais escritospor pessoas que no fazem parte do ncleo de desenvolvimento do R, mas que soreconhecidamente boas contribuies para o entendimento do programa. Voc encontrar inclusivemateriais em outras lnguas que no o ingls. O leitor convidado a explorar esses diversosmateriais para ver se algum do seu interesse.Finalmente o ltimo atalho nesse grupo o Newsletter, onde voc encontrar uma coleode documentos sobre o desenvolvimento do R alm de comentrios sobre pacotes relevantesadicionados ao programa, dentre outras informaes.Por fim, no deixe de se aventurar pelos demais atalhos do CRAN que uma fonte muitogrande para informao sobre o R. Quanto ajuda do programa, num outro mdulo vamos falarsobre a documentao em html que acompanha o mdulo bsico do R. At l, boa sorte...Instalando e Configurando o R para WindowsComo mencionado anteriormente, a instalao do R mesmo no tem grandes mistrios:basta dar um duplo-clique no cone do programa de instalao e seguir as instrues que aparecemna tela. Ao fazer isso, o programa ser instalado no diretrio padro (geralmente c:\ProgramFiles\R\rwXXXX\) e ser criada uma pasta dentro do seu menu Iniciar Programas chamada R.Adicionalmente, um cone ser colocado na sua rea de trabalho.3Aqui est o cone do R!
Para iniciar o programa, d um duplo-clique no cone do R localizado na rea de trabalho...Olhe um exemplo a em cima em um computador qualquer...Ao fazer isso, o programa ser executado e uma janela com o programa ser aberta. Vocdeve notar que o programa se parece bastante com outros programas que voc j deve estarhabituado a usar: ele tem uma barra de menus, uma de cones e uma janela aberta, com o prompt decomando. Por enquanto, ns estaremos interessados no menu Packages, onde iremos ver comoinstalar pacotes adicionais diretamente do CRAN, usando o prprio R. Observe a figura:Ao clicar na opo Installing package from CRAN, uma janela se abrir com uma lista detodos os pacotes disponveis no CRAN para download. Voc pode ento escolher um ou vriospacotes para serem baixados e instalados automaticamente na sua mquina, incluindo a ajuda emHTML para esses pacotes. As tcnicas de seleo mltipla que voc deve conhecer para programascomo o Windows Explorer funcionam nessa janela, ou seja, para selecionar um intervalo depacotes, clique no primeiro, pressione a tecla Shift e ento clique no ltimo pacote do intervalo;para selecionar pacotes salteados, clique nos pacotes, com a tecla Control (Ctrl) pressionada. Claroque uma opo pode ser selecionar todos os pacotes (selecionando do primeiro ao ltimo com aajuda da tecla Shift), mas ateno: ao selecionar todos os pacotes, voc estar optando por baixaruma grande quantidade de dados, o que, num computador que est ligado internet via modem,pode demorar muitas horas.Ao final da instalao, o R vai perguntar se voc deseja apagar o(s) pacote (s) baixados (apergunta mais ou menos: Delete downloaded files (y/N)? Para a qual voc deve, geralmenteresponder y, a no ser que voc deseje ter o pacote compactado para instalar em uma outra4
mquina. Confundiu? Eu explico: os pacotes so na verdade arquivos compactados no formato.zip, que pode ser lido com o popularssimo Winzip. O que o programa faz baixar esse arquivodo CRAN para um diretrio temporrio, e em seguida instalar o pacote a partir desse arquivo .zip.O que ele pergunta no final se voc deseja manter esse arquivo gravado no seu computador ou no(claro que isso DEPOIS do pacote j ter sido instalado.)Bem, uma vez instalados os pacotes, uma outra opo nesse mesmo menu pode ser usadapara atualizar verses de pacotes instalados na sua mquina, mas que j possuem verses maisatualizadas no CRAN. a ltima opo do menu Update packages from CRAN que ao ser acionadair procurar os pacotes instalados na sua mquina, compar-los com as verses desses pacotes noCRAN e perguntar se voc deseja atualizar (um a um). Note que ele no vai perguntar se voc queratualizar um pacote que ainda no est instalado na sua mquina!!! Para isso, voc deve instalar opacote, como descrito anteriormente.Voc agora deve estar se perguntando: mas e se eu no tiver acesso internet e tiver tanto oprograma de instalao do R quanto os pacotes em uma mdia de distribuio qualquer um CD-ROM por exemplo?Nesse caso, no h problema algum. Para instalar o R basta, a partir do prprio CD-ROMexecutar o programa de instalao do R (que deve ter um instrutivozinho junto com o CD,naturalmente, mas que deve consistir apenas de explicar em que diretrio dentro do CD-ROM essearquivo s encontra e dar um duplo-clique no seu cone.J para instalar os pacotes (depois naturalmente de instalado o R) o procedimento muitosemelhante. A terceira opo do mesmo menu que estvamos falando Install package from local zipfiles ir abrir uma janela para voc escolher pacotes compactados nas suas unidades locais (quepode ser o seu disco rgido ou uma outra mdia qualquer) para serem instalados na sua mquina.Esse procedimento tambm depende de onde esto guardados os arquivos. Nesse caso, se porexemplo esses arquivos estiverem em um CD-ROM distribudo para voc, este deve viracompanhando como instrutivo indicando a partir de que diretrio os pacotes devem ser instalados,mas basicamente, tudo o que deve ser feito escolher os pacotes e deixar o R fazer o resto.Ento, boa sorte... 5
Mdulo BsicoAutores: Antonio Guilherme Fonseca Pacheco; Geraldo Marcelo da Cunha; Valeska LimaAndreozziPr-requisitos: Por se tratar de um mdulo bsico, no existem pr-requisitos para iniciar otreinamento em R com este documento, se o leitor tiver acesso ao R j instalado em sua mquina.Caso contrrio, a leitura do Mdulo Baixando e Instalando o R deve ser feita anteriormente (eclaro, proceder a dita instalao). Foi feito um esforo tambm para tornar este materialindependente de qualquer arquivo ou banco que j no exista na distribuio bsica do R, e por issoalguns exemplos ficaram um pouco prejudicados...;-)Pacotes e arquivos necessrios: Nenhum.Material extra: Um disquete (ou qualquer mdia regravvel) para salvar o seu trabalhoEste mdulo tem por objetivo apresentar as caractersticas bsicas de funcionamento do R eintroduzir o leitor a um primeiro contato com o ambiente R, sem referncia especfica a um tpicode estatstica. Por ora, assumimos que o R j est instalado no seu computador, e que um cone japarece na rea de trabalho (caso isso no seja verdade, leia o mdulo Baixando e Instalando o Rpara instrues sobre como baixar, instalar e configurar o R em sua mquina.)Para iniciar uma sesso do R, d um duplo-clique no cone do R que deve estar localizadona sua rea de trabalho. Uma vez iniciado o programa, uma janela contendo o prompt de comando aberta: 1Prompt de comando
Observe que h uma janela dentro do programa com o prompt de comando. As sadas nogrficas no R aparecero nesta mesma janela enquanto que as grficas sero geradas em uma janelaseparada. Entendendo a Ajuda do RSe voc me perguntasse qual o conhecimento fundamental que uma pessoa que desejasaber usar qualquer programa de computador deve ter, a resposta seria contundente: o quediferencia a capacidade de um usurio se tornar familiarizado com qualquer software a capacidadede usar de maneira racional e eficiente a ajuda desse programa. O R possui diversas formasdiferentes de obter ajuda sobre o programa em geral e ainda sobre funes e conjuntos de dadosdisponveis.Uma caracterstica muito til do R sem dvida nenhuma a ajuda baseada em HTML queele possui. Para quem no entendeu o que isso quer dizer, o R tem uma ajuda que pode ser acessadaatravs do seu browser favorito... Ah, para quem no sabe, browser aquele programa que voc usapara navegar na internet, como o Internet Explorer ou o Netscape, para citar os mais usados...Para acessar essa ajuda, clique na barra de menus em Help e, em seguida, R language(html), como na figura abaixo:Ao fazer isso, o seu browser ser automaticamente executado e a pgina inicial da ajuda vaiaparecer na sua tela. Voc ver algo assim: 2
O grupo de links que dizem respeito ajuda do R o de referncias (Reference). O link depackages vai levar voc pagina com todos os pacotes que esto instalados na sua mquina, alm claro do pacote base (que o pacote bsico do R que automaticamente instalado quando vocinstala o R). Ao clicar em cada um dos links com os nomes dos pacotes, voc ser levado ento auma pgina com todas as funes e bancos de dados que compem o pacote. Por que voc no tentaacessar as funes do pacote base?O segundo link em interesse para ns aqui o de Search Engine & Keywords, algo comoFerramenta de Procura e Palavras-chave. Ao clicar neste segundo link voc encontrar a seguinte tela que est dividida em duaspartes: Search e Keywords. Na primeira parte podemos procurar uma ou mais palavras que estejam no ttulo das pginasde ajuda (Help page titles), por palavras-chave (keywords) ou pelo nome de funes ou objetos(Object names). Vamos experimentar procurar ajuda sobre como fazer um teste t de Student. Digite,em ingls claro, t-test e clique no boto Search ou aperte somente a tecla enter no seu teclado. Ohelp HTML abrir outra pgina com uma lista de comandos e uma pequena descrio do que cadauma delas faz. Clique no nome do comando e outra janela ser aberta com todos os detalhes dorespectivo comando, como mostra a figura abaixo: 3
No canto superior esquerdo encontramos o nome do comando e entre chaves o nome dopacote no qual este comando se encontra (mas a frente vamos entender um pouco melhor sobre otpico pacotes). Esta janela composta por 7 tens:1. Description (Descrio)Descreve o que o comando faz2. Usage (Sintaxe forma de uso)Mostra como devemos usar o comando, quais os seus argumentos e respectivos valorespadres3. ArgumentsDescreve cada argumento listado na sintaxe do comando.4. Details (Detalhes)Descreve com um pouco mais de detalhe o comando e/ou argumentos.5. Value (Valores)Descreve o que o comando retorna6. See Also (Ver tambm)Cita alguns comandos que tenham alguma ligao com o comando em questo7. Examples (Exemplos)Exemplifica o comando. Podemos selecionar os comando listados no exemplo, depois colare copiar na janela do R para executa-los.O critrio de procura do help HTML pode gerar dvidas algumas vezes. Nas situaes emque voc no encontrar o que esteja procurando o conselho : tente pesquisar de uma formadiferente. S para exemplificar tente procurar a palavra t test (sem hfem) e test t. Voc vai observarque o help ir retornar listas de comandos que so diferentes de quando usamos a palavra t-test. Ah, mas como volto para a tela inicial (ou qualquer tela anterior)? Para voltar para a pginainicial ou qualquer pgina anterior, use o boto voltar para (usualmente representado por umasetinha) do seu web browser. 4
A segunda parte da tela Keyword lista diversos links por assunto. Ao clicar em um desseslinks uma janela ser aberta com todos os comandos relacionados aquele assunto.No momento acho que este tpico pode no ser muito til, mas com certeza voc ir voltarnele mas a frente assim que comear a usar o R. Na verdade a gente aprende que a melhor maneirade trabalhar no R e estar sempre com o help HTML aberto, pois decorar todos os comando e suassintaxes e algo impossvel. A partir deste ponto, vamos comear a discutir coisas que so feitas no R propriamente dito.Isto consiste basicamente em entrar comandos no prompt de comando, que j foi apresentadoanteriormente. O leitor tem duas opes para conferir as sadas aqui apresentadas no R: ou escrevea partir do teclado o mesmo comando apresentado, ou ento copia e cola o comando no R. Paracopiar, basta marcar o texto com o mouse e ento pressionar a tecla Ctrl seguida da tecla c no seuteclado. Para colar, pressione a tecla Ctrl seguida da tecla v no seu teclado. Para isso,evidentemente voc deve ter o programa onde voc est lendo este material aberto e tambm o R,alternando entre um e outro. Um detalhe importante deve ser mencionado de uma vez: o prompt doR, como voc j deve ter notado, comea com o smbolo de maior (>). Sempre que neste materialo comando for mostrado juntamente com a sada correspondente, o sinal > estar tambm notexto, como nesse primeiro exemplo abaixo:> 3+7[1] 10Se voc quiser copiar e colar esse comando de soma de dois nmeros no R, NO COPIE OSINAL DE MAIOR, pois se o fizer, voc receber uma mensagem de erro. Veja s:> > 3+7Error: syntax errorE, claro, no copie a sada tambm, s o comando. Ah, e s vezes depois de colar, vocdever pressionar a tecla enter no teclado para o R executar o comando. claro que voc livrepara copiar o que quiser, mas sempre que a recomendao for copiar e colar, os comandos virosem o smbolo > antes do comando.Muito bem, ento d um duplo-clique no cone do R para abri-lo e boa sorte...Clculos e FunesVamos iniciar mostrando o R como calculadora. Por exemplo, tente fazer uma contasimples:> 3+7[1] 10Repare que o resultado da operao precedido por um [1]. Isto apenas para indicar que oresultado 10 o primeiro (e nesse caso nico) elemento retornado pelo programa. Bem, essa uma excelente deixa para dizer que o R pode funcionar como uma calculadora, como a que voc jdeve ter usado em cursos passados. Porque a gente no experimenta outras operaes simples?Tente: > 3-7[1] -4> 3*7[1] 21 5
> 3/7[1] 0.4285714> 3^7[1] 2187Como em outros programas (e.g. Excel), os operadores matemticos simples so +, -,*, / e ^ este ltimo para potenciao. Voc pode estar se perguntando agora, depois dealgumas aulas de matemtica: como o inverso do operador potncia? Ou melhor, como descobrira que potncia um certo nmero foi elevado para obtermos um determinado resultado?Bom, nesse caso temos que lanar mo de uma funo, j que como voc deve se lembrar ooperador inverso da potenciao a funo logartmica. Recordando:Se 37=2187 log3 2187=7 , ou seja, o logaritmo de 2187 na base 3 igual a 7.Lembrou? Ser complicado obter esse resultado no R, sem a ajuda de um menuzinho? Bem, vamostentar escrever exatamente como estamos interpretando a funo? > log(2187, base=3)[1] 7E no que funcionou??? Quer dizer, precisamos elevar 3 stima potncia para obter oresultado de 2187.Vamos aproveitar esse exemplo para explicar algumas caractersticas bsicas das funesdisponveis no R. Todas tm a forma: > funo (argumento(s) obrigatrio(s), argumento(s) opcional(is))Sendo que os argumentos opcionais podem ter um valor padro pr-estabelecido ou no. Osargumentos estaro sempre entre parnteses sendo separados por vrgula. Se voc deixar o primeiroargumento em branco, vai receber uma mensagem de erro:> log(, base=3)Error in log(, base = 3) : Argument "x" is missing, with no defaultRepare que o programa j indica que o argumento (que ele chama de x) obrigatrio nofoi fornecido e que no existe nenhum padro (default). Agora, deixe o segundo argumento embranco:> log(2187,)[1] 7.690286Dessa vez no houve mensagem de erro, mas o resultado diferente do que a gente obteveanteriormente... O que ter acontecido? Bem, se no houve queixa do programa quanto ao segundoargumento, ele deve ter um default pr-estabelecido... Por que esse default seria 3?Vamos descobrir, aproveitando para aprender a consultar a ajuda do R? Por que notentamos assim:> ?logNote que uma nova janela se abriu dentro do prprio R com a informao de ajuda sobre afuno log. A essa altura voc est se perguntando onde estar a ajuda em HTML, no? que oR possui vrios tipos de ajuda; se preferir, abra a ajuda em HTML e procure pela funo log. Dequalquer modo, se voc olhar a entrada Usage, na pgina de ajuda sobre o log, vai ver: 6
log(x, base = exp(1))Isso quer dizer que a funo log() precisa de um argumento x que no tem default etambm de um argumento base que tem um valor pr-estabelecido, exp(1) que nada mais que onmero e (conhecido como algarismo Neperiano e aproximadamente igual ao valor 2.718282).Vamos tentar? Volte para a janela do prompt e veja o valor:> exp(1)[1] 2.718282Lembrou dele? Vamos conferir ento se foi isso mesmo que aconteceu. Vamos tentar assim:> log(2187, base=2.718282)[1] 7.690286 o mesmo resultado!!! Parece ser isso mesmo!!!A prxima pergunta que voc pode estar fazendo se existe uma maneira de economizardigitao omitindo o argumento base =. A resposta sim, neste caso. Vamos tentar:> log(2187, 3)[1] 7Neste caso deu certo porque a funo s tem 2 argumentos possveis e eles entraram naordem certa. Se voc trocar a ordem, o resultado diferente:> log(3,2187)[1] 0.1428571Se voc trocar a ordem, porm especificando quem quem, no haver confuso:> log(base=3,2187)[1] 7Moral da histria: sempre melhor especificarmos o que estamos escrevendo (emboramuitas vezes ns tenhamos preguia de fazer isso tambm...).;-)Vamos aproveitar e ver rapidamente algumas funes bastante usadas no R. Veja a tabelaabaixo: Funo Descriosqrt() raiz quadradaabs() valor absoluto exp() exponenciallog10() logaritmo na base 10log() Logaritmo na base esin() cos() tan() funes trigonomtricasasin() acos() atan() funes trigonomtricas inversassin() cos() tan() funes trigonomtricas 7
maneira de se fazer uma cpia de um objeto no R. Vamos criar um objeto chamado banana,contendo o nmero 7 e copiar o seu contedo para o objeto x:> banana banana[1] 7> x x[1] 7Pegou? Legal. Agora, voc deve ter notado um probleminha... a gente tinha colocado noobjeto x primeiramente o nmero 3, depois a palavra banana e por fim o nmero 7, quandocopiamos o contedo do objeto banana para x. Repare que as substituies de contedo do objeto xforam feitas sem nenhuma cerimnia pelo R. Pois , isso pode ser um problema no R: ele nopergunta se voc quer ou no substituir o contedo de um objeto com um nome, por outro. Paraevitar esses acidentes, vamos aprender mais tarde uns macetes para economizar digitao...Aguardem...;-)At agora s vimos exemplos que raramente usaremos, n? Quem que vai entrar UM valorem um vetor??? Embora faamos isso muitas vezes no caso de programao avanada, vamos veralgo mais interessante. No R, para entrar com vrios nmeros (ou nomes, ou qualquer outro grupode coisas), precisamos usar uma funo para dizer ao programa que os valores sero combinadosem um nico vetor. Vamos tentar:> x x[1] 1 2 3 4 5A essa altura, voc j notou que a funo usada foi c() e serve evidentemente paracombinar elementos. Vamos ver com nomes:> x x[1] "banana" "laranja" "tangerina"Por ltimo, vamos abordar uma outra funo que vai ser muito usada no R, e que a gentequeria apresentar para voc no contexto de vetores. a funo usada para gerar uma seqncia denmeros. Imagine como seria esta funo... Acertou:>x x [1] 1 2 3 4 5 6 7 8 9 10 11 12Usamos a funo seq para criar uma seqncia de (from) 1 a (to) 12. Bom, lembra quandoa gente disse que era preguioso? Pois : d para fazer a mesma coisa de duas maneiras maisrpidas. Uma omitindo os argumentos from e to:> x x [1] 1 2 3 4 5 6 7 8 9 10 11 12Agora, a campe da preguia mesmo seria:> x x 11
plot(y)Se voc digitou essa funo no prompt do R, notou que aconteceu algo diferente. A sadadessa funo no foi listada na mesma janela, mas uma outra janela diferente foi aberta e umgrfico foi mostrado. Os chamados grficos de alto nvel so sempre plotados nessa janela. Ogrfico deve ser mais ou menos como esse a em cima.Alguns detalhes devem ser notados nessa figura. Primeiro, apesar da funo ser plot(), ogrfico mostrado um scatter plot. Esse o default de uma funo plot() para um vetor, onde oeixo x o ndice, ou seja a posio do elemento dentro do vetor, e o eixo do y o valor doselementos do vetor. O segundo detalhe so os valores do nosso vetor. Observe que, em se tratandode uma Normal Padronizada, cuja mdia zero, a maior parte dos pontos se encontra concentradaem torno desse valor . Alm disso, note que a esmagadora maioria dos pontos se concentra entre osvalores 2 e 2. Voc seria capaz de dizer qual a percentagem aproximada de pontos que deve estarentre esses valores?Outro grfico muito usado o histograma. Vamos ver o jeito dele:hist(y) 150 20 40 60 80 100-2-1 012 Indexy
Repare como o histograma lembra bastante a densidade de uma distribuio Normal. Estegrfico tem os valores do vetor y no eixo horizontal e as freqncias (absolutas nesse caso) dosvalores contidos nos intervalos pr-estabelecidos pelo programa no eixo vertical. Curioso para sabervariaes da funo hist()? Consulte a ajuda. Lembra como?> ?histOU > help(hist)O boxplot tambm um grfico interessante principalmente para analisar a disperso dosdados e tambm para detectar a presena de outliers. Para quem no sabe ou no se lembra, outliersso pontos que caem em uma regio muito afastada do centro da distribuio (i.e. muito afastadosda mdia e da mediana). Vamos explicar melhor com a visualizao de um boxplot propriamentedito: boxplot(y) 16Histogram of yy-2 -1 0 1 2051015
A linha central do retngulo (que seria a nossa caixa) representa a mediana dadistribuio (sabe o que significa mediana? No? As bordas superior e inferior do retngulorepresentam o percentis 25 e 75, respectivamente (tambm conhecidos como primeiro e terceiroquarts, respectivamente). Logo, a altura deste retngulo chamada de distribuio interquartilar(DI). Os traos horizontais ao final das linhas verticais so traados sobre o ltimo ponto (de umlado ou de outro) que no considerado um outlier.A essas alturas voc deve estar estranhando a falta de definio de outlier no mesmo? Anossa primeira definio foi algo subjetiva, certo? isso mesmo! No h um consenso sobre adefinio de um outlier. Porm, no caso do boxplot em geral, existe uma definio formal. A maiorparte das definies considera que pontos acima do valor do 3 quartil somado a 1,5 vezes a DI ouos pontos abaixo do valor do 1 quartil diminudo de 1,5 vezes a DI so considerados outliers. Essespontos so assinalados (no nosso exemplo, tivemos 2 outliers, um para cada lado). Vamos ver denovo o boxplot, para ficar mais claro: 17-2-1 012
> stem(y) The decimal point is at the | 2 | 0 4 | 000000 6 | 0000000000 8 | 0000000000000000000 10 | 00000000000000000000000000 12 | 0000000000000000000000000 14 | 000000000 16 | 00 18 | 00A idia do ramo e folhas separar um nmero (como 7,0) em duas partes. Neste caso, aprimeiro parte inteira (7) chamada de ramo e a segunda, a parte decimal (0) chamada de folha.Alm de separar os nmeros em duas partes (inteira e decimal), o R agrupa os nmeros em classesde tamanho 2. Por exemplo, o ramo 4 leva em conta os nmeros 4 e 5. No gostou dessadisposio? No tem problema. Que tal dobrarmos a escala do grfico para o R considerar cadanmero separadamente na sua prpria classe?> stem(y, scale=2) The decimal point is at the | 3 | 0 4 | 0000 5 | 00 6 | 00000 7 | 00000000 8 | 0000000000000000 9 | 000000000000 10 | 000000000000000000 11 | 0000000000 12 | 00000000 13 | 000000 14 | 0000 15 | 000 16 | 00 17 | 18 | 19 | 20 | 21 | 0J percebeu que o argumento extra para dobrar a escala scale=2, n?E por que a distribuio dos dados parece concentrada em torno de 10 (hum... nem tanto...)? Bem, o que fizemos aqui foi gerar 100 amostras de 200 pessoas, contando o nmero depessoas com a doena em cada amostra. Se a prevalncia da doena 0.05 a gente espera que emuma amostra de 200 pessoas, o nmero de pessoas com a doena seja igual a 10 = 200x0.05!! Mascomo o processo aleatrio, existe a situao onde apenas 3 pessoas so afetadas pela doena eainda situaes extremas de 21 pessoas (mais que o dobro do esperado).Vamos fazer um exerccio interessante? O exerccio consiste em observar o comportamentodo nmero de pessoas afetadas por uma doena na medida em que aumentamos o valor daprevalncia. Antes disso, vamos dividir o espao grfico em 6 partes atravs do comando:par(mfrow=c(2,3)) 19
Ih... O Que essa funo par()??? Como voc deve ter observado, uma janela de grficosfoi aberta. Pois , essa a funo para atribuir parmetros grficos. O argumento mfrow= estabeleceo nmero de grficos que sero visualizados em uma mesma janela grfica e em que disposio.Quando escrevemos no comando c(2,3), ele implicitamente divide essa janela em 6 partes: 2linhas e 3 colunas (de grficos, n?) e que voc vai visualizar quando plotarmos 6 grficos emseqncia.Escolhendo valores de prevalncia 0.02, 0.04, 0.06, 0.08, 0.1 e 0.5 podemos fazer:hist(rbinom(100, size=200, p=0.02))hist(rbinom(100, size=200, p=0.04))hist(rbinom(100, size=200, p=0.06))hist(rbinom(100, size=200, p=0.08))hist(rbinom(100, size=200, p=0.1))hist(rbinom(100, size=200, p=0.5))par(mfrow=c(1,1))Beleza? Podemos visualizar como se altera a distribuio do nmero de pessoas atingidaspela doena na medida em que aumentamos o valor da prevalncia.MatrizesBem, vamos passar para o prximo tipo de objeto que vamos aprender no R. So asmatrizes. Como voc deve saber, matrizes so objetos numricos, que possuem elementos comcoordenadas (que so simplesmente a linha e a coluna s quais o elemento pertence). Para construirum objeto que seja uma matriz no R, precisamos usar uma funo... Adivinha o nome:> x x [,1] [,2] [,3][1,] 1 5 9[2,] 2 6 10[3,] 3 7 11[4,] 4 8 12Muito bem. Neste momento voc deve estar desesperado. Por que usamos uma funo quetinha sido usada para criar um vetor dentro de uma outra funo do R? isso mesmo. Na verdade criamos um vetor temporrio com o a funo c() comotnhamos visto anteriormente e depois esse vetor foi transformado numa matriz com a funomatrix(). Quer ver? Vamos fazer por partes. Primeiro, crie o vetor y:> y y [1] 1 2 3 4 5 6 7 8 9 10 11 12Lembre-se que esse vetor poderia ter sido gerado com a nossa seqncia:> y y [1] 1 2 3 4 5 6 7 8 9 10 11 12Agora, aplique a funo matrix() ao vetor y:> x x [,1] [,2] [,3] 20
[1,] 1 5 9[2,] 2 6 10[3,] 3 7 11[4,] 4 8 12A prxima dvida quanto ao argumento ncol. Ele representa o nmero de colunas danossa gloriosa matriz. Como se trata de um vetor, o R no pode adivinhar qual a dimenso (nmerode linhas e nmero de colunas desejada da matriz. Quer ver?> x x [,1] [1,] 1 [2,] 2 [3,] 3 [4,] 4 [5,] 5 [6,] 6 [7,] 7 [8,] 8 [9,] 9[10,] 10[11,] 11[12,] 12A essa altura voc j deve ter notado que o default do R transformar o vetor em umamatriz com apenas uma coluna. Um outro detalhe importante a ser comentado a ordem na qual eleentra com os elementos na matriz. Observe que o preenchimento da mesma feito pelas colunas.Vamos ver de novo a nossa matriz:> x x [,1] [,2] [,3][1,] 1 5 9[2,] 2 6 10[3,] 3 7 11[4,] 4 8 12Viu? O programa preencheu a coluna 1 com os nmeros 1 a 4, a segunda com os nmerosde 5 a 8 e a terceira com os demais. Mais tarde vamos aprender a mudar este comportamento. Masse voc for curioso, use a ajuda.... e boa sorte!Agora voc deve estar se perguntando como possvel visualizar um elemento (ou umgrupo de elementos) contido numa matriz. A lgica a mesma que com vetores, sendo que no casodas matrizes, os elementos possuem 2 coordenadas: uma para a linha e outra para a coluna, usandoainda os nossos colchetes lembra?. Quer ver um exemplo? Vamos visualizar o elemento dasegunda linha, terceira coluna de x:> x[2,3][1] 10Como voc j deve estar pensando, possvel selecionar, como nos vetores, um intervalo devalores. Digamos que voc queira visualizar os 3 primeiros elementos da primeira coluna. Para issofaamos:> x[1:3,1][1] 1 2 3 21
No caso das matrizes possvel selecionar uma linha (ou coluna) inteira, sem se preocuparem saber o nmero de colunas (ou linhas) da matriz. No entendeu nada, n? Nem eu! Vamos tentarum exemplo: vamos selecionar as duas primeiras linhas da matriz, selecionando todas as colunasdessas linhas:x[1:2,] [,1] [,2] [,3][1,] 1 5 9[2,] 2 6 10Repare que o espao depois da vrgula, que seria destinado s coordenadas das colunas,ficou em branco, indicando que TODAS as colunas deveriam ser selecionadas. Pode-se fazer umraciocnio semelhante para o caso de selecionar colunas inteiras, ou seja, com todas as linhas. Tentevoc mesmo!Data FramesO ltimo tipo de objeto do R que vamos abordar neste material ( isso mesmo, tem mais...)so os chamados data frames. Esses objetos so equivalentes a um banco de dados que vocprovavelmente j viu em outros formatos (e.g. dbf), ou seja, trata-se de uma tabela de dados ondeas colunas so as variveis e as linhas so os registros.Vamos ver um exemplo agora com um banco de dados que vem acompanhando o R (vriosbancos de dados esto disponveis para trabalhar exemplos no R). Para tal, teremos primeiro queinvocar esse banco e depois salv-lo num outro objeto para evitar acidentes;-) data(iris)dados dados[1:10, 1:5] Sepal.Length Sepal.Width Petal.Length Petal.Width Species1 5.1 3.5 1.4 0.2 setosa2 4.9 3.0 1.4 0.2 setosa3 4.7 3.2 1.3 0.2 setosa4 4.6 3.1 1.5 0.2 setosa5 5.0 3.6 1.4 0.2 setosa6 5.4 3.9 1.7 0.4 setosa7 4.6 3.4 1.4 0.3 setosa8 5.0 3.4 1.5 0.2 setosa9 4.4 2.9 1.4 0.2 setosa10 4.9 3.1 1.5 0.1 setosa 22
Repare que no h nada de novo: continuamos usando os colchetes para selecionar osregistros. Mas voc deve estar se perguntando por que usamos esse [1:10, 1:5]. Se com asmatrizes d para selecionar uma linha inteira, porque no poderia com o data frame que nada mais do que uma matriz com caractersticas especiais. Acertou: A mesma lgica funciona aqui. Vamostentar: > dados[1:10,] Sepal.Length Sepal.Width Petal.Length Petal.Width Species1 5.1 3.5 1.4 0.2 setosa2 4.9 3.0 1.4 0.2 setosa3 4.7 3.2 1.3 0.2 setosa4 4.6 3.1 1.5 0.2 setosa5 5.0 3.6 1.4 0.2 setosa6 5.4 3.9 1.7 0.4 setosa7 4.6 3.4 1.4 0.3 setosa8 5.0 3.4 1.5 0.2 setosa9 4.4 2.9 1.4 0.2 setosa10 4.9 3.1 1.5 0.1 setosaQue tal iniciarmos uma pequena explorao desse banco de dados? Vamos comear umadescrio dos dados, conhecendo o nome das variveis que esto contidas neste banco ( claro quevoc j sabe esses nomes, n?)> names(iris)[1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species" A descrio dessas variveis so: Sepal.Length Tamanho da spala Sepal.Width Largura da spala Petal.Length Tamanho da ptala Petal.Width Largura da ptala Species Espcie observadaE se quisermos listar uma das variveis apenas?Voc naturalmente respondeu que podemos selecionar uma das colunas inteiras do bancousando aquele nosso velho conhecido. Vamos selecionar a varivel Species, que corresponde terceira coluna:dados[,5]Vamos omitir a sada aqui para poupar espao... Mas ser que existe uma outra maneira deselecionar uma varivel em um banco de dados no R? Uma maneira mais convencional, porexemplo, seria chamar o nome da varivel e no tendo que saber especificamente a colunacorrespondente.Tente:dados$SpeciesViu? O smbolo $ serve para indicar o nome de uma varivel em um data frame. Digamos agora que voc queira listar todos os registros de flores que tm um tamanho deptala acima de 6 cm. Nesse caso, estaremos selecionando todas as colunas do banco e somente aslinhas que satisfizerem essa condio. Vamos ver como seria, usando os nossos colchetes: 23
Viu como somos preguiosos? Nem o nome dos argumentos foram usados neste caso.Lembre-se que a omisso dos nomes dos argumentos pode causar uma enorme confuso caso vocesquea a ordem correta (lembra do caso do log?).Vamos visualizar os dados com um grfico que a gente j tinha visto anteriormente, que oboxplot() com alguns argumentos avanados. Para isso escrevamos:> boxplot(Petal.Length ~ Species)Entendeu o que foi feito? O smbolo ~ (til) na funo boxplot() funciona como a funoby() que vimos anteriormente, ou seja, visualizamos o peso estratificado pela varivel Species Voc pode adicionar alguns nomes aos grficos para que ele fique mais apresentvel> boxplot(Petal.Length ~ Species, xlab="Espcie", ylab="Tamanho daPtala", main="Tamanho da ptala por especie")As espcies parecem ter tamanhos de ptalas bastante diferentes. Suas medianas edistribuies interquartilares so bem diferentes. Para ter uma idia se essas distribuies soaproximadamente normais podemos usar histogramas. Vamos tentar 25setosa versicolor virginica1234567 Tamanho da ptala por especieEspcie
par(mfrow=c(1,3))hist(Petal.Length[Species=="setosa"])hist(Petal.Length[Species=="versicolor"])hist(Petal.Length[Species=="virginica"])par(mfrow=c(1,1))Epa! Parece que o nosso tratamento para missing values esculhambou o grupo dasvirgnicas (que so justamente as que tm um tamanho de ptala maior.);-)Vamos reiniciar o nosso objeto dados e ver o que acontece. Faa assim:detach(dados)dados kruskal.test(Petal.Length, Species) Kruskal-Wallis rank sum testdata: Petal.Length and Species Kruskal-Wallis chi-squared = 130.411, df = 2, p-value = < 2.2e-16Como esperado aps a inspeo do grfico boxplot, de fato existe uma diferenasignificativa do nvel de variao dos tamanhos de ptalas estratificados pela espcie de flor.Muito bem. Esse foi o nosso mdulo bsico para dar uma noo geral e bastante superficialdo R. Para quem estiver interessado em um estudo mais aprofundado do programa, futuramentedisponibilizaremos mdulos mais especficos para aprofundar os vrios aspectos do R 26
Os 3 primeiros argumentos da funo write.table() no devem suscitar dvidas: oprimeiro o nome do objeto a ser exportado, o segundo, o nome do arquivo onde o dado serarmazenado e o terceiro o tipo de delimitador a ser usado, que neste caso esse "\t" que significatabulaes. O argumento row.names=F serve para indicar que as linhas desse objeto no tm nomee ainda previne o R de colocar nmeros como nomes (por default o R vai fazer uma numeraocrescente, como se fosse o nmero do registro, se esse argumento for T). O argumento quote =FALSE serve para indicar ao R que variveis tipo caracter devem ser exportadas sem estar entreaspas (porque se estiverem o SPSS por exemplo no vai levar isso em conta e vai importar as aspasjunto). O arquivo gerado iris.dat pode ser facilmente importado para diversos programas. Atcnica de importao para outros programas no faz parte do escopo desse mdulo e dever serdominado por pessoas que trabalham com os respectivos programas de uma forma regular.Uma dvida natural do leitor nesse momento seria: legal exportei os dados para um arquivo,mas onde est este arquivo??? Boa pergunta! Por default, o R salva o arquivo no mesmo diretriode onde voc est trabalhando, ou seja no mesmo diretrio onde est o seu arquivo .Rdata. Sevoc quiser saber que diretrio esse, faa assim:getwd()Se voc utilizou esse cdigo, notou uma coisa estranha: o diretrio veio com duas barrasinvertidas, em vez de uma s como usual, se voc tem alguma experincia com caminhos dediretrios do DOS, algo assim:"C:\\Documents and Settings\\Owner\\My Documents\\ENSP\\Curso R" assim mesmo: no R ns temos que escrever os caminhos de diretrios com duas barrasinvertidas. Opcionalmente, podemo usar uma barra para frente, como veremos num exemploadiante.O outro formato que vamos ver nessa seo o separado por vrguas, ou .csv, um formatoque lido diretamente pelo Excel. A idia fundamentalmente a mesma, s diferindo odelimitador:> write.table(dados, file="iris.csv", row.names=F, sep=",", quote=F)O arquivo "iris.csv" pode ser aberto diretamente no Excel, simplesmente dando um duploclique sobre o arquivo. Onde foi salvo este arquivo? No mesmo lugar que o anterior.Mas e se voc quiser salvar em um diretrio especfico? Bom, nesse caso, o argumentodeve conter o caminho completo do diretrio, seguido do nome do arquivo. Por exemplo, digamosque eu queira salvar esse arquivo no diretrio temp que est na raiz do drive C da minhamquina. O cdigo seria:write.table(dados, file="c:/temp/iris.csv", row.names=F, sep=",", quote=F)Observe que aqui utilizamos a barra para frente em vez das duas barras invertidas. O cdigoabaixo teria o mesmo efeito:write.table(dados, file="c:\\temp\\iris.csv", row.names=F, sep=",",quote=F)Entrada de DadosO R capaz de ler arquivos de dados salvos em diversos formatos diferentes, como ASCII(arquivo texto, delimitado por espao, tabulao, vrgula, ponto-e-vrgula, entre outros), Excel,2
SPSS, EpiInfo, etc. No caso do Excel, como veremos adiante, o processo de importao no direto, tendo que se salvar inicialmente em um formato .csv.A funo mais simples que l dados externos no R faz parte do pacote bsico e se chamaread.table() e tambm pertence ao pacote base. Essa funo vai importar dados em formatoASCII para um objeto do tipo dataframe. Vamos ver um exemplo, usando a base de dados que nsacabamos de exportar (note que o arquivo iris.dat deve estar presente no seu diretrio detrabalho):dados1 x _ c(1,2,3)Warning message: The use of _ is deprecated: you will be warned only once per session > x[1] 1 2 3Muito embora o meu objeto x tenha recebido o vetor (1,2,3), o programa adverte que o usodo _ no recomendado... 3
Temos aqui uma sada do tipo texto.O primeiro passo para copiar e colar a sada dessa funo selecionar no R a sada ou parteda sada que seja de interesse. Para isso apertamos o boto esquerdo do mouse e o arrastamos sobreo texto. O tom azul sobre a tela indica a parte que est sendo selecionada. O prximo passo copiar a parte do texto selecionada no R. Isso pode ser feito selecionandono menu Edit a opo Copy, ou simplesmente apertando sucessivamente a tecla Ctrl e a teclac. Outra possibilidade ainda aps selecionar o texto no R clicar com o boto direito do mouse eescolher Copy:Agora, s colar o contedo no Word ou programa equivalente. Em qualquer editor de textono Windows, a forma de se fazer isso a mesma utilizada acima no processo de copiar os dados doR bastando trocar a opo Copy pela opo Colar (ou Paste). Para obter uma formatao noWord igual ao que aparece no R troque a fonte do texto colado para courier new.Uma outra necessidade de exportao de dados pode ser quando se deseja exportar umatabulao qualquer (for exemplo uma tabela de freqncias, com uma ou mais variveis) para umprograma de planilha eletrnica. Bem, ns podemo usar neste caso a nossa j conhecida funowrite.table(), pois ela funciona tambm com outros tipos de objetos fora bancos de dados.Para dar um exemplo, vamos dizer que desejamos fazer uma tabulao das espcies segundoo critrio delas terem ptalas maiores ou menores do que a mediana do grupo inteiro. Inicialmente,vamos descobrir essa mediana:> median(Petal.Length)[1] 4.35 7
> boxplot(Sepal.Length ~ Species, xlab="Espcie", ylab="Tamanho daPtala", main="Boxplots do Tamanho da Ptala por Espcie")Um arquivo grfico pode ser copiado pelo R atravs de de dois formatos: Bitmap oumetafile. Esses formatos se diferem entre si por vantagens e desvantagens que cada um possui.Uma dentre outras vantagens do formato metafile o fato dele gerar arquivos de tamanho menor. Para copiar um arquivo no formato metafile, primeiro se certifique que a janela grficaest selecionada (para tanto, apenas clique em qualquer rea dentro da janela), e ento escolha nomenu File dentro de Copy to the Clipboard a opo as Metafile:Depois s colar no seu editor de texto preferido, ou at mesmo na sua planilha. Colandono formato metafile podemos editar a figura atravs de um duplo clique sobre a figura permitindoalterar o ttulo do grfico, valores que aparecem nos eixos, etc, se voc tiver um programa quepermita editar metafiles 9
Mdulo Estatstica I no RAutor: Antonio Guilherme Fonseca PachecoPr-requisitos: Conhecimento prvio do ambiente R. Especificamente, o leitor deve estarfamiliarizado com os mdulos Bsico, Entrada e Sada de Dados e tambm Manuseandodados no R.Bibliotecas necessrias: ISwREste um mdulo especial da srie de mdulos destinados ao aprendizado do ambiente R. Aabrangncia deste mdulo o contedo a ser dado em um curso bsico de Bioestatstica para alunosde ps-graduao, ministrado em qualquer instituio de ensino superior.O objetivo desse mdulo no tornar o leitor um especialista em R, nem sequer umutilizador freqente do programa, mas sim usar o R como uma ferramenta de ensino daBioestatstica. Alunos que j conhecem o R podem usar esse mdulo sem recorrer a nenhum outromdulo bsico sobre o R, mas para aqueles que nunca trabalharam com ele, fundamental a leiturados 3 mdulos bsicos contidos no material Aprendendo R e tambm a leitura prvia do mduloManuseando um Banco de Dados no REste mdulo baseado no livro Introductory Statistics with R, escrito pelo professor PeterDalgaard, que um dos membros do core de desenvolvimento do R. A adoo deste livro comoreferncia leva em conta o fato dele ter quase todos os seus exemplos em bioestatstica (que a reapela qual eu me interesso) e de ter disponvel no prprio CRAN uma biblioteca com todos osbancos de dados necessrios, chamada ISwR.Os tpicos abordados nesse instrutivo acompanham aqueles que sero abordados nas aulastericas do curso de Estatstica I, a saber: Probabilidade e distribuies Estatstica descritiva Distribuies amostrais Teste de Hipteses, poder e tamanho da amostra Testes para uma e duas amostras (contnuos) Propores ANOVA Regresso e correlaoA programao de um curso como este para ser dado em 8 aulas, cada uma abordando umdestes temas citados, fora as aulas para o aprendizado do R. Sendo assim, vamos dividir essestpicos em aulas no necessariamente do mesmo tamanho,como vocs podero perceber nocalendrio do curso. Cada aula ter o tempo de 3 a 4 horas e meia, dependendo dos contedos aserem estudados. Esse o tempo mdio para que o aluno possa ler e treinar cada uma dessas aulas.Claro que isso uma mdia mesmo, e algumas pessoas necessitaro de mais dedicao paraacompanhar o ritmo das aulas.Nem todas as aulas necessitaro da biblioteca , mas sempre que isso acontecer, serindicado no incio da aula. Nem todas as aulas tambm esto contempladas no nosso livro dereferncia, ma sempre que estiverem, as pginas correspondentes estaro tambm indicadas.
Mdulo Estatstica I no RAutor: Antonio Guilherme Fonseca PachecoPr-requisitos: Conhecimento prvio do ambiente R. Especificamente, o leitor deve estarfamiliarizado com os mdulos Bsico, Entrada e Sada de Dados e tambm Manuseandodados no R.Bibliotecas necessrias: NenhumaAula 1 Probabilidade e distribuiesLivro: pginas 45 a 55Essa aula na verdade conter muita recordao do mdulo bsico onde falamos sobredistribuies e grficos. Ficarei vontade inclusive para copiar algumas partes do texto j escrito. Omotivo dessa repetio no s aprofundar um pouco essas noes que foram passadas, mastambm permitir a introduo ao assunto para aqueles que se sentiram capazes de no estudar omdulo bsico.ProbabilidadeA funo sample()Distribuies DiscretasDistribuies ContnuasDistribuies no R Densidade Acumulativa Quantis Nmeros pseudo-aleatriosExercciosProbabilidadeInicialmente, vamos falar de probabilidades e amostras aleatrias. Como voc j deve ternotado, a inferncia estatstica baseada sempre em uma amostra aleatria que tirada de umadeterminada populao sobre a qual gostaramos de inferir certas caractersticas, como a suamdia ou a sua varincia, por exemplo.A idia sempre a mesma das bolinhas numeradas em uma urna. Se ns tivermos porexemplo 10 bolinhas numeradas de 1 a 10 em uma urna, qual a chance de ns escolhermosexatamente, por exemplo a bolinha com o nmero 5? Intuitivamente voc vai responder que essachance de 1 em 10, 1/10 ou 10%. Nesse caso o que acontece que as bolinhas tm uma chanceigual de serem escolhidas, certo? Pois se eu perguntasse sobre a chance da bolinha com o nmero 3,a resposta seria a mesma.Agora, e se eu perguntasse qual seria a probabilidade de se retirar a bolinha com o nmero 5e a bolinha com o nmero 3? Nesse caso, voc tem que me fazer duas perguntas pelo menos. Aprimeira se a ordem de retirada deve ser levada em conta ou no (ou seja, se sortear a bolinha 5 eem seguida a 3 deve ser diferente de sortear a bolinha 3 e em seguida a 5, ou no). A segundapergunta se uma vez sorteada uma bolinha ela deve ser devolvida urna ou no para ser sorteadaa segunda bolinha. Essas perguntas so fundamentais porque elas vo alterar significativamente aresposta. Muito bem, vamos assumir a situao mais comum, que quando a ordem no importa ecalcular as probabilidades com e sem reposio.Para o caso com reposio, ns teremos a probabilidade de sortear a bolinha 3 (0.1) e abolinha 5 (0.1) ou a bolinha 5 (0.1) e a bolinha 3 (0.1). Em probabilidade existe um maceteinteressante: quando falamos da probabilidade de acontecer um evento e outro evento, estamos
Como sabemos, a Normal possui tambm dois parmetros: a sua mdia e a suavarincia 2 (muito embora seja comum usar o desvio-padro como o segundo parmetro incluindo o R, como veremos mais adiante.) Como no caso da Binomial, esta funo podetambm ser facilmente colocada em um grfico no R. Vamos usar a Normal default no R que aNormal (0,1):curve(dnorm(x), from=-3, to=3)Claro que como no caso das distribuies discretas, as distribuies contnuas tambmpossuem funes de densidade acumuladas e a idia do somatrio das probabilidades individuais decada valor que x pode assumir para a sua obteno tambm permanece. S que como estamosfalando de uma soma de uma funo contnua, em vez de somatrio, teremos que usar uma integralpara calcular a sua F(x). De modo geral:F x =
x f x dx claro que esse limite inferior de menos infinito vai depender do domnio da distribuio algumas so definidas para certos intervalos, como a Uniforme (0,1) por exemplo, mas para aNormal, exatamente assim.Podemos tambm obter um grfico da funo de distribuio acumulada no R. Para aNormal (0,1), seria assim:x
densidade representa a probabilidade de se obter um valor na vizinhana do valor x, definido porum intervalo qualquer na sua vizinhana (de x). Este conceito pode ser um pouco confuso, poiscomo veremos existe um valor definido para a densidade de uma funo como a Normal porexemplo, s que esse valor NO CORRESPONDE PROBABILIDADE DESSE EVENTOOCORRER!!!Dos quatro tipos de funes que estudaremos, essa certamente a que menos se usa no dia adia, mas muito til para a construo de exemplos (alis, ns j usamos esta funo algumasvezes.) Essa famlia de funes (chamo de famlia porque existem vrias delas para diversasdistribuies no R) sempre comeam com a letra d, seguida de uma abreviao do nome dadistribuio. Por exemplo, quando construmos o grfico da fdp da Normal, ns usamos o comando:curve(dnorm(x), from=-3, to=3)Como se tratava da Normal, a abreviao norm, e a funo se chama ento dnorm(). Veja um resumo das abreviaes usadas para algumas distribuies na tabela abaixo:Tabela 1.1 Abreviaes e argumentos usados pelo R para gerar distribuies. Antesda abreviao, deve-se acrescentar a letra d para a fdp, p para a funo de densidadeacumulada, q para a funo de quantis e r para gerao aleatria de uma amostra. Osargumentos so descritos juntamente com os valores default, quando houver. Veja texto paradetalhes.Distribuio Abreviao Argumentos com defaultBinomial binom n= p=Geomtrica geom prob=Hipergeomtrica hyper m= n= k=Binomial negativa nbinom size= prob=Poisson pois lambda=Uniforme unif min=0 max=1Normal norm mean=0 sd=1Exponencial exp rate=1Qui-Quadrada chisq df=t de Student t df=F de Snedcor f df1= df2=Weibull weibull shape= scale=1Gama gamma shape= rate=1Beta beta shape1= shape2=Repare que apesar de na tabela estar assinalado que as funes para a Normal possuem 2argumentos, eles foram omitidos no cdigo acima. Isso ocorreu porque algumas destas funes tmvalores default, e no caso da Normal, como voc j deve ter observado so mean=0 e sd=1.A funo curve() vai desenhar um grfico de uma funo qualquer de x. Nesse caso afuno justamente a funo dnorm(), que gera a densidade de uma normal. Alm disso, a funocurve() tambm toma os argumentos from e to, para estabelecer os limites do grfico.Mas afinal de contas, que valor retornado por esta funo? simplesmente o resultado dafdp no ponto x. Quer ver um exemplo? Vamos ver a fdp da Normal (0,1):f x = 12 e x22
Vamos agora no R calcular o valor dessa funo quando x = 0:> dnorm(0)[1] 0.3989423Lembre-se que esse valor, por se tratar de uma distribuio contnua, NO corresponde probabilidade de se obter o valor x = 0 em uma Normal (0,1)!!!Bem, vamos fazer este clculo na mo agora e conferir. Basta substituir por 0 onde existe xna equao acima:f 0= 12 e 022 = 12 e0 = 120.3989Funo de distribuio acumuladaJ a funo de distribuio acumulada bastante usada, no em exemplos, como nstambm vimos anteriormente, mas tambm para clculos corriqueiramente utilizados em estatstica.Para a construo de um grfico da funo de distribuio acumulada da Normal, nsusamos o comando:x pnorm(75, mean=100, sd=20)[1] 0.1056498
Ou seja, cerca de 10.56% das pessoas possuem um valor igual ou menor que 75. Mas afinalde contas, como podemos visualizar esses resultados? Como foi mencionado, esse valor que foiencontrado nada mais do que a rea abaixo da curva da fdp desta Normal (100, 400). Vamos vercomo isso funciona, mas desta vez s mostrarei o resultado final (seria um pouco complicado pedirpara voc fazer esse grfico, mas se estiver interessado, no se acanhe em entrar em contato.)O que observamos na figura acima a fdp desta normal, com a rea hachurada de menosinfinito (embora no d pra visualizar muito bem) at o valor que queramos de 75. Esta rea valeexatamente o valor que ns achamos acima, ou seja, 0.1056. Para reforar, essa conta para estanormal dada por:F 75=
75 1220 exp x10022202 dxSignifica que estou calculando a integral (que a rea sob a curva) de menos infinito at 75da fdp da Normal (100, 400.) Note que eu apenas substitu os valores de e de 2 naequao acima.Testes estatsticos tambm so uma aplicao direta dessas funes. Por exemplo, maistarde voc vai aprender a usar e interpretar o famoso teste t de Student. Sem entrar em detalhes,basicamente ser calculada uma estatstica T, a qual ter uma distribuio t com n-1 graus deliberdade (onde n o tamanho da amostra.) Para se calcular o famoso p-valor associado a esta0 50 100 150 2000.0000.0050.0100.0150.020 Density functionXY
estatstica, usamos a funo pt(). Digamos que para uma amostra de 100 pacientes, a estatsticaque voc calculou foi -2.55. Para calcular o p-valor:> pt(-2.55, df=99)[1] 0.006152768Como voc aprender mais tarde, a distribuio t tem um nico parmetro, que so os grausde liberdade (degrees of freedom em ingls da o argumento df). Mas no se preocupe com nadadisso agora, apenas para j ter em mente a utilidade da funo.Novamente, esse valor tambm uma rea, mas sob a curva da fdp de uma distribuio tcom 99 graus de liberdade, indo de menos infinito at -2.55, como mostrado na curva abaixo.S para fixar, sem querer complicar muito, vamos admitir que a distribuio t99 tenha umafdp genrica, do tipo f t , usando t s para indicar que se trata de uma distribuio t. Ento, area assinalada abaixo corresponde conta:F 2.55=
2.55 f t dtCuja soluo, como voc j deve ter adivinhado, tambm no tem um resultado definidoalgebricamente. -4 -2 0 2 40.00.10.20.30.4 Density functionXY
QuantisA prxima famlia de funes so as que geram quantis. Se voc est achando isso umpalavro, no posso culp-lo. Essa funo na verdade apenas a funo inversa da funo dedensidade acumulada. Assim, ela responde seguinte pergunta: a que valor de x corresponde umaprobabilidade acumulada de 0.975, por exemplo. Alis, numa Normal (0,1), qual seria mesmo essevalor? > qnorm(0.975, mean=0, sd=1)[1] 1.959964Isso mesmo, o nosso bom e velho 1.96...A utilizao dos quantis ser bastante importante quando estudarmos tambm intervalos deconfiana, pois como veremos, precisaremos do valor desta funo para calcular quanto deve sersomado mdia amostral por exemplo para obter-se o limite superior do seu intervalo de confiana(e subtrair-se tambm para obter-se o limite inferior.) Vamos ver um rpido exemplo: Por exemplo,um IC 95% para uma mdia amostral com varincia da populao desconhecida dada por (no seassuste se voc no entendeu o que isso quer dizer, voc vai aprender mais tarde):x tn 1,1 / 2 s2 /nOnde x a mdia da amostra, s2 a varincia da amostra, n o tamanho da amostra etn 1,1 / 2 exatamente o valor de t com n-1 graus de liberdade no ponto 1 /2 , que paraum nvel de confiana de 5% =0.05 corresponde a 0.975. Vamos chutar alguns valores e vercomo isso funcionaria no R. Digamos que a mdia das diferenas de presso arterial de umaamostra de 100 pacientes, antes e aps um determinado tratamento, seja -10mmHg e que a varinciada diferena tenha sido de, digamos 9mmHg2.. Nesse caso teramos:> -10-(qt(0.975, df=99)*sqrt(9/100))[1] -10.59527> -10+(qt(0.975, df=99)*sqrt(9/100))[1] -9.404735Nesse caso tivemos que usar a funo qt() para calcular este IC 95%. Assim, nesseexperimento a presso arterial dos pacientes foi reduzida em mdia 10mmHg, com um IC95% de (-10.595,-9.405).Nmeros pseudo-aleatriosGeralmente nos referimos gerao de nmeros pelo computador como nmeros aleatriosapenas. Essa noo pouco intuitiva, porm, pois de se esperar que um computador realizeapenas clculos e operaes exatas, sem nenhum tipo de aleatoriedade envolvida. Essa dvidaprocede, j que na verdade, algoritmos foram desenvolvidos para que o computador possa gerarnmeros como se fossem aleatrios, mas na verdade eles no so genuinamente aleatrios, e porisso devem receber a denominao mais precisa de pseudo-aleatrios. A explicao de como isso obtido foge do escopo deste material e no ser abordada.O que importa que o R capaz de gerar amostras aleatrias de vrias distribuiesdiferentes, que podem ser usadas em simulaes e tambm em exemplos, como ns fizemosanteriormente. Por exemplo, a fdp de uma binomial foi feita com essa funo, gerando uma amostrade tamanho 1000:hist(rbinom(1000, prob=.05, size=100), freq=F)Vamos ver alguns dos nmeros gerados, digamos, 10:
> rbinom(10, prob=.05, size=100) [1] 8 4 4 4 2 3 6 8 6 5Esses nmeros deveriam estar (e esto) distribudos mais ou menos em torno de 5, que amdia desta Binomial temos nesse caso a probabilidade de 5% (prob=.05) de sucessos, como onmero de experimentos 100 (size=100), esperamos que ocorram 5 sucessos em cada 100experimentos.Exerccios1. Tomando o mesmo exemplo da urna com 10 bolinhas numeradas, qual seria aprobabilidade para o caso com e sem reposio, com ordem indiferente para se retirar abolinha com o nmero 5 duas vezes?2. Suponha que uma urna contenha 7 bolinhas azuis e 3 bolinhas verdes. Digamos queestamos interessados na probabilidade de tirarmos uma segunda bolinha verde da urna,sem reposio. Calcule as seguintes probabilidadesa. A segunda bolinha ser verde, sendo que eu desconheo a cor da primeira bolinhab. A segunda bolinha ser verde, dado que a primeira bolinha verdec. A segunda bolinha ser v