Aprendendo R

Embed Size (px)

Citation preview

  • 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

  • Curioso para saber como essas funes funcionam? Tente usar a ajuda do R para descobrir.Por exemplo:> help(sqrt)Vai se abrir uma janela de ajuda que na verdade genrica para a funo abs() tambm.Esperamos que voc tenha percebido que esta uma forma alternativa de chamar a ajuda (em vezde ?sqrt)Como o R armazena Objetos e ComandosMuito bem, at agora ganhamos uma noo de como o R realiza operaes matemticas e decomo as funes pr-definidas (e tambm as que um dia voc mesmo vai criar!!!) funcionam.Mas voc deve estar se perguntando: e os dados? Eu preciso mesmo analisar dados comeste programa... Como que funciona? Como que o R armazena dados, sejam eles digitados apartir do teclado, sejam eles importados de um arquivo externo?Bom, antes de entrar nessa parte mais interessante, vamos comear a falar sobre a maneiradiferente como o R guarda um objeto. Objeto para o R significa tanto um banco de dados quanto a sada de uma funo ou atmesmo uma frmula. Para criar um objeto no R, seja ele qual for, voc dever sempre usar ooperador de asignment ( x
  • Uma questo que deve ficar clara que o R vai armazenar temporariamente todos os objetosque foram criados em uma sesso de trabalho e posteriormente salv-los definitivamente no arquivo.RData; mas repare que sero salvos os OBJETOS, ou seja, tudo o que voc guardou usando osmbolo de assignment (
  • Certo. No fique ansioso ainda... Antes de vermos a questo de ler dados externos, seriainteressante ver como podemos entrar com algumas formas simples de dados a partir do tecladodiretamente.A forma mais simples de armazenamento de dados (i.e. o mais simples objeto) no R um vetor. Umvetor um seqncia em uma ordem especfica de valores de um mesmo tipo de dados. Como osdados so mais freqentemente nmeros, os vetores numricos so os mais usuais. Vetores nonumricos formados por caracteres (como nomes) so tambm bastante utilizados e podem tambmser construdos no R.Vamos criar um objeto chamado x, mas colocando diferentes coisas nesse objeto.Um nmero:> x XError: Object "X" not foundO programa informa que o objeto X no existe (existe o x).Mas no era disso que estvamos falando. Vamos voltar para os diferentes contedos de umvetor... Que tal entrarmos com um caracter, por exemplo, com a palavra banana? > x x[1] "banana"Percebeu a diferena deste caso para o caso numrico? Sempre que estivermos trabalhandocom caracteres devemos usar aspas duplas. Voc deve estar se perguntando o que teria ocorrido seno tivssemos utilizado aspas na palavra banana... O problema que se no fizermos isso, o R vaipensar que banana o nome de um outro objeto... > x
  • 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

  • [1] 1 2 3 4 5 6 7 8 9 10 11 12 muita mesmo, no ???Uma outra facilidade oferecida pelo R a capacidade de selecionar valores armazenados emposies especficas dentro de um vetor (na verdade, como veremos adiante, essa capacidade seestende para outros objetos do R como matrizes e data frames). Vamos, por exemplo, criar o vetorbicho (s para treinar):> bicho bicho[1] "macaco" "pato" "galinha" "porco"Que tal visualizarmos o contedo da posio 3? Vamos fazer assim:> bicho[3][1] "galinha"Repare que para selecionar uma posio especfica dentro de um vetor, usamos o nome dovetor seguido de um nmero entre colchetes. Esse nmero corresponde posio do elemento nessevetor (confira acima, como "galinha" foi o terceiro elemento a ser entrado.) E se quisssemosselecionar os contedos das posies 1, 3 e 4?> bicho[c(1,3,4)][1] "macaco" "galinha" "porco" A gente utilizou a funo c() para combinar os nmeros correspondentes s coordenadasdos elementos (na verdade criamos um vetor com esses valores), ainda entre colchetes. E podemosainda selecionar os contedos atravs de uma seqncia de posies, sempre entre os colchetes:> bicho[2:4][1] "pato" "galinha" "porco"Bom, acho que deu para pegar a idia de seleo, n? s usar os colchetes. Porque vocno tenta brincar um pouco agora, criando outros vetores e tentando selecionar elementos?Operaes vetoriaisBem, vamos mudar um pouco de assunto agora. J que estamos falando de vetores e jvimos como o R funciona como uma calculadora, que tal agora vermos como o R combina essasduas caractersticas para realizar operaes vetoriais? Ih! Que palavro esse!!!??? No se assuste, s uma maneira que o R tem para facilitar a sua vida. Vamos pegar um exemplo qualquer bemsimples, como um vetor de pesos de pessoas em kg e alturas em metros. Vamos fazer assim:peso
  • > imc[1] 21.45329 21.13271 16.97959 26.03890 26.58318 27.00513Percebeu o que aconteceu? O R calculou o IMC para cada posio dos vetores de peso ealtura. Por exemplo, o primeiro resultado 21.45329 o resultado da aplicao da frmula propostasobre o primeiro elemento de peso e o primeiro elemento de altura. Confira:62/1.702=21.45329 . Confira os outros resultados.Esse procedimento uma operao vetorial, ou seja ela foi aplicada a um vetor inteiro.Esse um bom momento para falar sobre precedncia de operaes matemticas no R. Bem,o R segue a precedncia que a gente aprendeu l no ensino fundamental em matemtica, lembra?No acima, a potenciao tem precedncia em relao diviso e portanto a nossa conta foi feitacorretamente. Lembre-se que se a diviso fosse feita antes da potenciao, o resultado seriadiferente. Quer ver? Como se muda a precedncia de operaes? Isso mesmo: usando parnteses,igualzinho como voc aprendeu:> (peso/altura)^2[1] 1330.1038 1479.2899 882.9388 2551.8121 2392.4858 1890.3592Epa! No era bem isso que a gente queria... Bem, assim fica claro que se a gente no quiserse confundir nunca com os resultados, o uso do parnteses sempre uma boa poltica quando no setem certeza de uma determinada operao...Gerao de Distribuies e GrficosVamos ver agora algumas funes no R para a gerao de distribuies estatsticas. Estaevidentemente uma das especialidades do R, j que ele voltado para funes estatsticasprincipalmente.Comecemos com as distribuies contnuas. A mais badalada de todas, naturalmente aNormal, que voc j deve estar cansado de ouvir falar. Vamos gerar ento um vetor com 100valores de uma distribuio Normal, digamos com mdia 10 e varincia 4 (estes so os parmetrosde uma distribuio Normal):> x
  • seja, mdia zero e varincia (ou desvio-padro) 1. Para verificar esse fato, vamos usar duas funesestatsticas, para calcular a mdia e o desvio-padro de vetores. Vamos comear pelo vetor que agente conhece:> x mean(x)[1] -0.1358806> sd(x)[1] 1.053232Epa!!! A mdia aqui no nosso exemplo no exatamente 0. E o desvio-padro tambm no exatamente 1. Ser que o default da funo no gerar a partir da Normal (0,1)?No nada disso! O problema que o vetor que ns criamos gerado de maneira aleatria,de modo que, em mdia, esses valores convergem assintoticamente para os valores estabelecidospara os parmetros. Ficou difcil? o seguinte: se a gente aumentar o nmero de valores gerados,esses valores devem ir se aproximando cada vez mais dos valores dos parmetros. Querem ver? > x100 mean(x100)[1] -0.1111455> sd(x100)[1] 1.121295> x1000 mean(x1000)[1] -0.01045328> sd(x1000)[1] 1.024044> x10000 mean(x10000)[1] 0.005090138> sd(x10000)[1] 0.9953523Ah, e se for fazer isso no R voc mesmo, no digite tudo de novo: use a tecla de setinha paracima () que voc chama o ltimo comando e pode edit-lo a partir do teclado... Mas ateno, paramover o curso na linha de comando voc deve usar as setinhas para direita e esquerda ( ou ).Lembrando que voc pode naturalmente sempre copiar e colar o texto mas no se esquea de nocopiar o >.;-)Muito bem, voc acabou aprendendo a simular uma distribuio Normal com diferentesparmetros e tambm a conferir a mdia e o desvio padro do vetor que voc gerou. Alm disso,ganhou uma noo que a mdia e o desvio padro de vetores maiores sero em princpio maisaproximados da mdia e desvio padro das distribuies que os geraram.Que tal uma visualizao grfica das nossas distribuies? Voc j deve ter ouvido falar detipos de grficos comumente usados em estatstica, como o scatter plot (ou grfico de disperso), ohistograma, o boxplot (ou grfico de caixas) e ainda um que gostamos muito, o stem and leaves (ouramo e folhas). Por que a gente no aproveita ento para dar uma olhada nesses grficos usando osvetores que foram criados? Vamos l. Primeiro vamos criar um vetor y com 100 valores de umaNormal Padronizada:y
  • 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

  • 3 quartil1 quartilMedianaLimites paraoutliers ltimo pontoinferiorltimo pontosuperiorOutlierOutlierPara o nosso prximo grfico, que tal a gente tentar gerar outra distribuio tambmbastante comum em bioestatstica, a binomial. Ao contrrio da Normal, essa uma distribuiodiscreta, ou seja, ela est definida para determinados valores (enumerveis) num intervalo e nopara todos os valores (no enumerveis) em um determinado intervalo.Assim como a Normal, a Binomial tambm possui dois parmetros. O primeiro, ncorresponde ao nmero de experimentos que sero realizados (tambm chamados de experimentosou processos de Bernoulli); o segundo, p a probabilidade de se obter um sucesso em cada um dosexperimentos. A probabilidade de serem observados k sucessos dada por:P X =k =nk pk 1 pn kNo R, a funo para gerar nmeros binomiais chama-se rbinom(), por motivos j bvios.Evidentemente, ns precisamos especificar os dois parmetros que mencionamos anteriormente:y
  • > 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

  • > dados[dados$Petal.Length>6,] Sepal.Length Sepal.Width Petal.Length Petal.Width Species106 7.6 3.0 6.6 2.1 virginica108 7.3 2.9 6.3 1.8 virginica110 7.2 3.6 6.1 2.5 virginica118 7.7 3.8 6.7 2.2 virginica119 7.7 2.6 6.9 2.3 virginica123 7.7 2.8 6.7 2.0 virginica131 7.4 2.8 6.1 1.9 virginica132 7.9 3.8 6.4 2.0 virginica136 7.7 3.0 6.1 2.3 virginicaEntendeu o que foi feito? Selecionamos (com os colchetes), do banco dados as linhas(primeiro ndice dentro dos colchetes, antes da vrgula) onde a varivel Petal.Length > 6, etodas as colunas (o espao em branco aps a vrgula dentro dos colchetes segundo ndice).Para terminar, vamos fazer uma brincadeira com o nosso banco de dados. Ele no possuinenhum valor faltante (missing value). No R, o smbolo para missing NA de not available emingls. Bem, vamos aproveitar o nosso exerccio de seleo para ver como podemos tambmsubstituir valores selecionados por outro. Digamos que houve um engano e que todos os valoresmaiores que 6 cm para o tamanho da ptala no so confiveis e devem ser considerados comofaltantes (esse um exemplo pssimo na verdade normalmente ns substitumos valores queoutros sistemas consideram missing por NA, como -99 ou espao em branco.) Neste caso asintaxe ser um pouco diferente:dados$Petal.Length[dados$Petal.Length>6]
  • 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

  • Mdulo Entrada e Sada de DadosAutor: Geraldo Marcelo da Cunha e Antonio Guilherme Fonseca PachecoPr-requisitos: Saber como funcionam e como usar funes e pacotes no R. Saber selecionarelementos, linhas e colunas em dataframes. ATENO: Este mdulo tambm exige a obteno de bancos de dados externos, que devem estardisponveis junto com o meio de distribuio deste documento (ou seja, se foi em um CD-ROM,ento deve estar em algum diretrio desta mdia; se foi via internet deve estar disponvel paradownload em algum lugar especificado)Pacotes e arquivos necessrios: Pacote foreign; arquivos oswego.rec, iris.sav.Sada de DadosVamos iniciar a nossa discusso pela sada de dados. Apesar de parecer estranho estudarmoscomo o R exporta dados, em vez de como ele os importa, ser mais fcil primeiro exportar paradepois ento reimportamos alguns formatos.Como mencionado, o pacote foreign deve ser instalado na sua mquina. Se este pacote noestiver instalado, instale-o a partir do prprio R. Para instrues sobre como fazer isso, consulte omdulo Baixando e Instalando o R. Esse pacote, como sugere o nome, contm vrias funes tantopara importar como para exportar alguns formatos de bancos de dados entre o R e diversosprogramas.Uma vez instalado o pacote, voc precisa carreg-lo. Faa assim:library(foreign)Aproveite para dar uma olhada nas funes contidas nesse pacote. Use a ajuda em HTMLpara facilitar a sua vida. Se voc for curioso bastante para explorar o pacote foreign, notar queele s possui na verdade uma funo para exportar diretamente dados para um formato especfico,que o Stata, e que a maioria absoluta das funes so para importar dados. Mas o R capaz de exportar tambm para o formato ASCII, que pode ser considerado comoum formato universal, ou seja, qualquer programa capaz de ler um arquivo nesse formato. Nessaseo, vamos ver uma funo que faz essa tarefa, usando diferentes argumentos para a exportao,convenientes para o programa que vai ler os dados. No estranhe, mas a funo utilizada para estefim write.table() faz parte do pacote base, que instalada junto com a instalao bsica doR. O caso mais geral exportar dados num formato ASCII delimitado por espao ou tabulao.Vamos comear com a separao por tabulao. Este formato pode ser lido por diversos programas,como Excel, SPSS, SAS, dentre outros.Se voc j fez o mdulo bsico, deve se lembrar do banco de dados iris com algumasmedidas de ptalas e spalas de algumas espcies de flores. Bem, vamos invocar esse mesmo bancoe trabalhar com ele:data(iris)dados
  • 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

  • Agora vamos passar para o caso de um arquivo em Excel, que voc gostaria que fosse lidopelo R. Como foi mencionado anteriormente, o R no capaz de ler um arquivo em formato .xlsdiretamente; preciso salvar o arquivo antes em um formato ASCII. Vamos ver como funciona?No faz parte do escopo deste material ensinar como salvar um arquivo do Excel no formatoseparado por vrgulas (ou CSV, comma-separated values em ingls), que ser facilmente lido peloR. Bem, mas como somos muito bonzinhos, vamos descrever rapidamente como funciona: umavez que voc tenha aberto o arquivo que deseja salvar no Excel, pressione a tecla F12 no teclado,o que abrir o menu Salvar Como. Na parte inferior do menu na opo salvar arquivo do tipo,selecione CSV: simples assim mesmo.Porm, meus amigos, nem tudo so flores... Existe um detalhe muito importante que osusurios do Excel devem saber: se o seu Excel for em portugus, provavelmente o delimitador serum ponto-e-vrgula e no uma vrgula, como deveria ser; se for em ingls, o delimitador ser ocerto, ou seja, com vrgula mesmo. Isso vai fazer diferena porque preciso especificar o tipo deseparador se voc usar a funo read.table().Bem, mas ns j temos um arquivo salvo no formato CSV que o iris.csv, que umarquivo ASCII delimitado por vrgulas, lembra?dados2
  • 9 4.4 2.9 1.4 0.2 110 4.9 3.1 1.5 0.1 1Vamos fazer algumas observaes. Primeiro, o nome das variveis est diferente do queeram anteriormente: no s esto todos em maisculas, como parecem ter sido truncados para 8espaos apenas. Bem, o SPSS no aceita nomes longos (com mais de 8 espaos) e trunca o nomemesmo. Alm disso ele tambm converteu tudo para maisculo.A outra diferena que a varivel SPECIES agora numrica e no mais contm o nome dasespcies. Essa foi a modificao que fizemos de propsito: convertemos os nomes para nmeros:setosa para 1, versicolor para 2 e virgnica para 3. Depois colocamos os nomes como labels noSPSS (usurios deste programa sabem o que isso significa espero...)Vamos agora estudar os argumentos usados na funo read.spss(): o primeiro no hdvida e o nome do arquivo; o segundo diz para o R no usar os labels das variveis queeventualmente existam no SPSS ao importar as variveis por isso que neste caso os nmerosforam importados para a varivel SPECIES e no os nomes das espcies. Por ltimo, o argumentoto.data.frame=T, indica para o R que o formato a ser lido um data frame, visto que o default importar para uma lista. Para importar os nomes das espcies, faa:> dados4 dados4[1:10,] SEPAL.LE SEPAL.WI PETAL.LE PETAL.WI 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 setosaQuer saber mais detalhes sobre esta funo? Consulte a ajuda... Vamos agora ver um outro formato que bastante usado em sade pblica, que o .rec,extenso usada por bancos armazenados pelo EpiInfo. Se voc j usou o EpiInfo, deve conhecer ofamosssimo arquivo oswego.rec, usado em muitos exerccios em epidemiologia. Para maioresinformaes sobre o arquivo, consulte o manual do EpiInfo, mas consiste de dados sobre umaintoxicao alimentar ocorrida em Oswego, NY em 1972 aps um almoo beneficente em umaigreja. Nesse caso, podemos acessar o arquivo diretamente do diretrio do prprio EpiInfo:oswego
  • Note que a sada so as datas entre aspas, caracterizando uma varivel tipo caracter.Duvida? Ento faa:is.character(oswego$ONSETDATE)A resposta foi TRUE, como esperado. Para contornar esse problema, temos que lanar mode alguns argumentos extras. Vamos tentar o seguinte:oswego1
  • 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

  • Muito bem, vamos ento criar um vetor para agrupar as espcies segundo essa mediana (nose preocupe em entender a sintaxe por enquanto):> g.petala table(Species, g.petala) g.petalaSpecies =4.35 setosa 50 0 versicolor 25 25 virginica 0 50No primeiro comando, criamos o objeto g.petala que contm os agrupamentos, depoisfizemos uma tabela para comparar as espcies com os grupos. Podemos guardar essa tabela em umobjeto se quisermos. Faa assim:g.petala
  • > 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.

  • Convenes e dicasSe voc j leu os outros tutoriais deste material, j deve estar acostumado com asconvenes (que no so muitas) usadas neste material. Sempre que estivermos nos referindo a umcdigo ou sada de texto do R, usaremos a fonte Courier New tamanho 10 como em:choose(1000, 30)Existem dois tipos bsicos de apresentao dos comandos. Esse acima, que no temnenhuma sada de texto abaixo e tambm no precedido do smbolo do prompt do R >, sergeralmente para ser copiado e colado no prompt do R para se obter a sada. J os do tipo:> mean(notas)[1] 7.01So em geral apenas para a observao dos resultados (claro que isso no impede que ocomando seja usado, mas s tome cuidado para no colar o smbolo > junto, porque neste caso vaidar erro no R).Existe ainda mais um tipo, que igual ao primeiro, no sentido que para ser copiado ecolado tambm, mas de uma maneira mais complexa. So as funes. Elas tm esse jeito:var.pop
  • 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

  • falando de uma multiplicao. Se estamos falando da probabilidade de acontecer um evento ououtro evento, estamos falando de uma soma. Pescou? Pois , essa probabilidade vai ser (0.1x0.1) +(0.1x0.1) = 0.02.J para o caso sem reposio, a cosa muda um pouco de figura. Agora, a probabilidade dosegundo elemento a ser sorteado vai ser diferente da do primeiro, pois vai ter uma bolinha a menosna minha urna. Ento, nesse caso, apesar do raciocnio ser o mesmo, os nmeros mudam. Olha s,eu vou copiar a mesma frase l de cima, s mudando as probabilidades: Para o caso sem reposio,ns teremos a probabilidade de sortear a bolinha 3 (1/10) e a bolinha 5 (1/9) ou a bolinha 5 (1/10) ea bolinha 3 (1/9). Ento, essa probabilidade vai ser (1/10x1/9) + (1/10x1/9) = 0.0222.Como voc percebeu, a probabilidade no segundo caso maior que no primeiro, j que aprobabilidade de se sortear uma determinada bolinha na segunda tentativa maior (o denominador menor) que na primeira.Agora um ltimo problema antes de ns partirmos para a nossa parte prtica de fato. Todosesses exemplos so compostos de bolinhas que tm uma probabilidade igual de ser sorteada. Masisso no necessariamente acontece assim. Vamos supor que por exemplo ns s tivssemosbolinhas com o nmero 1 e com o nmero 2, mas que temos 4 com o nmero 1 e 6 com o nmero 2.Bem, agora qual seria a probabilidade de se escolher uma bolinha com o nmero 1? A respostatambm intuitiva, e ser 4/10 = 40% o nmero de bolinhas com o nmero 1 dividido pelo totalde bolinhas na urna... E da bolinha com o nmero 2? Nesse caso, seria 6/10 = 60%. Neste caso, asbolinhas tm uma probabilidade diferente de serem sorteadas. O caso de uma segunda bolinha,vamos deixar para um desafio para vocs que um problema um pouco mais complicado.Muito bem, esse papo todo s para refrescar a sua memria sobre probabilidade, porque anossa inteno aqui ver coisas acontecendo na prtica.A funo sample()Tudo muito bonito esse papo de amostra aleatria e probabilidade, mas como o R pode nosajudar com isso? Bem, o R possui uma funo bastante interessante, que a funo sample() quepara quem conhece essa palavra em ingls j deduziu que serve para amostrar alguma coisa. E isso mesmo: ela serve para criar uma amostra aleatria de um vetor qualquer, com ou sem reposioe com probabilidades iguais ou no. Vamos ver ento como essa funo funciona e como ela vainos ajudar a entender melhor esses problemas de probabilidade.Primeiro, vamos simular a situao onde temos a urna com as bolinhas numeradas de 1 a 10.A maneira mais simples criar um vetor chamado urna, com valores de 1 a 10:urna
  • vetor. Em seguida, vamos ver quantas vezes uma determinada bolinha (nmero) aparece no nossovetor, dividindo este nmero pelo tamanho do vetor. Complicou? Vamos tentar na prtica, ento:probab
  • Muito bem. Mas lembre-se que quando voc for fazer isso no R, os resultados de cada umadas suas tentativas vai ser diferente do que eu obtive quando fiz, pois a funo sample() escolhe asbolinhas aleatoriamente...Repare tambm que esta funo serve para calcular as probabilidades aproximadas quando aordem de retirada importa, com o argumento order=T, se for necessrio. Vamos ver s um exemplorpido: > probab(urna, repos=T, order=T, bolinha=c(3,5))[1] 0.0099Um resultado esperado, j que se a ordem importa, no nos interessa a amostra (5,3), masapenas a amostra (3,5), e claro, a probabilidade deve ser aproximadamente a metade da anterior.Distribuies DiscretasComo voc j deve ter aprendido, as distribuies de fenmenos naturais dos quaisqueremos fazer inferncias a respeito se dividem em dois grandes grupos: variveis discretas evariveis contnuas. Vamos comear pelas discretas. Elas so empregadas para descreverfenmenos que s podem assumir nmeros inteiros. Um exemplo muito freqente emepidemiologia o nmero de pacientes com uma determinada doena em uma populao. claroque no pode existir um meio paciente, e portanto a distribuio deste evento uma distribuiodiscreta.Note que esta classificao muito geral e nada dito ou suposto sobre o range dadistribuio, e nem ao seu formato. Essas caractersticas sero particulares de cada distribuio. Anica caracterstica que as une o fato de assumirem nmeros inteiros. Sendo discreta, podemosdefinir a probabilidade de ocorrncia de um determinado evento ocorrer sem muita dificuldade:P X =x= f xClaro que isso uma definio muito geral. Para o nosso exemplo das bolinhas com nmero1 e 2, com probabilidades diferentes, teramos:P X =x= f x={ 0.4, se x=10.6, se x=20, caso contrrio6Como seria o grfico desta funo? ( isso mesmo, ela tem um grfico... meio esquisito, verdade...)x
  • x
  • 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