apostila introdução ao r versao 1.1

Upload: gustavobruschi

Post on 09-Mar-2016

231 views

Category:

Documents


0 download

DESCRIPTION

Apostila elaborada para interessados em aprender a linguagem R. Elaborada para iniciantes e intermediários.

TRANSCRIPT

  • Letcia Mancini Martins

    Introducao ao R

    Trabalho submetido a` Universidade Federal

    do ABC como parte dos requisitos para a

    conclusao do projeto de pesquisa de Inicia-

    cao Cientifica.

    Santo Andre - Sao Paulo

    versao 1.1, setembro de 2010

  • 2Direitos de Copia @2010 por Letcia Mancini Martins. Todos os direitos reservados.

    Este documento e gratuto; voce pode redistribu-lo e/ou modifica-lo dentro dos

    termos da Licenca Publica Geral GNU como publicada pela Fundacao do Software

    Livre (FSF); na versao 2 da Licenca, ou (na sua opniao) qualquer versao.

    Este programa e distribuido na esperanca que possa ser util, mas SEM NENHUMA

    GARANTIA; sem uma garantia implicita de ADEQUACAO a qualquer MERCADO

    ou APLICACAO EM PARTICULAR. Veja a Licenca Publica Geral GNU para

    maiores detalhes.

    Voce deve ter recebido uma copia da Licenca Publica Geral GNU junto com este

    programa, se nao, escreva para a Fundacao do Software Livre(FSF) Inc., 51 Franklin

    St, Fifth Floor, Boston, MA 02110-1301 USA

    Possveis versoes podem ser lancadas contendo informacoes adicionais a` medida que

    os usuarios desta apostila vao tendo duvidas. Por isso, solicito a todo usuario que,

    ao ter alguma duvida e/ou verificar a falta de algum topico importante ou erro nesta

    apostila, relatar a` autora, cujo e-mail e leticia [email protected].

    Ficha Catalografica

    Mancini-Martins, Letcia.

    Tutorial R. Santo Andre, 2010. 65p

    Iniciacao Cientfica - Universidade Federal do ABC. Centro de Matematica, Computacao

    e Cognicao.

    1. R-project 2. Estatstica 3. Tutorial 4. Software Livre I. Universidade Federal do ABC.

    Centro de Matematica Computacao e Cognicao. II. Introducao ao R.

    Introducao ao R - Universidade Federal do ABC

  • SUMARIO 3

    Sumario

    1 Introducao 5

    2 Objetivos e metas desta apostila 6

    3 Lista de recursos de Ajuda 6

    4 Arquivos que acompanham a apostila 8

    5 Dicas gerais antes de comecar 8

    6 Baixando e instalando pacotes (packages) 10

    6.1 Metodo manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    6.2 Metodo automatico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

    7 Calculos Simples 11

    8 Exploracao preliminar dos dados 18

    8.1 Inserindo dados (*.txt) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    8.2 Tratamento de erros de leitura de dados, possveis casos . . . . . . . . . . . . . . 19

    8.3 Transformacao e manipulacao de dados . . . . . . . . . . . . . . . . . . . . . . . 19

    8.4 Medidas Descritivas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    8.5 Funcoes miscelaneas uteis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    8.6 Funcoes Apply e Tapply . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

    9 Comparacao de grupos de indivduos. 27

    9.1 Analise de dados utilizando tabelas de contingencia . . . . . . . . . . . . . . . . 27

    9.1.1 O teste qui-quadrado (X2) . . . . . . . . . . . . . . . . . . . . . . . . . . 27

    9.1.2 O teste Exato de Fisher . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

    9.1.3 V de Cramer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    9.1.4 Phi de Cramer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

    9.2 O teste T Pareado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

    9.3 O teste T para amostras independentes . . . . . . . . . . . . . . . . . . . . . . . 36

    9.4 Analise de Variancia (Anova) ou teste F . . . . . . . . . . . . . . . . . . . . . . 36

    9.5 Medidas de Diagnostico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

    9.5.1 Curva ROC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

    9.5.2 Regressao linear simples . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

    9.5.3 Regressao linear multipla . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

    9.5.4 Analise Discriminante . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

    Introducao ao R - Universidade Federal do ABC

  • SUMARIO 4

    10 Graficos 52

    10.1 Parametros gerais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

    10.2 Grafico de setores(ou de pizza) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

    10.3 Grafico de barras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

    10.4 Histograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

    10.5 Boxplots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

    10.6 Grafico de dispersao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

    10.7 Exportando o grafico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

    REFERENCIAS BIBLIOGRAFICAS64 INDICE REMISSIVO65

    Introducao ao R - Universidade Federal do ABC

  • 1 Introducao 5

    1 Introducao

    A Estatstica esta presente em todas as areas da ciencia que envolvam a coleta e analise

    de dados e sua consequente transformacao em informacao, para postular, refutar ou validar

    hipoteses cientficas sobre um fenomeno observavel.(1)

    O desenvolvimento rapido e constante na area de computacao e tecnologia foi acompan-

    hado pela introducao de novas tecnicas de analises de dados, notadamente de metodos graficos

    e de metodos de computacao intensiva.(2) Geralmente, todo profissional ou estudante de Es-

    tatstica utiliza-se de recursos computacionais. Atualmente, dentre os muitos programas livres

    disponveis no mercado para a analise de dados o mais utilizado e o R.(3)

    R (ou plataforma R) e um avancado sistema computacional e estatstico com graficos de

    alta qualidade que e disponibilizado gratuitamente para varios sistemas operacionais.(3)

    R e um programa que existe como Codigo-Fonte. O seu codigo e aberto, o que significa que

    e possvel modifica-lo e melhora-lo sem restricoes. Ha tambem a possibilidade de incrementa-lo

    com pacotes de complementos facilmente baixados na internet. Este programa necessita de

    poucos requisitos pois utiliza somente 20Mb de memoria do HD e precisa de 16Mb de memoria-

    ram.(3)

    R e um programa Command-Line-driven que fornece comandos para interpretar a linguagem

    S.

    Devido a grande versatilidade do programa e difcil saber para que ele e usualmente utili-

    zando e qual a extensao deste uso. Acredita-se que seja usado para projetos estudantis, aulas

    e tambem em pesquisas cientficas.

    Neste programa e possvel utilizar um grande diversidade de tecnicas estatsticas como mo-

    delagem linear e nao linear, estes estatsticos classicos, analise de series temporais, classificacao

    agrupamento, entre outros.

    A motivacao que levou a criacao deste programa e principalmente, utilizando codigo fonte

    aberto foi a possibilidade de criar um programa util e gratuito para facilitar o ensino de estats-

    tica e as pesquisas cientficas no terceiro mundo.

    O programa R tem se desenvolvido muito rapidamente, de acordo com Ripley(3) - mante-

    nedor do projeto R - desde fevereiro de 2000 ha cerca de uma atualizacao por mes e uma nova

    versao duas vezes ao ano.

    Por ser um programa sem fins lucrativos, o seu desenvolvimento depende exclusivamente

    de voluntarios. Contribuicoes sempre sao recebidas de bracos abertos.

    Em geral, e necessario saber a teoria antes de partir para a pratica, por isso, uma das grandes

    dificuldades na Bioestatstica e que programas como o R necessitam de um conhecimento previo,

    nao so das tecnicas atreladas a` Bioestatstica como tambem dos comandos e funcionalidades do

    programa.(3)

    Foi pensando na possibilidade de minimizar as dificuldades encontradas por pesquisadores,

    alunos de estatstica e ate mesmo publico em geral ao utilizar programas como o R que este

    Introducao ao R - Universidade Federal do ABC

  • 2 Objetivos e metas desta apostila 6

    projeto foi idealizado.

    2 Objetivos e metas desta apostila

    O objetivo deste tutorial e auxiliar na compreensao e uso da plataforma R por estudantes,professores, pesquisadores e publico em geral.

    Fornecer exemplos de cada uma das principais tecnicas estatsticas, feitos a partir dedados reais.

    Estimular a aprendizagem de estatstica atraves de exemplos da funcionalidade e flexibi-lidade do R.

    Mostrar e estimular os leitores a aproveitarem de Softwares livres, evitando as restricoescomerciais e o uso nao autorizado destes.

    3 Lista de recursos de Ajuda

    Paginas do Projeto R

    http://r-project.org O home page do projeto R

    http://cran.br.r-project.org O servidor mirror (espelho) brasileiro

    http://r-project.org/mail Consulte o r-help

    http://cran.r-project.org/other-docs.html Documentos de ajuda

    Tutoriais de ajuda de colaboradores em Ingles

    An introduction to R disponvel em

    http://cran.r-project.org/doc/manuals/R-intro.html

    Simple R de John Verzani disponvel em

    http://www.math.csi.cuny.edu/Statistics/R/simpleR/printable/simpleR.pdf

    The R Guide de W. J. Owen disponvel em

    http://www.mathcs.richmond.edu/~wowen/TheRGuide.pdf

    Tutoriais de ajuda de colaboradores em Portugues

    Tutorial de Introducao ao R disponvel em

    http://www.est.ufpr.br/Rtutorial/contents.html

    Introducao ao R - Universidade Federal do ABC

  • 3 Lista de recursos de Ajuda 7

    Bioestatstica usando R de Colin Robert Beasley disponvel em

    http://cran.r-project.org/doc/contrib/Beasley-BioestatisticaUsandoR.pdf

    Introducao a` Biometria utilizando R de Leandro R. Monteiro e Jose Louvise Gomes-Jr

    disponvel em

    http://cran.r-project.org/doc/contrib/biometria.pdf

    Introducao a` Programacao em R de Luis Torgo disponvel em

    http://cran.r-project.org/doc/contrib/Torgo-ProgrammingIntro.pdf

    Toppicos de Estatstica utilizando R de Fernando Itano disponvel em

    http://cran.r-project.org/doc/contrib/Itano-installation.pdf

    Guia de instalacao do R de Fernando Itano

    Introducao ao R 2009 de Victor Lemes Landeiro disponvel em

    http://ppbio.inpa.gov.br/Port/public/disciplinas2/Introducao\%20ao\%20R\%202009.

    pdf

    Recomenda-se no site acima o documento R for Beginners (Ingles) da autoria de Emanuel

    Paradis, ou R para Principiantes (a traducao da R for Beginners para o Espanhol feita por

    Jorge A. Ahumadal).

    Algumas paginas chaves sobre Software Livre (SL)

    http://www.fsf.org/home\_pt.html Free Software Foundation (GNU)

    http://www.softwarelivre.rs.gov.br Site sobre SL do Governo do RS

    http://www.softwarelivre.unicamp.br/sl Site sobre SL da UNICAMP, SP

    http://gufsc.lcmi.ufsc.br Grupo de usuarios de SL da UFSC

    http://focalinux.cipsga.org.br/guia/inic\_interm/ch-intro.htm

    Introducao ao GNU/Linux

    Livros

    Introducao ao R - Universidade Federal do ABC

  • 4 Arquivos que acompanham a apostila 8

    Dalgaard P (2002) Introductory Statistics with R. Springer, New York, ISBN 0-387-95475-9.

    Fox J (2002) An R and S-PLUS Companion to Applied Regression. Sage Publications,

    ISBN 0-761-92280-6 (softcover) ou 0-761-92279-2 (hardcover)

    Comandos de ajuda do R

    > help.start()

    inicia documentacao na forma de arquivos html visualizados no seu browser

    > help(sqrt)

    inicia uma janela de ajuda sobre topico

    4 Arquivos que acompanham a apostila

    Nos exemplos contidos neste tutorial, sera usado alguns bancos de dados. Eles estarao

    disponveis em breve na pagina http://lmmartins.webnode.com.br/publicacaobibliografica/

    5 Dicas gerais antes de comecar

    Na plataforma R, o texto devem ser digitados apos o prompt de comando > (sinal de maior).

    Em alguns casos, o sinal de + ira surgir no lugar do prompt. Isso significa que algum comando

    esta faltando. Neste tutorial os comandos serao precedidos de >, e em alguns momentos de +

    para facilitar a familiaridade com a plataforma. Nao digite nenhum dos dois sinais na plata-

    forma.

    Os comandos digitados aparecerao em vermelho e a resposta da R aparecera em azul. Apos

    digitar algum comando tecle enter para que ele seja executado.

    As funcoes sempre sao acompanhadas de parenteses como, por exemplo, help() que abre a

    ajuda da plataforma. Os parametros que o usuario deseja utilizar na funcao devem ser escritos

    dentro dos parenteses.

    A plataforma e case-sensitive, ou seja, ela diferencia letras minusculas e MAIUSCULAS.

    Voce pode ver e reeditar o historico de comandos digitados durante a sessao pressionando

    a tecla de seta para cima ().

    Introducao ao R - Universidade Federal do ABC

  • 5 Dicas gerais antes de comecar 9

    Lembre sempre que R usa um ponto . em vez de vrgula , quando ha numeros com casas

    decimais. Se precisar importar dados que usam vrgulas em vez de pontos, troque na planilha

    as vrgulas por pontos usando Editar > Localizar e Substituir, do contrario, os dados nao serao

    reconhecidos como numeros. As vrgulas sao utilizadas para separar dados e argumentos. Por

    exemplo, os dados a seguir tem casas decimais definidos usando pontos, mas os valores estao

    separados por vrgulas.

    A, B, C

    2.6, 3.8, 7.6

    Nao recomenda-se que utilize acentos nas palavras, pois acentos sao usados na linguagem

    R como comandos e utiliza-los no nome de variaveis pode causar erros.

    Voce pode copiar e colar na linha de comando: primeiro seleciona o texto a ser copiado

    e, em Windows clique com o botao direito do mouse, selecione Copiar e clique novamente no

    botao direta e selecione Colar. Use tambem os atalhos do teclado Ctrl+C e Ctrl+V.

    Neste documento, comandos a serem digitados na linha de comando serao assinalados com

    o prefixo > (o prompt do R) e estao na fonte Courier New ex. > mean(massa).

    Texto em Courier New sem o prompt > e o resultado.

    Os demais textos sao as explicacoes e comentarios da autora.

    Se for utilizar uma mesma sequencia de comandos varias vezes, voce pode criar e salvar

    um script. Clique em Arquivo > Novo Script para criar. Depois clique em Arquivo > Salvar

    Script para salva-lo. Depois que escrever o script e so copiar e colar na area de trabalho que a

    plataforma executara os comandos.

    Quando a plataforma e aberta, uma area de trabalho surge e e nela que voce realizara suas

    analises. Alem do script, essa area de trabalho tambem pode ser salva. Nunca salve mais de

    uma area de trabalho em uma mesma pasta.

    Na plataforma R o sinal # - cujo nome oficial e Octothorpe1, porem e mais conhecido como

    jogo-da-velha ou cerquilha - e usado para inserir comentarios. Utilize-o sempre, desta forma

    evitara esquecer o que faz cada codigo em seu script.

    Para sair da R usa > q(). Um dialogo aparecera perguntando se quer salvar o espaco de

    trabalho. Para os estudos que faremos nesse tutorial nao sera necessario salvar a imagem do

    Introducao ao R - Universidade Federal do ABC

  • 6 Baixando e instalando pacotes (packages) 10

    espaco de trabalho.

    6 Baixando e instalando pacotes (packages)

    O programa R possui tres partes: o r-base, que e o pacote basico que contem todas as

    funcoes principais que estao disponveis quando iniciamos o programa; os pacotes recomendados

    que sao instalados com o R-base mas nao sao carregados automaticamente e para utiliza-los e

    necessario usar a funcao require(pacote); e os pacotes de contruibuicao que nao sao instalados

    com o R-base mas podem ser baixados pela internet. A instalacao desses ultimos pode ser feita

    manualmente ou automaticamente.

    Antes de instalar qualquer pacotes, voce verificar se ele esta instalado. Todos os pacotes

    instalados em um computador podem ser vistos utilizando o comando abaixo:

    > library()

    Alem disso, voce pode utilizar a funcao require() para verificar que aquele determinado

    pacote esta instalado.

    Exemplo de pacote que esta instalado:

    > require(MASS)

    Carregando pacotes exigidos: MASS

    Warning message:

    pacote MASS foi compilado na vers~ao do R 2.9.2

    Exemplo de pacote que nao esta instalado:

    > require(Hmisc)

    Carregando pacotes exigidos: Hmisc

    Warning message:

    In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return

    = TRUE, : n~ao ha nenhum pacote chamado Hmisc

    6.1 Metodo manual

    Na pagina http://cran.r-project.org/web/packages/ (em ingles) voce encontra uma lista de

    pacotes que podem ser baixados. Clicando em um pacote voce vera o que ele faz e de que

    pacotes ele precisa.

    Introducao ao R - Universidade Federal do ABC

  • 6.2 Metodo automatico 11

    Por exemplo, vamos instalar o pacote Rocr que e necessario para fazer curvas Roc na R.

    Na pagina citada anterior clique na letra R. Procure na lista pelo nome do pacote ROCRe

    clique nele. No pagina do pacote voce tera acesso a informacoes como abaixo:

    Version (versao): 1.0-4 Depends (pacotes que ele depende): gplots, methods Published (data

    de publicacao): 2009-12-14 Author (autor): Tobias Sing, Oliver Sander, Niko Beerenwinkel,

    Thomas Lengauer Maintainer (mantenedor): Tobias Sing

    Em downloads, procure o arquivo para o seu sistema operacional e baixe o arquivo.

    Na R, clique no menu pacotes e depois em instalar pacotes a partir de arquivos zips locais.

    Selecione o arquivo que voce baixou e a R ira instala-lo. Para utiliza-lo agora e so digitar

    library(ROCR) ou require (ROCR) antes de utilizar o pacote.

    6.2 Metodo automatico

    Na R, clique no menu pacotes e depois em Escolher Espelho CRAN. Escolha qualquer

    espelho de preferencia o mais proximo da sua localizacao.

    Depois clique em Pacotes > Escolher repositorio e escolha os repositorios dos quais quer

    baixar. Neste caso, voce pode selecionar mais de um.

    Por fim, clique em Pacotes > Instalar Pacotes. Em alguns segundos, uma janela com os

    pacotes disponveis se abrira e voc e podera selecionar o pacote que quer instalar.

    Escolha, por exemplo, o pacote Hmisc que faz graficos do tipo piramide populacional.

    7 Calculos Simples

    Utilizando a linha de comando de R podemos realizar calculos algebricos simples. Observe

    os exemplos abaixo.

    Voce pode somar,

    > 1 + 1

    [1] 2

    subtrair,

    > 14 - 6

    [1] 8

    multiplicar,

    > 3 * 4

    [1] 12

    Introducao ao R - Universidade Federal do ABC

  • 7 Calculos Simples 12

    dividir,

    > 47/11

    [1] 4.27

    e tambem realizar calculos mais complexos como potenciacao,

    > 2^6

    [1] 64

    ou entao, o seno de um angulo:

    > sin(5)

    [1] -0.959

    Atencao! Todos os valores devem ser escritos em radianos e nao em graus. Lembre-se de que

    2pi equilavem a 360.

    Outras possveis funcoes trigonometricas sao:

    > cos(x) calcula o cosseno de um angulo

    > cos(x) calcula o cosseno de um angulo

    > tan(x) calcula a tangente de um angulo

    > acos(x) calcula o angulo de um determinado valor de cosseno

    > asin(x) calcula o angulo de um determinado valor de seno

    > atan(x) calcula o angulo de um determinado valor de tangente

    > cosh(x) calcula o cosseno hiperbolico de um angulo

    > sinh(x) calcula o seno hiperbolico de um angulo

    > tanh(x) calcula a tangente hiperbolica de um angulo

    > acosh(x) calcula o angulo de um determinado valor de cosseno hiperbolico

    > asinh(x) calcula o angulo de um determinado valor de seno hiperbolico

    > atanh(x) calcula o angulo de um determinado valor de tangente hiperbolicaAlguns erros podem surgir se o R nao entender os comandos digitados. Por exemmplo,

    o separador de casas decimais e o ponto e nao a vrgula. A vrgula e utilizada para separar

    elementos. Observe os exemplos abaixo:

    Ex.1

    > 2,3*2 Error: syntax error

    Ex.2

    > 2.3 * 2

    [1] 4.6

    Introducao ao R - Universidade Federal do ABC

  • 7 Calculos Simples 13

    Voce pode nomear um resultado ou valor qualquer a fim de utiliza-lo em outros calculos.

    Isso pode ser feito utilizando tres formas diferentes de comando:

    Nome x x

    [1] 2

    Valor -> Nome > 2 -> x

    > x

    [1] 2

    Nome = Valor

    > x = 2 * 2

    > x

    [1] 4

    Todo tipo de calculo pode ser feito utilizando esse comando.

    Voce pode designar um nome para um valor e utiliza-lo em um calculo simples.

    > x x * 3 + 4

    [1] 10

    E pode guardar um novo valor na mesma variavel.

    > x x

    [1] 3

    Outras funcoes e comandos essenciais:

    Raiz quadrada

    > sqrt(49)

    [1] 7

    Log em qualquer base

    Introducao ao R - Universidade Federal do ABC

  • 7 Calculos Simples 14

    > log(1, base = 10)

    [1] 0

    Log na Base 10

    > log10(1e+10)

    [1] 10

    Log na Base 2

    > log2(1024)

    [1] 10

    A expressao abaixo e equivale a expressao log (x + 1).

    > log1p(1)

    [1] 0.693

    Ja esta equivale a e1.

    > exp(1)

    [1] 2.72

    A seguinte expressao e equivalente a e(x) 1.

    > expm1(1)

    [1] 1.72

    A integral da funcao f nos limites de a e b, pode ser calculada usando a funcao abaixo:

    > a = 1

    > b = 13

    > f = function(x) ((x^2 - x)/2)

    > integrate(f, a, b)

    324 with absolute error < 3.6e-12

    Introducao ao R - Universidade Federal do ABC

  • 7 Calculos Simples 15

    Voce pode criar uma matriz utilizando a funcao matrix(). Esse comando tem os seguintes

    argumentos:

    x conjunto de numero que compoem a matriz

    nrow este parametro determina o numero de colunas da matriz

    ncol este parametro determina o numero de colunas da matriz

    byrow e parametro booleano onde FALSE significa que o preenchimento comeca

    pelas colunas, caso contrario, o preenchimento comeca pelas linhas

    dimnames e um parametro que nomeia as linhas e colunas da matrizExemplo 1.

    > matriz matriz

    Coluna1 Coluna2 Coluna3

    Linha1 1 0 0

    Linha2 0 1 0

    Linha3 0 0 1

    Voce tambem pode criar uma matriz e atribuir valores individualmente, por exemplo:

    > A = matrix(0, 3, 6)

    O valor 0 equivale aos valores que no exemplo anterior era uma lista de valores, o numero

    de linhas e 3 e o numero de colunas e 6. Inicialmente a matriz fica da seguinte forma:

    > A

    [,1] [,2] [,3] [,4] [,5] [,6]

    [1,] 0 0 0 0 0 0

    [2,] 0 0 0 0 0 0

    [3,] 0 0 0 0 0 0

    Agora voce pode atribuir valores quaisquer a` matriz, sendo que A[1,2], significa o elemento

    da primeira linha e segunda coluna da matriz A.

    > A[1, 1] = 72

    > A[1, 2] = 28

    > A[1, 3] = 36

    > A[1, 4] = 41

    > A[1, 5] = 23

    > A[2, 1] = 30

    Introducao ao R - Universidade Federal do ABC

  • 7 Calculos Simples 16

    > A[2, 2] = 51

    > A[2, 3] = 47

    > A[2, 4] = 30

    > A[2, 5] = 42

    Voce tambem pode realizar contas com os fatores da matriz como abaixo:

    > A[1, 6] = A[1, 1] + A[1, 2] + A[1, 3] + A[1, 4] + A[1, 5]

    > A[2, 6] = A[2, 1] + A[2, 2] + A[2, 3] + A[2, 4] + A[2, 5]

    > A[3, 1] = A[1, 1] + A[2, 1]

    > A[3, 2] = A[1, 2] + A[2, 2]

    > A[3, 3] = A[1, 3] + A[2, 3]

    > A[3, 4] = A[1, 4] + A[2, 4]

    > A[3, 5] = A[1, 5] + A[2, 5]

    > A[3, 6] = A[1, 6] + A[2, 6]

    > A

    [,1] [,2] [,3] [,4] [,5] [,6]

    [1,] 72 28 36 41 23 200

    [2,] 30 51 47 30 42 200

    [3,] 102 79 83 71 65 400

    Voce pode usar tambem rotinas de repeticao para realizar um mesmo calculo varias vezes:

    > x = 0

    > for (cont in 1:8) {

    + x x

    [1] 8

    O comando for, repete um mesmo calculo quantas vezes voce desejar. Neste caso ele ira

    repetir 8 vezes o ato de somar uma unidade. A variavel cont e um contador que o programa

    usa pra marcar quantas vezes ele precisa fazer um calculo. O contador deste caso utiliza a

    sequencia numerica de 1 ate 8.

    Entao para aqueles que nao estao familiarizados com programacao aqui esta uma traducao

    deste comando:

    para (cont de 1 ate 8) fazer calculo

    Basicamente, o programa fez x = 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1

    A sequencia utilizada dentro da rotina for tambem e um comando e voce pode utiliza-lo.

    Essa e a sequencia de 0 ate dez.

    Introducao ao R - Universidade Federal do ABC

  • 7 Calculos Simples 17

    > 0:10

    [1] 0 1 2 3 4 5 6 7 8 9 10

    Coloca-se a sequencia dentro de uma variavel.

    > a a * 2

    [1] 0 2 4 6 8 10 12 14 16 18 20

    Pode-se tambem fazer calculos utilizando duas ou mais sequencias.

    > b a + b

    [1] 10 10 10 10 10 10 10 10 10 10 10

    ...subrair,

    > a - b

    [1] -10 -8 -6 -4 -2 0 2 4 6 8 10

    e ate multiplica-las.

    > a * b

    [1] 0 9 16 21 24 25 24 21 16 9 0

    Alem disso, duas sequencias podem ser juntadas e armazenadas em uma terceira. Para isso

    usaremos c(), o ScT significa concatenar (juntar).

    > a b

  • 8 Exploracao preliminar dos dados 18

    > m = c(a, b)

    > m

    [1] 0 1 2 3 4 5 6 7 8 9 10 50 51 52 53 54 55 56 57 58 59 60 61 62 63

    [26] 64 65 66 67 68 69 70

    Podemos fazer tambem o contrario e formar uma sequencia nova, concatenando primeiro b

    e depois a.

    > n = c(b, a)

    > n

    [1] 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 0 1 2 3

    [26] 4 5 6 7 8 9 10

    8 Exploracao preliminar dos dados

    8.1 Inserindo dados (*.txt)

    O codigo a seguir tem como objetivo mudar o diretorio que a plataforma usa para buscar

    os arquivos.

    O codigo precedido pelo smbolo # e um comentario que voce pode adicionar ao codigo a

    fim de explicar o que cada parte do codigo significa.

    #MUDANCA DE DIRETORIO

    Esse comando mostra ao usuario o diretorio em que a plataforma ira trabalhar.

    > getwd()

    [1] "C:/Documents and Settings/Acer/Meus documentos/_Ufabc_/Projetos/Sweave"

    Aqui coloca-se o conteudo do comando em uma variavel.

    > wdir setwd("C:/Documents and Settings/Acer/Meus documentos/")

    Voce pode usar o comando abaixo novamente para conferir se o novo diretorio foi salvo.

    > getwd()

    [1] "C:/Documents and Settings/Acer/Meus documentos"

    Introducao ao R - Universidade Federal do ABC

  • 8.2 Tratamento de erros de leitura de dados, possveis casos 19

    8.2 Tratamento de erros de leitura de dados, possveis casos

    AINDA NAO DISPONIVEL

    8.3 Transformacao e manipulacao de dados

    A funcao read.table() le um arquivo de uma tabela (ou planilha) no formato *.txt (salvo

    em um editor de texto como por exemplo o Wordpad ou Bloco de Notas).

    No exemplo abaixo, a tabela lida foi salva na variavel dados.

    dados=read.table("pesquisa8.txt", header=TRUE, row.names=1)

    Parametros dentro da funcao podem ser modificados com o objetivo de alterar a forma

    como o programa le o arquivo. Como por exemplo:

    header=TRUE significa que a primeira linha contem os nomes das colunas

    row.names=1 significa que a primeira coluna contem os nomes das fileirasNo exemplo abaixo, o programa le a tabela e guarda a tabela na variavel dados.

    > dados = read.table("pesquisa8.txt", header = TRUE)

    Ao digitar a variavel dados, toda a tabela lida sera mostrada ao usuario. Ja utilizando

    o nome da variavel depois do smbolo $ e depois o nome de uma coluna da tabela e possvel

    mostrar somente a referida coluna, como mostra abaixo. Os numeros entre colchetes indicam

    o ndice do primeiro valor que cada linha mostra.

    > dados$O2

    [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

    [26] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

    [51] 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1

    [76] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

    [101] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

    [126] 1 1 1 1 42 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

    Antes de salvar uma planilha em txt, lembre-se de substituir as vrgulas por pontos utili-

    zando o menu Editar < Substituir.

    A funcao table() identifica os diferentes termos da coluna e conta quantas observacoes de

    cada ocorrem. No caso abaixo: 3 pessoas responderam 0, 146 pessoas respoderam 1 e 1 pessoa

    respondeu 42.

    > table(dados$O2)

    0 1 42

    3 146 1

    Introducao ao R - Universidade Federal do ABC

  • 8.4 Medidas Descritivas 20

    8.4 Medidas Descritivas

    A funcao summary() faz um resumo dos dados calculando as seguintes medidas:

    Min. (Mnimo), e o valor da menor observacao realizada.

    1st. Qu (10 Quartil), valor que divide os dados em 25% menores e 75% maiores.

    Median (Mediana), e o valor que divide as observacoes em dois grupos iguais.

    Mean (Media), e o valor central das observacoes.

    1st. Qu (30 Quartil), valor que divide os dados em 75% menores e 25% maiores.

    Max. (Maximo), e a maior observacao realizada.Observe o exemplo abaixo, onde calculou-se um resumo da idade dos entrevistados.

    > summary(dados$Q2I)

    Min. 1st Qu. Median Mean 3rd Qu. Max.

    16.0 19.0 23.5 32.1 47.8 84.0

    Essas medidas tambem podem ser calculadas separadamente atraves dos comandos:

    > min(dados$Q2I)

    [1] 16

    > max(dados$Q2I)

    [1] 84

    > mean(dados$Q2I)

    [1] 32.1

    > median(dados$Q2I)

    [1] 23.5

    moda? 1 quartil 3 quartil

    Outras medidas descritivas que podem ser calculadas sao;

    > var(x) Variancia

    > sd(x) Desvio Padrao

    Introducao ao R - Universidade Federal do ABC

  • 8.5 Funcoes miscelaneas uteis 21

    8.5 Funcoes miscelaneas uteis

    Voce pode verificar os objetos existentes na area de trabalho utilizando a funcao a seguir:

    > ls()

    [1] "a" "A" "a.vert" "a.x" "anova"

    [6] "b" "B" "b.x" "c" "c.x"

    [11] "col" "cont" "d" "d.x" "d1"

    [16] "dados" "dados2" "def.par" "escola0" "escola1"

    [21] "escola2" "escola3" "escola4" "escola5" "escola6"

    [26] "escola7" "ex" "f" "freq" "fumo"

    [31] "h" "homem" "i" "idade" "k"

    [36] "L" "leg" "m" "M" "m.read"

    [41] "mat" "mat1" "matriz" "mm" "modelo"

    [46] "mulher" "n" "N" "perf" "phi"

    [51] "pred" "read" "read1" "resposta" "reta1"

    [56] "reta2" "ROCR.simple" "rp" "rs" "sum.plus.2"

    [61] "t" "tab" "title" "v" "val"

    [66] "vcramer" "wdir" "x" "X" "x.data"

    [71] "y" "z" "Z" "z1"

    Voce pode tambem remover objetos que nao serao mais utilizados com seguinte a funcao:

    > rm(x, y)

    Voce pode verificar que tipo de componentes tem cada variavel utilizando a funcao mode()

    > a.x = c("A", "B", "C", "D")

    > b.x = c("A", 1, "B", 1)

    > c.x = c(1, 2, 3, 4)

    > d.x = c("sol", "lua", "noite", "dia")

    > mode(a.x)

    [1] "character"

    > mode(b.x)

    [1] "character"

    > mode(c.x)

    Introducao ao R - Universidade Federal do ABC

  • 8.5 Funcoes miscelaneas uteis 22

    [1] "numeric"

    > mode(d.x)

    [1] "character"

    Voce tambem pode verificar se uma variavel e um fator ou e numerica utiliazando as funcoes

    abaixo.

    > rp = c(1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4)

    > rp rs = 1:10

    > is.factor(rp)

    [1] TRUE

    > is.numeric(rs)

    [1] TRUE

    Voce pode calcular o valor absoluto de um objeto utilizando a funcao abs().

    A funcao lines() e uma funcao que adequa linhas aos graficos de dispersao, podendo ser

    utilizada para unir pontos.

    Observe os exemplos abaixo, para utilizar a funcao spline() e necessario carregar o pacote

    stats.

    > require(stats)

    > require(graphics)

    > x plot(x, abs(x)^2, col = "red")

    > lines(spline(x, abs(x)^2 + (10), n = 101), col = "green")

    > lines(spline(x, abs(x)^2, n = 101), col = "blue")

    > require(stats)

    > require(graphics)

    > x plot(x, abs(x)^2, col = "red")

    > lines(spline(x, abs(x)^2 + (10), n = 101), col = "green")

    > lines(spline(x, abs(x)^2, n = 101), col = "blue")

    Introducao ao R - Universidade Federal do ABC

  • 8.5 Funcoes miscelaneas uteis 23

    l

    l

    l

    l

    l

    l

    l

    ll l l

    l

    l

    l

    l

    l

    l

    l

    l

    5 0 5

    020

    4060

    80

    x

    abs

    (x)^2

    Geralmente e necessario escrever dados$coluna para utilizar os dados de uma tabela ou

    data.frame. Em um trabalho extenso isso pode tornar-se trabalhoso.

    O R possui um mecanismo chamado search pach (caminho de procura ) que facilita isto.

    Utilizando a funcao search() voce vera quais sao os caminhos de procura que o R esta utili-

    zando.

    > search()

    [1] ".GlobalEnv" "package:ROCR" "package:gplots"

    [4] "package:grid" "package:caTools" "package:bitops"

    [7] "package:gdata" "package:gtools" "package:MASS"

    [10] "package:xtable" "package:stats" "package:graphics"

    [13] "package:grDevices" "package:utils" "package:datasets"

    [16] "package:methods" "Autoloads" "package:base"

    Com a funcao attach() voce adiciona o objeto nos caminhos de procura do R.

    Introducao ao R - Universidade Federal do ABC

  • 8.5 Funcoes miscelaneas uteis 24

    > attach(dados)

    The following object(s) are masked from package:base :

    T

    > search()

    [1] ".GlobalEnv" "dados" "package:ROCR"

    [4] "package:gplots" "package:grid" "package:caTools"

    [7] "package:bitops" "package:gdata" "package:gtools"

    [10] "package:MASS" "package:xtable" "package:stats"

    [13] "package:graphics" "package:grDevices" "package:utils"

    [16] "package:datasets" "package:methods" "Autoloads"

    [19] "package:base"

    Note como a digitacao fica mais rapida e pratica:

    > mean(Q2I)

    [1] 32.1

    > table(Q24)

    Q24

    0 1 2 3 4

    34 12 2 26 76

    > summary(Historico)

    Min. 1st Qu. Median Mean 3rd Qu. Max.

    0.00 1.00 3.00 4.47 7.00 22.00

    Para retirar o objeto dos caminhos de procura utilize a funcao abaixo.

    > detach(dados)

    pt calcula uma cauda so

    par() exemplo o que isso faz?

    Introducao ao R - Universidade Federal do ABC

  • 8.6 Funcoes Apply e Tapply 25

    > require(grDevices)

    > plot(1:12, type = "b", main = "fg : axes, ticks and box in gray",

    + fg = gray(0.7), bty = "7", sub = R.version.string)

    > ex mat = c(9, 6, 8, 9, 6, 3, 5, 6, 5, 2, 4, 5, 4, 1, 3, 4)

    Definimos entao uma matriz que contem os elementos do vetor mat.

    > mat1 = matrix(mat, 4, 4)

    > mat1

    [,1] [,2] [,3] [,4]

    [1,] 9 6 5 4

    [2,] 6 3 2 1

    [3,] 8 5 4 3

    [4,] 9 6 5 4

    No caso abaixo a funcao apply() foi utilizada para encontrar a soma dos elementos das

    linhas.

    > apply(mat1, 1, sum)

    [1] 24 12 20 24

    Desta vez, calculou-se a soma dos elementos das colunas.

    > apply(mat1, 2, sum)

    Introducao ao R - Universidade Federal do ABC

  • 8.6 Funcoes Apply e Tapply 26

    [1] 32 20 16 12

    Pode-se utilizar tambem uma funcao definida pelo usuario dentro da funcao apply().

    > sum.plus.2 apply(mat1, 1, sum.plus.2)

    [1] 26 14 22 26

    Onde sum.plus.2 e o nome de uma funcao que soma os elementos de x e adiciona o valor 2.

    A funcao tambem pode ser definida dentro da funcao apply() como no exemplo abaixo:

    > apply(mat1, 1, function(x) sum(x) + 2)

    [1] 26 14 22 26

    Pode-se tambem generalizar uma funcao adicionando um numero qualquer a soma. Neste

    exemplo adicionamos 1 a media das linhas.

    > apply(mat1, 1, function(x, y) sum(x) + y, y = 1)

    [1] 25 13 21 25

    Neste caso a funcao tem duas variaveis, a funcao soma os elementos de x e depois adiciona

    o elemrnto y, que neste caso tem valor 1.

    A funcao tapply(), como a apply() trabalha com matrizes, porem neste caso calcula

    operacoes entre dados com variaveis categoricas.

    > tapply(dados$Renda, dados$Q26, mean)

    0 1 2 3 4

    18767 19143 21303 20140 25915

    A funcao tapply() calculou a media da Renda dos entrevistados de acordo com a quanti-

    dade de livros lidos em 2009.

    > tapply(dados$Renda, list(dados$Q26, dados$Q1), mean)

    0 1

    0 16900 20400

    1 16722 22074

    2 20867 21957

    3 18592 26333

    4 24700 32600

    Introducao ao R - Universidade Federal do ABC

  • 9 Comparacao de grupos de indivduos. 27

    Desta vez a funcao calculou a media dos entrevistas de acordo com a quantidade de livros

    lidos em 2009 e o sexo.

    > tab tab names(tab) = c("Feminino", "Masculino")

    > row.names(tab) = c("Nenhum", "No maximo 2", "Entre tre^s e cinco",

    + "Entre cinco e oito", "Mais de oito")

    > tab

    Feminino Masculino

    Nenhum 16900 20400

    No maximo 2 16722 22074

    Entre tre^s e cinco 20867 21957

    Entre cinco e oito 18592 26333

    Mais de oito 24700 32600

    9 Comparacao de grupos de indivduos.

    9.1 Analise de dados utilizando tabelas de contingencia

    9.1.1 O teste qui-quadrado (X2)

    Primeiramente, vamos ler a tabela e utilizar a funcao tapply() para contar os elementos

    que acertaram ou erraram uma questao de conhecimento geral de acordo com o sexo.

    > dados = read.table("pesquisa8.txt", header = TRUE)

    > tapply(dados$Q1, dados$Q34, table)

    $0

    0 1

    61 39

    $1

    0 1

    27 23

    Vamos colocar os valores em um vetor chamado a.

    > a = c(61, 27, 39, 23)

    Introducao ao R - Universidade Federal do ABC

  • 9.1 Analise de dados utilizando tabelas de contingencia 28

    Criaremos uma matriz b de tamanho 2x2, cujos elementos sao os componentes do vetor a.

    > b = matrix(a, 2, 2)

    > b

    [,1] [,2]

    [1,] 61 39

    [2,] 27 23

    Vamos rodar o teste qui-quadrado sem correcao de Yates, onde b e a matriz com os dados

    e o parametro correct e booleano e true e o default U- o programa faz a correcao de Yates para

    o teste.

    > chisq.test(b, correct = FALSE)

    Pearsons Chi-squared test

    data: b

    X-squared = 0.674, df = 1, p-value = 0.4118

    X-squared corresponde ao Qobs, estatstica do teste qui-quadrado. O parametro df e o grau

    de liberdade da amostra e o p-value e o p-valor encontrado. Podemos ver os valores esperados

    para o teste digitando $expected apos o comando do teste qui-quadrado.

    > chisq.test(b, correct = FALSE)$expected

    [,1] [,2]

    [1,] 58.7 41.3

    [2,] 29.3 20.7

    Veja um exemplo com correcao de Yates.

    > chisq.test(b, correct = TRUE)

    Pearsons Chi-squared test with Yates continuity correction

    data: b

    X-squared = 0.416, df = 1, p-value = 0.519

    > chisq.test(b, correct = TRUE)$expected

    [,1] [,2]

    [1,] 58.7 41.3

    [2,] 29.3 20.7

    Introducao ao R - Universidade Federal do ABC

  • 9.1 Analise de dados utilizando tabelas de contingencia 29

    Pode-se fazer tambem teste Qui-quadrado para diferencas de probabilidade, como a quan-

    tidade de pessoas de cada genero no nosso teste.

    > table(dados$Q1)

    0 1

    88 62

    > c = c(88, 62)

    > chisq.test(c)

    Chi-squared test for given probabilities

    data: c

    X-squared = 4.51, df = 1, p-value = 0.03376

    > chisq.test(c)$expected

    [1] 75 75

    E tambem podemos fazer para a quantidade de pessoas que acertou ou nao uma questao

    de conhecimento geral.

    > table(dados$Q34)

    0 1

    100 50

    > d = c(100, 50)

    > chisq.test(d)

    Chi-squared test for given probabilities

    data: d

    X-squared = 16.7, df = 1, p-value = 4.456e-05

    > chisq.test(d)$expected

    [1] 75 75

    Outro exemplo, resposta da frequencia de acesso a sites de relacionamento.

    > table(dados$Q21)

    0 1 2 3 4

    48 17 5 32 48

    Introducao ao R - Universidade Federal do ABC

  • 9.1 Analise de dados utilizando tabelas de contingencia 30

    > a = c(Diariamente = 48, 1vez por semana = 32)

    > b = c(Algumas vezes por semana = 5, Raramente = 17, Nunca = 48)

    > resposta chisq.test(resposta)$expected

    Diariamente 1vez por semana Algumas vezes por semana

    30 30 30

    Raramente Nunca

    30 30

    > chisq.test(resposta)

    Chi-squared test for given probabilities

    data: resposta

    X-squared = 48.2, df = 4, p-value = 8.574e-10

    9.1.2 O teste Exato de Fisher

    Este teste e bem parecido com o Qui-quadrado. Precisaremos de uma matriz ou tabela.

    Neste caso, vamos iniciar montando uma tabela no prompt com dados de um teste clnico.

    > a = c(5, 0, 1, 3)

    > x = matrix(a, 2, 2)

    > x

    [,1] [,2]

    [1,] 5 1

    [2,] 0 3

    > B = data.frame(x)

    > names(B) = c("Presente", "Ausente")

    > B

    Presente Ausente

    1 5 1

    2 0 3

    > row.names(B) = c("Reac~ao +", "Reac~ao -")

    > B

    Presente Ausente

    Reac~ao + 5 1

    Reac~ao - 0 3

    Introducao ao R - Universidade Federal do ABC

  • 9.1 Analise de dados utilizando tabelas de contingencia 31

    Entao rodaremos o Teste Exato de Fisher utilizando o comando fisher.test().

    > fisher.test(B)

    Fishers Exact Test for Count Data

    data: B

    p-value = 0.04762

    alternative hypothesis: true odds ratio is not equal to 1

    95 percent confidence interval:

    0.694 Inf

    sample estimates:

    odds ratio

    Inf

    9.1.3 V de Cramer

    Nao existe, ate o momento, uma funcao que realize o calculo do V de Crammer automati-

    camente, entao vamos calcula-lo utilizando funcoes basicas da R.

    Vamos primeiramente contar quantas pessoas de cada sexo responderam certo ou errado

    uma questao de conhecimentos gerais.

    > tapply(dados$Q1, dados$Q34, table)

    $0

    0 1

    61 39

    $1

    0 1

    27 23

    Criaremos um vetor a com os valores, e uma matriz b que contem os valores do vetor.

    > a = c(61, 27, 39, 23)

    > b = matrix(a, 2, 2)

    > b

    [,1] [,2]

    [1,] 61 39

    [2,] 27 23

    Introducao ao R - Universidade Federal do ABC

  • 9.1 Analise de dados utilizando tabelas de contingencia 32

    Soma dos elementos das linhas e

    > apply(b, 1, sum)

    [1] 100 50

    Soma dos elementos das colunas e

    > apply(b, 2, sum)

    [1] 88 62

    Podemos encontrar o valor total atraves do comando sum associado a` funcao apply().

    > sum(apply(b, 1, sum))

    [1] 150

    ou...

    > sum(apply(b, 2, sum))

    [1] 150

    Vamos guardar as informacoes do teste qui-quadrado em uma variavel z.

    > z = chisq.test(b, correct = TRUE)

    > z

    Pearsons Chi-squared test with Yates continuity correction

    data: b

    X-squared = 0.416, df = 1, p-value = 0.519

    Note que utilizando o comando z$statistic, o programa retorna o valor do X-squared.

    > z$statistic

    X-squared

    0.416

    E utilizando o comando z$expected, a plataforma mostra a matriz de observacoes esperadas.

    > z$expected

    [,1] [,2]

    [1,] 58.7 41.3

    [2,] 29.3 20.7

    Introducao ao R - Universidade Federal do ABC

  • 9.1 Analise de dados utilizando tabelas de contingencia 33

    Sabemos que o V de Cramer pode ser calculado desta forma:

    > v = (((0.4158)^2)/(150) * (1))^0.5

    > v

    [1] 0.0339

    A formula geral abaixo foi criada para que o usuario nao tenha que digitar os valores,

    evitando assim possveis erros de digitacao.

    Note que z$statistic e o valor da estatstica do teste qui-quadrado; sum(apply(b,1,sum) e

    o tamanho da amostra e min(nrow (b),ncol(b))e o menor valor entre o numero de colunas e

    numero de linhas.

    > vcramer = sqrt(((z$statistic)^2)/(sum(apply(b, 1, sum))) * (min(nrow(b),

    + ncol(b)) - 1))

    > vcramer

    X-squared

    0.0340

    9.1.4 Phi de Cramer

    Ja o Phi de Cramer, e semelhante ao V de Cramer porem nao tem o elemento minimo

    entre n0 colunas e nz de linhas multiplicando o tamanho da amostra. Portanto, uma formula

    geral para ele e dada por:

    > phi = sqrt(((z$statistic)^2)/(sum(apply(b, 1, sum))))

    > phi

    X-squared

    0.0340

    Uma vez que o grau de liberdade desse exemplo e 1, o phi e o v tem valores iguais. No

    exemplo abaixo, o grau de liberdade e maior e os valores diferem.

    > tapply(dados$Q3, dados$Q28, table)

    $0

    0 1 2 3 4 5 7

    1 2 1 1 2 3 2

    $1

    Introducao ao R - Universidade Federal do ABC

  • 9.1 Analise de dados utilizando tabelas de contingencia 34

    5

    3

    $2

    0 1 2 3 4 5 7

    3 6 22 14 7 7 1

    $3

    0 1 2 3 4

    1 2 3 1 2

    $4

    1 2 3 4 5 6 7

    1 17 11 23 5 4 5

    > m = c(1, 0, 3, 3, 0, 2, 0, 6, 2, 1, 1, 0, 22, 3, 17, 1, 0, 14,

    + 1, 11, 2, 0, 7, 2, 23, 3, 3, 7, 0, 5, 0, 0, 0, 0, 4, 2, 0,

    + 1, 0, 5)

    > n = matrix(m, 5, 8)

    > n

    [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]

    [1,] 1 2 1 1 2 3 0 2

    [2,] 0 0 0 0 0 3 0 0

    [3,] 3 6 22 14 7 7 0 1

    [4,] 3 2 3 1 2 0 0 0

    [5,] 0 1 17 11 23 5 4 5

    > apply(n, 1, sum)

    [1] 12 3 60 11 66

    > apply(n, 2, sum)

    [1] 7 11 43 27 34 18 4 8

    > sum(apply(n, 1, sum))

    Introducao ao R - Universidade Federal do ABC

  • 9.2 O teste T Pareado 35

    [1] 152

    > k = chisq.test(n)

    > chisq.test(n, correct = TRUE)$expected

    [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]

    [1,] 0.553 0.868 3.395 2.132 2.684 1.421 0.316 0.632

    [2,] 0.138 0.217 0.849 0.533 0.671 0.355 0.079 0.158

    [3,] 2.763 4.342 16.974 10.658 13.421 7.105 1.579 3.158

    [4,] 0.507 0.796 3.112 1.954 2.461 1.303 0.289 0.579

    [5,] 3.039 4.776 18.671 11.724 14.763 7.816 1.737 3.474

    > vcramer = sqrt(((k$statistic)^2)/(sum(apply(n, 1, sum))) * (nrow(n) -

    + 1))

    > vcramer

    X-squared

    11.9

    > v = (((73.256)^2)/(150) * (4))^0.5

    > phi = sqrt(((k$statistic)^2)/(sum(apply(n, 1, sum))))

    > phi

    X-squared

    5.94

    9.2 O teste T Pareado

    Primeiramente vamos abrir arquivo com os dados que serao utilizados, conforme explicado

    anteriormente.

    > dados = read.table("pesquisa8.txt", header = TRUE)

    Vamos realizar o teste utilizando o comando t.test(), cujos parametros sao:

    dados$Q1 parametro x

    dados$Celebridade parametro y

    pared=TRUE argumento booleano que define a paridade. O default e FALSE.Como esse exemplo e pareado, entao o comando sera:

    > t.test(dados$Q1, dados$Celebridade, pared = TRUE)

    Introducao ao R - Universidade Federal do ABC

  • 9.3 O teste T para amostras independentes 36

    Welch Two Sample t-test

    data: dados$Q1 and dados$Celebridade

    t = -17.7, df = 151, p-value < 2.2e-16

    alternative hypothesis: true difference in means is not equal to 0

    95 percent confidence interval:

    -9.01 -7.20

    sample estimates:

    mean of x mean of y

    0.413 8.520

    A sada do teste mostra a estatstica (t = -17.7123), o p-valor (p-value < 2.2e-16), a media

    da componente x (0.4133333) e da componente y (8.5200000). Neste caso, a diferenca entre as

    medias dos dois grupos e diferente de zero.

    9.3 O teste T para amostras independentes

    Analogamente ao Teste T pareado, vamos abrir um arquivo com os dados e entao utilizar o

    comando t.test(). Uma vez que o teste e para duas amostras independentes, devemos utilizar

    o parametro booleano pared como FALSE ou simplesmente nao utiliza-lo (default).

    > dados2 = read.table("teste_t.txt", header = TRUE)

    > t.test(dados2$A, dados2$B)

    Welch Two Sample t-test

    data: dados2$A and dados2$B

    t = 1.15, df = 49.5, p-value = 0.2548

    alternative hypothesis: true difference in means is not equal to 0

    95 percent confidence interval:

    -0.645 2.380

    sample estimates:

    mean of x mean of y

    5.13 4.26

    9.4 Analise de Variancia (Anova) ou teste F

    Ate agora, trabalhamos com testes com ate duas amostras. Ha situacoes porem, em que

    e necessario fazer comparacoes entre mais de dois grupos. Para esses casos, pode-se utilizar a

    Analise de Variancia, conhecida como ANOVA.

    Introducao ao R - Universidade Federal do ABC

  • 9.4 Analise de Variancia (Anova) ou teste F 37

    Exemplo 1. Primeiramente, vamos ler os dados de um arquivo que contem dados de

    quatro grupos de indivduos, denotados pela variavel A:

    > A = read.table("anova2.txt", header = TRUE)

    > A

    A B C D

    1 78 78 79 77

    2 88 78 73 69

    3 87 83 79 75

    4 88 81 75 70

    5 83 78 77 74

    6 82 81 78 83

    7 81 81 80 80

    8 80 82 78 75

    9 80 76 83 76

    10 89 76 84 75

    Vamos criar um vetor com fatores de 1 a 4 que identifiquem os valores de A, precisamos entao

    de 10 vezes cada valor. Utilizaremos a funcao gl().

    > L = gl(4, 10)

    > L

    [1] 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4

    [39] 4 4

    Levels: 1 2 3 4

    Sera criado um vetor N que contem os valores de A, que pode ser vista como uma conversao

    de matriz para vetor.

    > N N

    [1] 78 88 87 88 83 82 81 80 80 89 78 78 83 81 78 81 81 82 76 76 79 73 79 75 77

    [26] 78 80 78 83 84 77 69 75 70 74 83 80 75 76 75

    Definimos entao um data.frame() formado por L e N.

    > a.vert

  • 9.4 Analise de Variancia (Anova) ou teste F 38

    L N

    1 1 78

    2 1 88

    3 1 87

    4 1 88

    5 1 83

    6 1 82

    7 1 81

    8 1 80

    9 1 80

    10 1 89

    11 2 78

    12 2 78

    13 2 83

    14 2 81

    15 2 78

    16 2 81

    17 2 81

    18 2 82

    19 2 76

    20 2 76

    21 3 79

    22 3 73

    23 3 79

    24 3 75

    25 3 77

    26 3 78

    27 3 80

    28 3 78

    29 3 83

    30 3 84

    31 4 77

    32 4 69

    33 4 75

    34 4 70

    35 4 74

    36 4 83

    37 4 80

    38 4 75

    39 4 76

    40 4 75

    Utilizaremos entao a funcao aov(), que e a funcao de Analise de Variancia. Guardaremos

    o resultado dessa funcao em uma variavel X.

    > X X

    Call:

    aov(formula = N ~ L)

    Terms:

    L Residuals

    Sum of Squares 342 456

    Deg. of Freedom 3 36

    Residual standard error: 3.56

    Estimated effects may be unbalanced

    Utilizando a funcao summary() teremos uma tabela com o resumo dos resultados.

    > summary(X)

    Df Sum Sq Mean Sq F value Pr(>F)

    L 3 342 114 9.01 0.00014 ***

    Residuals 36 456 13

    ---

    Signif. codes: 0 S***S 0.001 S**S 0.01 S*S 0.05 S.S 0.1 S S 1

    O resultado da tabela de Anova, mostrou que as diferencas entre as medias sao altamente

    significativa(s). Conclui-se entao que ha uma diferenca entre os grupos, porem podemos verificar

    entre quais pares de grupos as diferencas sao significantes utilizando o teste Tukey HSD.

    > TukeyHSD(X)

    Introducao ao R - Universidade Federal do ABC

  • 9.4 Analise de Variancia (Anova) ou teste F 39

    Tukey multiple comparisons of means

    95% family-wise confidence level

    Fit: aov(formula = N ~ L)

    $L

    diff lwr upr p adj

    2-1 -4.2 -8.48 0.0848 0.056

    3-1 -5.0 -9.28 -0.7152 0.017

    4-1 -8.2 -12.48 -3.9152 0.000

    3-2 -0.8 -5.08 3.4848 0.958

    4-2 -4.0 -8.28 0.2848 0.075

    4-3 -3.2 -7.48 1.0848 0.203

    Faremos agora um diagrama de dispersao com os resultados o teste TukeyHSD(), que pode

    ser visto no grafico abaixo.

    > plot(TukeyHSD(X, ordered = TRUE))

    0 5 10

    12

    13

    23

    14

    24

    34

    95% familywise confidence level

    Differences in mean levels of L

    Introducao ao R - Universidade Federal do ABC

  • 9.4 Analise de Variancia (Anova) ou teste F 40

    Pode-se perceber atraves na figura acima?? que existe diferencas significativas entre as du-

    plas 1-3 e 1-4.

    Exemplo 2. Neste exemplo chamaremos o conjunto de dados de Z.

    > mat = c(87, 90, 67, 99, 686, 18, 92, 46, 38, 65, 426, 35, 52,

    + 44, 455, 45, 617, 83, 94, 53, 572, 716, 89, 63, 58, 69, 80,

    + 56, 34, 21, 54, 78, 90, 25, 48, 252, 27, 38, 45, 62, 92,

    + 252, 450, 54, 122, 957, 750, 892)

    > mat

    [1] 87 90 67 99 686 18 92 46 38 65 426 35 52 44 455 45 617 83 94

    [20] 53 572 716 89 63 58 69 80 56 34 21 54 78 90 25 48 252 27 38

    [39] 45 62 92 252 450 54 122 957 750 892

    > length(mat)

    [1] 48

    > Z = matrix(mat, 16, 3, dimnames = list(c(NULL), c("A", "B", "C")))

    > X

    Call:

    aov(formula = N ~ L)

    Terms:

    L Residuals

    Sum of Squares 342 456

    Deg. of Freedom 3 36

    Residual standard error: 3.56

    Estimated effects may be unbalanced

    > L = gl(3, 16)

    > L

    [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3

    [39] 3 3 3 3 3 3 3 3 3 3

    Levels: 1 2 3

    > M = c(Z)

    > M

    Introducao ao R - Universidade Federal do ABC

  • 9.4 Analise de Variancia (Anova) ou teste F 41

    [1] 87 90 67 99 686 18 92 46 38 65 426 35 52 44 455 45 617 83 94

    [20] 53 572 716 89 63 58 69 80 56 34 21 54 78 90 25 48 252 27 38

    [39] 45 62 92 252 450 54 122 957 750 892

    > a.vert L is.factor(L)

    [1] TRUE

    > anova anova

    Call:

    aov(formula = M ~ L)

    Terms:

    L Residuals

    Sum of Squares 113478 2950178

    Deg. of Freedom 2 45

    Residual standard error: 256

    Estimated effects may be unbalanced

    > summary(anova)

    Df Sum Sq Mean Sq F value Pr(>F)

    L 2 113478 56739 0.87 0.43

    Residuals 45 2950178 65560

    Introducao ao R - Universidade Federal do ABC

  • 9.4 Analise de Variancia (Anova) ou teste F 42

    > TukeyHSD(anova)

    Tukey multiple comparisons of means

    95% family-wise confidence level

    Fit: aov(formula = M ~ L)

    $L

    diff lwr upr p adj

    2-1 24.5 -195 244 0.960

    3-1 113.2 -106 333 0.430

    3-2 88.7 -131 308 0.593

    > plot(TukeyHSD(anova, ordered = TRUE))

    200 100 0 100 200 300

    32

    31

    21

    95% familywise confidence level

    Differences in mean levels of L

    Figura 1: Grafico das diferencas entre os grupos de Z

    Ja neste exemplo, percebe-se tanto pelos resultados mostrados como pelo grafico que nao

    ha diferencas significativas entre os grupos analizados.

    Introducao ao R - Universidade Federal do ABC

  • 9.5 Medidas de Diagnostico 43

    9.5 Medidas de Diagnostico

    9.5.1 Curva ROC

    Para fazer curva ROC no R, voce tera que baixar o pacote Rocr que precisa de outros

    pacotes para funcionar. Baixe os seguinte pacotes: Rocr, gplots, bitops, caTools, gdata e

    gtools. Verifique como baixar e instalar pacotes no R na secao

    > library(ROCR)

    > data(ROCR.simple)

    > pred perf plot(perf, col = rainbow(10))

    > plot(perf, col = rainbow(10))

    False positive rate

    Tru

    e p

    ositiv

    e r

    ate

    0.0 0.2 0.4 0.6 0.8 1.0

    0.0

    0.2

    0.4

    0.6

    0.8

    1.0

    Introducao ao R - Universidade Federal do ABC

  • 9.5 Medidas de Diagnostico 44

    9.5.2 Regressao linear simples

    Primeiro calcularemos a correlacao entre a quantidade de acertos em um teste com a idade

    do entrevistado.

    > cor.test(idade, h)

    Pearsons product-moment correlation

    data: idade and h

    t = 5.9, df = 148, p-value = 2.314e-08

    alternative hypothesis: true correlation is not equal to 0

    95 percent confidence interval:

    0.297 0.558

    sample estimates:

    cor

    0.437

    A funcao a seguir aplica a regressao linear simples pelo metodo de quadrados mnimos, onde

    h e a variavel resposta e idade e a variavel explicativa.

    > modelo summary(modelo)

    Call:

    lm(formula = h ~ idade)

    Residuals:

    Min 1Q Median 3Q Max

    -9.482 -2.652 -0.844 2.077 13.445

    Coefficients:

    Estimate Std. Error t value Pr(>|t|)

    (Intercept) 0.6042 0.7434 0.81 0.42

    idade 0.1205 0.0204 5.91 2.3e-08 ***

    ---

    Signif. codes: 0 S***S 0.001 S**S 0.01 S*S 0.05 S.S 0.1 S S 1

    Residual standard error: 4.3 on 148 degrees of freedom

    Multiple R-squared: 0.191, Adjusted R-squared: 0.185

    F-statistic: 34.9 on 1 and 148 DF, p-value: 2.31e-08

    Introducao ao R - Universidade Federal do ABC

  • 9.5 Medidas de Diagnostico 45

    O valor do intercepto (coeficiente linear) de y e 0.6042 e o valor do gradiente (coeficiente

    angular) e 0.1205. Entao a formula da regressao e y = 0.1205x + 0.6042, ou no nosso caso,

    h = 0.1205idade+ 0.6042. Na plataforma R, a ANOVA verifica a significancia da regressao. O

    valor de F e significativo com 1 e 148 graus de liberdade e o p-valor < 0.0001 entao conclumos

    que a regressao e significante.

    Podemos obter detalhes sobre a regressao aplicando a ANOVA.

    > anova(modelo)

    Analysis of Variance Table

    Response: h

    Df Sum Sq Mean Sq F value Pr(>F)

    idade 1 646 646 34.9 2.3e-08 ***

    Residuals 148 2740 19

    ---

    Signif. codes: 0 S***S 0.001 S**S 0.01 S*S 0.05 S.S 0.1 S S 1

    Agora plotaremos o grafico. E entao, uma reta de regressao podera ser adicionada ao

    grafico:

    > plot(idade, h, xlab = "Idade", ylab = "Acertos", main = "Acertos por Idade",

    + col = "blue")

    > abline(modelo, col = "red")

    Introducao ao R - Universidade Federal do ABC

  • 9.5 Medidas de Diagnostico 46

    l

    l

    ll

    l ll

    l

    ll

    l

    l

    llll

    ll

    l

    l

    lll lll

    l

    l

    ll

    l

    l

    l

    l

    l

    l

    l

    l

    l

    lll

    llll

    l

    ll

    l

    ll

    l

    ll

    llll l

    l

    lll

    l

    l

    l

    l

    l

    l

    l

    l

    l

    l

    l

    ll l

    l ll

    l

    l

    l

    llll

    l

    l llll

    l

    l

    l

    l

    l

    l

    l

    l l

    l

    ll

    l

    l

    l

    ll

    l lll

    l

    l

    ll

    l

    ll

    l

    l

    l

    l

    l

    l

    ll

    l

    l

    l

    l

    ll

    l

    l

    lll

    l

    ll

    l

    l

    ll

    ll

    20 30 40 50 60 70 80

    05

    1015

    20

    Acertos por Idade

    Idade

    Acer

    tos

    Voce tambem pode adcionar a reta utilizando a funcao abaixo e adicionar um texto contendo

    a funcao de regressao.

    > plot(idade, h, xlab = "Idade", ylab = "Acertos", main = "Acertos por Idade",

    + col = "blue")

    > lines(idade, 0.1205 * idade + 0.6042)

    > text(30, 22, "y=0.1205x + 0.6042, p

  • 9.5 Medidas de Diagnostico 47

    l

    l

    ll

    l ll

    l

    ll

    l

    l

    llll

    ll

    l

    l

    lll lll

    l

    l

    ll

    l

    l

    l

    l

    l

    l

    l

    l

    l

    lll

    llll

    l

    ll

    l

    ll

    l

    ll

    llll l

    l

    lll

    l

    l

    l

    l

    l

    l

    l

    l

    l

    l

    l

    ll l

    l ll

    l

    l

    l

    llll

    l

    l llll

    l

    l

    l

    l

    l

    l

    l

    l l

    l

    ll

    l

    l

    l

    ll

    l lll

    l

    l

    ll

    l

    ll

    l

    l

    l

    l

    l

    l

    ll

    l

    l

    l

    l

    ll

    l

    l

    lll

    l

    ll

    l

    l

    ll

    ll

    20 30 40 50 60 70 80

    05

    1015

    20

    Acertos por Idade

    Idade

    Acer

    tos

    Exemplo 2. No exemplo abaixo, vamos ler uma tabela que esta online e adicionar duas

    retas de regressao ao grafico de dispersao dos dados. A primeira segue o metodo dos mnimos

    quadrados enquanto a segunda segue o Least Median Squares(lmsreg) que e um metodo de

    ajuste de reta que e robusto, pois tenta minimizar alguma funcao dos resduos ao quadrado

    ordenados. (4)

    > fumo = read.table("http://www.im.ufrj.br/~flavia/aed06/fumo.txt",

    + header = TRUE)

    > reta1 = lm(fumo$imorte ~ fumo$ifumo)

    > reta2 = lmsreg(fumo$imorte ~ fumo$ifumo)

    > plot(fumo$ifumo, fumo$imorte, main = "Fumo versus ca^ncer")

    > abline(reta1$coefficients, col = "blue")

    > abline(reta2$coefficients, col = "red")

    Introducao ao R - Universidade Federal do ABC

  • 9.5 Medidas de Diagnostico 48

    l

    l

    ll

    l

    l

    ll

    l

    l

    l

    l

    l

    l

    ll

    l

    l

    l

    l

    l

    l

    l

    l

    l

    70 80 90 100 110 120 130

    6080

    100

    120

    140

    Fumo versus cncer

    fumo$ifumo

    fum

    o$im

    orte

    9.5.3 Regressao linear multipla

    Para realizar analise de regressao multipla, utilizam-se as mesmas funcoes usadas na re-

    gressao simples. Note, porem, que ao inves de utilizar somente a idade como variavel preditora

    utiliza-se idade e renda.

    > modelo summary(modelo)

    Call:

    lm(formula = h ~ idade + dados$Renda, data = dados)

    Residuals:

    Min 1Q Median 3Q Max

    -8.491 -2.481 -0.738 2.051 11.992

    Coefficients:

    Estimate Std. Error t value Pr(>|t|)

    Introducao ao R - Universidade Federal do ABC

  • 9.5 Medidas de Diagnostico 49

    (Intercept) -1.68e+00 9.60e-01 -1.75 0.08155 .

    idade 1.26e-01 1.97e-02 6.38 2.1e-09 ***

    dados$Renda 1.05e-04 2.93e-05 3.58 0.00047 ***

    ---

    Signif. codes: 0 S***S 0.001 S**S 0.01 S*S 0.05 S.S 0.1 S S 1

    Residual standard error: 4.14 on 147 degrees of freedom

    Multiple R-squared: 0.255, Adjusted R-squared: 0.245

    F-statistic: 25.2 on 2 and 147 DF, p-value: 3.83e-10

    > anova(modelo)

    Analysis of Variance Table

    Response: h

    Df Sum Sq Mean Sq F value Pr(>F)

    idade 1 646 646 37.6 7.5e-09 ***

    dados$Renda 1 219 219 12.8 0.00047 ***

    Residuals 147 2521 17

    ---

    Signif. codes: 0 S***S 0.001 S**S 0.01 S*S 0.05 S.S 0.1 S S 1

    Para facilitar a visualizacao podemos plotar os quatro graficos juntos.

    > layout(matrix(c(1, 2, 3, 4), 2, 2))

    > plot(modelo)

    Introducao ao R - Universidade Federal do ABC

  • 9.5 Medidas de Diagnostico 50

    2 4 6 8 10

    10

    05

    10

    Fitted values

    Res

    idua

    lsl

    l

    llllll

    ll

    l

    l

    lllll

    l

    l

    l

    ll

    llll

    l

    lll

    l

    ll

    l

    l

    ll

    l

    l l

    ll

    ll l

    l

    ll

    ll

    lll

    lll l llll l

    lll

    l

    l

    l

    l

    l

    ll

    l

    lll

    ll

    lll

    l l

    l

    ll

    ll

    l

    ll

    lll

    l

    ll

    l

    ll l

    l

    l

    l

    ll

    l

    l

    l

    ll

    l

    l

    l

    ll

    l

    ll

    l

    ll

    ll

    l

    l

    l

    l

    ll

    l

    l

    l

    ll

    l

    l

    lll

    l

    l

    l

    l

    ll

    ll

    ll

    Residuals vs Fitted10714270

    ll

    llllll

    ll

    l

    l

    lllll

    l

    l

    l

    ll

    llll

    l

    lll

    l

    ll

    l

    l

    ll

    l

    l l

    ll

    lll

    l

    l

    ll

    l

    lll

    lll

    llll

    ll

    lll

    l

    l

    l

    l

    l

    l

    l

    l

    lll

    ll

    lll

    ll

    l

    ll

    ll

    l

    l

    ll l

    l

    l

    ll

    l

    lll

    l

    l

    l

    l

    l

    l

    l

    l

    ll

    l

    l

    l

    ll

    l

    ll

    l

    ll

    ll

    l

    l

    l

    l

    ll

    l

    l

    l

    ll

    l

    l

    lll

    l

    l

    l

    l

    ll

    ll

    ll

    2 1 0 1 2

    2

    01

    23

    Theoretical Quantiles

    Stan

    dard

    ized

    resid

    uals

    Normal QQ10714270

    2 4 6 8 10

    0.0

    0.5

    1.0

    1.5

    Fitted values

    Sta

    nda

    rdiz

    ed

    resi

    duals

    ll

    ll

    lll

    l

    l

    l

    l

    llll

    l

    l

    l

    l

    l

    l

    ll

    lll

    l

    l

    ll

    l

    l

    l

    l

    ll

    l

    l

    lll

    l ll l

    l

    l

    l

    l

    l

    ll

    l

    l

    ll

    l l

    ll

    ll

    ll

    l

    l

    ll

    l

    l

    l

    l

    l l

    ll

    l

    l

    ll

    ll l

    l

    ll

    ll

    l

    l

    l

    ll

    l

    l

    l

    l

    l

    l

    l l

    l

    l

    l

    l

    l

    l

    l

    l

    ll

    l

    l

    l

    ll

    l

    l

    l

    l

    l

    l

    l

    lll

    l

    ll

    l

    l

    l

    l

    ll

    l

    l

    l

    ll

    l

    l

    l

    l

    lll

    l

    l

    l

    ScaleLocation10714270

    0.00 0.02 0.04 0.06 0.08

    2

    01

    23

    Leverage

    Stan

    dard

    ized

    resid

    uals

    ll

    llllll

    ll

    l

    l

    lllll

    l

    l

    l

    lll lll

    l

    lll

    l

    ll

    l

    l

    ll

    l

    l l

    ll

    lll

    l

    ll

    ll

    lllll ll ll ll l

    lll

    l

    l

    l

    l

    l

    ll

    l

    lll

    ll

    lll

    l l

    l

    ll

    ll

    l

    ll

    lll

    l

    ll

    l

    ll l

    l

    l

    l

    ll

    l

    l

    l

    l l

    l

    l

    l

    ll

    l

    ll

    l

    ll

    ll

    l

    l

    l

    l

    lll

    l

    l

    lll

    l

    ll l

    l

    l

    l

    l

    ll

    ll

    ll

    Cook's distance

    Residuals vs Leverage107

    144

    142

    Apos utilizar a funcao layout com a qual pode-se plotar n graficos em um so arquivo, deve-se

    utilizar a funcao abaixo para retornar ao default.

    > def.par par(def.par)

    Abaixo uma lista de funcoes uteis para essa analise:

    coefficients(fit) coeficienye do modelo

    confint(fit, level=0.95) intervalo de confianca para o modelo

    fitted(fit) valores preditos

    residuals(fit) resduos

    anova(fit) tabela anova

    vcov(fit) matriz de covariancia

    influence(fit) diagnostico da regressao

    9.5.4 Analise Discriminante

    No site http://finzi.psych.upenn.edu/R/library/datasets/html/00Index.html o usuario tem

    acesso a lista de tabelas de dados que vem no R e sao carregados automaticamente. O iris3 e

    Introducao ao R - Universidade Federal do ABC

  • 9.5 Medidas de Diagnostico 51

    uma das tabelas e sera utilizada na analise abaixo. O exemplo abaixo foi retirado do topico de

    ajuda do R sobre Linear Discrimant Analysis.

    > x.data y table(x.data$Sp[y])

    c s v

    29 23 23

    > z predict(z, x.data[-y, ])$class

    [1] s s s s s s s s s s s s s s s s s s s s s s s s s s s c c c c c c c c c c c

    [39] c c c v c c c c c c v v v v v v v v v v v v v v v v c v v v v v v v v v v

    Levels: c s v

    > (z1

  • 10 Graficos 52

    Proportion of trace:

    LD1 LD2

    0.998 0.002

    10 Graficos

    10.1 Parametros gerais

    Em geral, os comandos de graficos tem a seguinte forma:

    > tipodografico( x, y, parametro1, parametro2, parametro3, parametro4...)

    A seguir encontram-se os principais parametros graficos:

    main=Ttulo do Grafico este parametro adiciona um ttulo ao grafico

    col=c(2,3) com este parametro voce escolhe cores para o grafico

    breaks= 20 altera a escala do eixo X, por exemplo, quanto maior o valor,

    maior a quantidade de barras em um grafico de barras.

    xlim = range(0,100) este parametro limita o intervalo de valores do eixo X

    ylim= range(0,60) este parametro limita o intervalo de valores do eixo Y

    xlab=Nome do eixo X este parametro nomeia o eixo X

    ylab=Nome do eixo Y este parametro nomeia o eixo Y

    init.angle = 45 este parametro define o angulo inicial do grafico de pizza

    width = 480 este parametro define a largura do grafico

    height = 480 este parametro define a altura do grafico

    units = px este parametro define a unidade de medida do grafico

    bg=transparent este parametro define a cor de fundo do grafico

    Alem desses parametros podem se adicionar aos graficos textos e legendas. A legenda e

    adicionada com a funcao legend() que tem os seguintes parametros:

    topright localizacao da legenda que pode ser bottomright, bottom,

    bottomleft, left, topleft, top, topright, right, center

    leg nome dos itens da legenda

    pch=15 tipo de smbolo da legenda

    title=Legenda ttulo da legenda

    col cor do itens da legendaPara cada numero no parametro pch e colocado um smbolo. Abaixo um grafico com os

    smbolos possveis.Exemplo retirado do site http://www.harding.edu/fmccown/R/

    Introducao ao R - Universidade Federal do ABC

  • 10.1 Parametros gerais 53

    > plot(1, 1, xlim = c(1, 5.5), ylim = c(0, 7), type = "n", ann = FALSE)

    > text(1:5, rep(6, 5), labels = c(0:4), cex = 1:5, col = 1:5)

    > points(1:5, rep(5, 5), cex = 1:5, col = 1:5, pch = 0:4)

    > text((1:5) + 0.4, rep(5, 5), cex = 0.6, (0:4))

    > points(1:5, rep(4, 5), cex = 2, pch = (5:9))

    > text((1:5) + 0.4, rep(4, 5), cex = 0.6, (5:9))

    > points(1:5, rep(3, 5), cex = 2, pch = (10:14))

    > text((1:5) + 0.4, rep(3, 5), cex = 0.6, (10:14))

    > points(1:5, rep(2, 5), cex = 2, pch = (15:19))

    > text((1:5) + 0.4, rep(2, 5), cex = 0.6, (15:19))

    > points((1:6) * 0.8 + 0.2, rep(1, 6), cex = 2, pch = (20:25))

    > text((1:6) * 0.8 + 0.5, rep(1, 6), cex = 0.6, (20:25))

    1 2 3 4 5

    01

    23

    45

    67

    0 1 2 3 4l0 1 2 3 4

    5 6 7 8 9

    l l10 11 12 13 14

    l l15 16 17 18 19

    l l20 21 22 23 24 25

    Exemplo da utilizacao da legenda.

    > leg = c("Feminino", "Masculino")

    > legend("topright", leg, pch = 15, title = "Legenda", col = c("orange",

    + "violet"))

    Introducao ao R - Universidade Federal do ABC

  • 10.2 Grafico de setores(ou de pizza) 54

    O texto deve ser inserido utilizando a funcao text(). Cujos parametros basicos sao:

    0, localizacao em x do texto

    -0.95 localizacao em y do texto

    texto texto a ser inserido no grafico.

    > text(0, -0.95, "texto")

    10.2 Grafico de setores(ou de pizza)

    O comando para grafico de setores e pie(). Observe que no exemplo abaixo, determinamos

    a variavel freq como sendo uma conurbacao dos numeros 88 e 62. Nomeamos essa conurbacao

    atraves do comando names() que nomeia os componentes da variavel freq. Enfim utilizamos a

    funcao pie(), o parametro main e o parametro col.

    > freq names(freq) = c("Mulheres", "Homens")

    > pie(freq, main = "Sexo", col = c(2, 3))

    > text(0, -0.95, "texto")

    E o grafico ficou da seguinte forma:

    Introducao ao R - Universidade Federal do ABC

  • 10.3 Grafico de barras 55

    Mulheres

    Homens

    Sexo

    texto

    10.3 Grafico de barras

    O grafico de barras ou de colunas pode ser realizado usando a funcao barplot(). Neste

    caso foi utilizado as funcoes c() e legend(), explicadas anteriormente.

    > col = c("orange", "violet")

    > barplot(table(dados$Q1), main = "Sexo", ylim = range(0, 100),

    + col = col)

    > leg = c("Feminino", "Masculino")

    > legend("topright", leg, pch = 15, title = "Legenda", col = col)

    Introducao ao R - Universidade Federal do ABC

  • 10.4 Histograma 56

    0 1

    Sexo

    020

    4060

    8010

    0

    LegendaFemininoMasculino

    Atencao! Lembre-se de que a funcao barplot() deve ser utilizada sempre com a funcao

    table().

    10.4 Histograma

    O grafico de Histograma e muito utilizado e pode ser feito atraves do comando hist()

    como no exemplo abaixo:

    > hist(dados$Renda, main = "Indice de Renda", xlab = "Indice de Renda (R$)",

    + ylab = "Quantidade de Indivduos")

    > title = ("Histograma do Indice de Renda")

    Introducao ao R - Universidade Federal do ABC

  • 10.4 Histograma 57

    Histogram of dados$Renda

    ndice de Renda (R$)

    Quan

    tidad

    e de

    Indiv

    duo

    s

    0 10000 20000 30000 40000 50000

    05

    1015

    2025

    30

    Note que o histograma ficou desregular, porem utilizando o parametro breaks podemos

    torna-lo mais condizente com o formato de um histograma.

    > hist(dados$Renda, breaks = 5, main = "Histograma do Indice de Renda",

    + xlab = "Indice de Renda (R$)", ylab = "Quantidade de Indivduos")

    Introducao ao R - Universidade Federal do ABC

  • 10.5 Boxplots 58

    Histograma do ndice de Renda

    ndice de Renda (R$)

    Quan

    tidad

    e de

    Indiv

    duo

    s

    0 10000 20000 30000 40000 50000

    010

    2030

    40

    10.5 Boxplots

    A funcao boxplot() cria graficos do tipo boxplot conforme os exemplos a seguir:

    > boxplot(dados$Q18, main = "Boxplot da Quantidade de Horas de Internet",

    + xlab = NULL, ylab = "Horas")

    O comando acima vai criar o grafico abaixo:

    Introducao ao R - Universidade Federal do ABC

  • 10.5 Boxplots 59

    llll

    l

    l

    l

    l

    l

    010

    2030

    4050

    6070

    Boxplot da Quantidade de Horas de Internet

    Hor

    as

    Caso voce nao queira que os outliers aparecam no grafico pode adicionar o parametro como

    FALSE.

    > boxplot(dados$Q18, outline = FALSE, main = "Quantidade de Horas de Internet",

    + xlab = NULL, ylab = "Horas")

    E entao voce tera um grafico assim:

    Introducao ao R - Universidade Federal do ABC

  • 10.5 Boxplots 60

    010

    2030

    40

    Quantidade de Horas de Internet

    Hor

    as

    Outro exemplo, fazendo uma comparacao entre boxplots utilizando como argumento mais

    elementos. Neste caso, os dados referem-se a quantidade de acertos em um teste de conheci-

    mento separados por faixa de escolaridade:

    > boxplot(escola0$Q2934soma, escola1$Q2934soma, escola2$Q2934soma,

    + escola3$Q2934soma, escola4$Q2934soma, escola5$Q2934soma,

    + escola6$Q2934soma, escola7$Q2934soma, names = c("1", "2",

    + "3", "4", "5", "6", "7", "8"), xlab = "Escolaridades",

    + main = "Boxplot do Coeficiente de Intelectualidade por Escolaridade",

    + ylab = "Intelectualidade")

    Introducao ao R - Universidade Federal do ABC

  • 10.6 Grafico de dispersao 61

    l

    1 2 3 4 5 6 7 8

    02

    46

    810

    Boxplot do Coeficiente de Intelectualidade por Escolaridade

    Escolaridades

    Inte

    lect

    ualid

    ade

    10.6 Grafico de dispersao

    Os graficos de dispersao podem ser criados utilizando a funcao plot().

    > plot(h, t, xlab = "Acertos de Personagens Historicas", pch = 0,

    + ylab = "Coeficiente de Concentrac~ao")

    Pode-se adicionar ao grafico ttulo e subttulo com a funcao title(), cujos parametros

    principais sao:

    Main Ttulo do grafico

    Sub Subttulo do grafico

    Font.main Fonte do ttulo

    Font.sub Fonte do subttulo

    Col.main Cor do ttulo

    Col.sub Cor do subttulo

    > title(main = "Ttulo", sub = "Subttulo", font.main = 4, col.main = "red",

    + col.sub = "green", font.sub = 3)

    Introducao ao R - Universidade Federal do ABC

  • 10.7 Exportando o grafico. 62

    0 5 10 15 20

    0.2

    0.4

    0.6

    0.8

    1.0

    1.2

    1.4

    Acertos de Personagens Histricas

    Coef

    icien

    te d

    e Co

    ncen

    tra

    o

    Ttulo

    Subttulo

    10.7 Exportando o grafico.

    Os graficos feitos em R podem ser salvos no diretorio de trabalho em diferentes extensoes

    como postscript, pdf, jpeg, png, bmp, tif, etc. A extencao *.png (Portable Network graphic) e

    mais limpa do que outros formatos. Enquanto *.tif e uma das que tem maiores resolucoes da

    imagem. O exemplo a seguir salva o grafico em png:

    > png(file = "pie(Q1).png", bg = "transparent")

    > freq names(freq) = c("Mulheres", "Homens")

    > pie(freq, main = "Sexo", col = c(2, 3))

    Outro exemplo, agora com arquivo em tif:

    > tiff(filename = "plot.tif", width = 480, height = 480, units = "px",

    + bg = "white")

    > dev.off()

    png:pie(Q1).png

    2

    Introducao ao R - Universidade Federal do ABC

  • 10.7 Exportando o grafico. 63

    O comando dev.off() fecha o grafico salvo, facilitando o trabalho do usuario.

    Introducao ao R - Universidade Federal do ABC

  • REFERENCIAS 64

    Referencias

    1 EHLERS, R. S. Introducao a` Estatstica. Universidade Federal do Parana: Departamento

    de Estatstica. 2002.

    2 BUSSAB, W. O.; MORETTIN, P. A. Estatstica Basica. 5.. ed. Sao Paulo: Saraiva, 2002.

    3 RIPLEY, B. D. The R-Project in the Statistical Computing. Workshop na Universidade de

    Glasgow (EUA). maio 2001.

    4 LANDIM, F. M. P. F. Analise exploratoria dos dados. Instituto de Matematica. De-

    partamento de Metodos Estatsticos - (DME). Disponvel em http://www.im.ufrj.br/ fla-

    via/aed06/mad114r9.ppt. Acessado em 13 de Julho de 2010.

    Introducao ao R - Universidade Federal do ABC

  • INDICE REMISSIVO 65

    Indice Remissivo

    Analise Discriminante, 50

    Apply, 25

    Caminho de Procura, 23

    Concatenar, 17

    Curva ROC, 43

    Exponencial, 14

    Fator, 22

    Funcoes Trigonometicas, 12

    cosseno, 12

    seno, 12

    tangente, 12

    Graficos, 52

    Barras, 55

    Boxplot, 58

    Dispersao, 61

    Exportar o Grafico, 62

    Histograma, 56

    Legenda, 52

    Parametros, 52

    Pizza, 54

    Setores, 54

    Texto, 52

    Integral, 14

    Leitura de dados, 19

    Logaritmo, 13

    Matriz, 15

    Medidas Descritivas, 20

    Desvio Padrao, 20

    Mediana, 20

    Maximo, 20

    Media, 20

    Mnimo, 20

    Variancia, 20

    Mudanca de Diretorio, 18

    Multiplicacao, 11

    Pacote, 10

    Phi de Cramer, 33

    Potenciacao, 12

    Raiz Quadrada, 13

    Regressao Linear Multipla, 48

    Regressao Linear Simples, 44

    Sequencia, 16

    Soma, 11

    Subtracao, 11

    Tapply, 26

    Teste Anova, 36

    Teste Exato de Fisher, 30

    Teste F, 36

    teste Qui-quadrado (X2), 27

    Teste T Nao-Pareado, 36

    Teste T Pareado, 35

    V de Cramer, 31

    Valor Absoluto, 22

    Introducao ao R - Universidade Federal do ABC