apostila introdução ao r versao 1.1
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