Você está na página 1de 65

Letcia Mancini Martins

Introdu
c
ao ao R

Trabalho submetido `a Universidade Federal


do ABC como parte dos requisitos para a
conclusao do projeto de pesquisa de Iniciacao Cientifica.

Santo Andre - Sao Paulo


versao 1.1, setembro de 2010

2
Direitos 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 P
ublica 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 u
til, mas SEM NENHUMA
a qualquer MERCADO
GARANTIA; sem uma garantia implicita de ADEQUAC
AO
EM PARTICULAR. Veja a Licenca P
ou APLICAC
AO
ublica Geral GNU para
maiores detalhes.
Voce deve ter recebido uma copia da Licenca P
ublica 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 d
uvidas. Por isso, solicito a todo usuario que,
ao ter alguma d
uvida e/ou verificar a falta de algum topico importante ou erro nesta
apostila, relatar `a autora, cujo e-mail e leticia mancini@yahoo.com.br.

Ficha Catalogr
afica

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

Sum
ario
1 Introduc
ao

2 Objetivos e metas desta apostila

3 Lista de recursos de Ajuda

4 Arquivos que acompanham a apostila

5 Dicas gerais antes de comecar

6 Baixando e instalando pacotes (packages)

10

6.1

Metodo manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

6.2

Metodo automatico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

7 C
alculos Simples

11

8 Explorac
ao 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 u
teis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

21

8.6

Funcoes Apply e Tapply . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

25

9 Comparac
ao de grupos de indivduos.
9.1

Analise de dados utilizando tabelas de contingencia . . . . . . . . . . . . . . . .


2

27
27

9.1.1

O teste qui-quadrado (X ) . . . . . . . . . . . . . . . . . . . . . . . . . .

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 m
ultipla . . . . . . . . . . . . . . . . . . . . . . . . . . .

48

9.5.4

Analise Discriminante . . . . . . . . . . . . . . . . . . . . . . . . . . . .

50

Introducao ao R - Universidade Federal do ABC


SUMARIO

10 Gr
aficos

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. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

INDICE REMISSIVO65
REFERENCIAS
BIBLIOGRAFICAS64

62

Introducao ao R - Universidade Federal do ABC

1 Introduc
ao

Introduc
ao
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 acompanhado 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 Estatstica 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 memoriaram.(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 utilizando 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 modelagem 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 u
til e gratuito para facilitar o ensino de estatstica e as pesquisas cientficas no terceiro mundo.
O programa R tem se desenvolvido muito rapidamente, de acordo com Ripley(3) - mantenedor 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 p
ublico em geral ao utilizar programas como o R que este
Introducao ao R - Universidade Federal do ABC

2 Objetivos e metas desta apostila

projeto foi idealizado.

Objetivos e metas desta apostila


O objetivo deste tutorial e auxiliar na compreensao e uso da plataforma R por estudantes,
professores, pesquisadores e p
ublico em geral.
Fornecer exemplos de cada uma das principais tecnicas estatsticas, feitos a partir de
dados reais.
Estimular a aprendizagem de estatstica atraves de exemplos da funcionalidade e flexibilidade do R.
Mostrar e estimular os leitores a aproveitarem de Softwares livres, evitando as restricoes
comerciais e o uso nao autorizado destes.

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 Ingl
es
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 Portugu
es
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

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 p
aginas 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

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

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/

Dicas gerais antes de come


car
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 plataforma.
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 min


usculas 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

Lembre sempre que R usa um ponto . em vez de vrgula , quando ha n


umeros 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 n
umeros. 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 seq
uencia 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.

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, :

6.1

n~
ao h
a nenhum pacote chamado Hmisc

M
etodo 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

M
etodo autom
atico

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 <tobias.sing at mpi-sb.mpg.de>
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

M
etodo autom
atico

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.

C
alculos 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 C
alculos 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
2 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 hiperbolica
Alguns 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 C
alculos 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 <- Valor
> x <- 2
> 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 <- 2
> x * 3 + 4
[1] 10
E pode guardar um novo valor na mesma variavel.
> x <- x + 1
> 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 C
alculos 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 C
alculos Simples

15

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

conjunto de n
umero que compoem a matriz

nrow

este parametro determina o n


umero de colunas da matriz

ncol

este parametro determina o n


umero 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 matriz


Exemplo 1.
> matriz <- matrix(c(1, 0, 0, 0, 1, 0, 0, 0, 1), nrow = 3, ncol = 3,
+

byrow = TRUE, dimnames = list(c("Linha1", "Linha2", "Linha3"),

c("Coluna1", "Coluna2", "Coluna3")))

> matriz
Coluna1 Coluna2 Coluna3
Linha1

Linha2

Linha3

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 n
umero
de linhas e 3 e o n
umero de colunas e 6. Inicialmente a matriz fica da seguinte forma:
> A
[,1] [,2] [,3] [,4] [,5] [,6]
[1,]

[2,]

[3,]

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 C
alculos 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

+ }
> 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 C
alculos Simples

17

> 0:10
[1]

9 10

Coloca-se a sequencia dentro de uma variavel.


> a <- 0:10
Qualquer calculo pode ser feito com a variavel e ele e realizado utilizando todos os elementos
da sequencia.
Pode-se, por exemplo, multiplicar a sequencia por uma constante.
> a * 2
[1]

8 10 12 14 16 18 20

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


> b <- 10:0
Pode-se, somar duas sequencias,
> a + b
[1] 10 10 10 10 10 10 10 10 10 10 10
...subrair,
> a - b
[1] -10

-8

-6

-4

-2

10

e ate multiplica-las.
> a * b
[1]

9 16 21 24 25 24 21 16

Alem disso, duas sequencias podem ser juntadas e armazenadas em uma terceira. Para isso
significa concatenar (juntar).
usaremos c(), o S cT
> a <- 0:10
> b <- 50:70
Observe essa funcao. Estamos concatenando primeiro a sequencia a e depois a sequencia b
em uma sequencia que chamamos de m.

Introducao ao R - Universidade Federal do ABC

8 Explorac
ao preliminar dos dados

18

> m = c(a, b)
> m
[1]

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
[26]

9 10

Explorac
ao 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 conte
udo do comando em uma variavel.
> wdir <- getwd()
O comando abaixo guarda como novo diretorio a ser utilizado neste trabalho, a pasta cujo
caminho o usuario colocar entre as apas.
> 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

8.2

19

Tratamento de erros de leitura de dados, possveis casos

DISPONIVEL
AINDA NAO

8.3

Transforma
c
ao e manipulac
ao 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 fileiras
No 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 n
umeros entre colchetes indicam
o ndice do primeiro valor que cada linha mostra.
> dados$O2
[1]

[26]

[51]

[76]

[101]

[126]

1 42

Antes de salvar uma planilha em txt, lembre-se de substituir as vrgulas por pontos utilizando 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

42

3 146

Introducao ao R - Universidade Federal do ABC

8.4

Medidas Descritivas

8.4

20

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 (3 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.
16.0

Median

19.0

23.5

Mean 3rd Qu.

Max.

32.1

84.0

47.8

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

Func
oes miscel
aneas u
teis

8.5

21

Fun
c
oes miscel
aneas u
teis

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

Func
oes miscel
aneas u
teis

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 <- factor(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 <- -9:9
> 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 <- -9:9
> 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

Func
oes miscel
aneas u
teis

80

8.5

23

60

40

abs(x)^2

20

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 utilizando.

> 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"

"package:base"

"Autoloads"

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

Introducao ao R - Universidade Federal do ABC

8.5

Func
oes miscel
aneas u
teis

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

34 12

2 26 76

> summary(Hist
orico)
Min. 1st Qu.
0.00

1.00

Median
3.00

Mean 3rd Qu.


4.47

7.00

Max.
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

Func
oes 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 <- function() {


+

old.par <- par(no.readonly = TRUE)

on.exit(par(old.par))

invisible()

+ }
> ex()

8.6

Fun
c
oes Apply e Tapply

A partir de uma matriz podemos usar a funcao apply () para somar os itens de uma coluna
ou linha da matriz. Os argumentos dessa funcao sao:
mat1 nome da matriz que sera utilizada
1

utilize 1 para linhas e 2 para colunas

sum operacoes basicas que podem ser utilizadas como sum (soma) e mean (media)
Definimos um vetor contendo todos os elementos da matriz, ordenados por coluna.
> 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,]

[2,]

[3,]

[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

Func
oes 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 <- function(x) {
+

sum(x) + 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 n
umero 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

18767 19143 21303 20140 25915


A funcao tapply() calculou a media da Renda dos entrevistados de acordo com a quantidade de livros lidos em 2009.
> tapply(dados$Renda, list(dados$Q26, dados$Q1), mean)
0

0 16900 20400
1 16722 22074
2 20867 21957
3 18592 26333
4 24700 32600
Introducao ao R - Universidade Federal do ABC

9 Comparac
ao 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 <- tapply(dados$Renda, list(dados$Q26, dados$Q1), mean)
> tab <- data.frame(tab)
> names(tab) = c("Feminino", "Masculino")
> row.names(tab) = c("Nenhum", "No m
aximo 2", "Entre tr^
es e cinco",
+

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

> tab
Feminino Masculino
Nenhum

16900

20400

No m
aximo 2

16722

22074

Entre tr^
es e cinco

20867

21957

Entre cinco e oito

18592

26333

Mais de oito

24700

32600

Comparac
ao de grupos de indivduos.

9.1

An
alise de dados utilizando tabelas de conting
encia

9.1.1

O teste qui-quadrado (X 2 )

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

61 39
$1
0

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

An
alise de dados utilizando tabelas de conting
encia

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
o programa faz a correcao de Yates para
e o parametro correct e booleano e true e o default Uo teste.
> chisq.test(b, correct = FALSE)
Pearsons Chi-squared test
data:

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:

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

An
alise de dados utilizando tabelas de conting
encia

29

Pode-se fazer tambem teste Qui-quadrado para diferencas de probabilidade, como a quantidade de pessoas de cada genero no nosso teste.
> table(dados$Q1)
0

88 62
> c = c(88, 62)
> chisq.test(c)
Chi-squared test for given probabilities
data:

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

100

50

> d = c(100, 50)


> chisq.test(d)
Chi-squared test for given probabilities
data:

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

48 17

5 32 48
Introducao ao R - Universidade Federal do ABC

9.1

An
alise de dados utilizando tabelas de conting
encia

30

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


> b = c(Algumas vezes por semana = 5, Raramente = 17, Nunca = 48)
> resposta <- c(a, b)
> chisq.test(resposta)$expected
Diariamente

1vez por semana Algumas vezes por semana

30

30

Raramente

Nunca

30

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,]

[2,]

> B = data.frame(x)
> names(B) = c("Presente", "Ausente")
> B
Presente Ausente
1

> row.names(B) = c("Rea


c~
ao +", "Rea
c~
ao -")
> B
Presente Ausente
Rea
ca
~o +

Rea
ca
~o -

3
Introducao ao R - Universidade Federal do ABC

9.1

An
alise de dados utilizando tabelas de conting
encia

31

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


> fisher.test(B)
Fishers Exact Test for Count Data
data:

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 automaticamente, 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

61 39
$1
0

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

An
alise de dados utilizando tabelas de conting
encia

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:

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

An
alise de dados utilizando tabelas de conting
encia

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 n
umero de colunas e
n
umero 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

An
alise de dados utilizando tabelas de conting
encia

5
3
$2
0

6 22 14

1 17 11 23

$3
0 1 2 3 4
1 2 3 1 2
$4
1

> 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,]

[2,]

[3,]

22

14

[4,]

[5,]

17

11

23

> apply(n, 1, sum)


[1] 12

3 60 11 66

> apply(n, 2, sum)


[1]

7 11 43 27 34 18

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


Introducao ao R - Universidade Federal do ABC

34

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

9.4

4.26

An
alise de Vari
ancia (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

An
alise de Vari
ancia (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

78 78 79 77

88 78 73 69

87 83 79 75

88 81 75 70

83 78 77 74

82 81 78 83

81 81 80 80

80 82 78 75

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 <- c(A$A, A$B, A$C, A$D)


> 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 <- data.frame(L, N)


Introducao ao R - Universidade Federal do ABC

9.4

An
alise de Vari
ancia (Anova) ou teste F
L

38

1 80

18 2 82

27 3 80

36 4 83

1 78

10 1 89

19 2 76

28 3 78

37 4 80

1 88

11 2 78

20 2 76

29 3 83

38 4 75

1 87

12 2 78

21 3 79

30 3 84

39 4 76

1 88

13 2 83

22 3 73

31 4 77

40 4 75

1 83

14 2 81

23 3 79

32 4 69

1 82

15 2 78

24 3 75

33 4 75

1 81

16 2 81

25 3 77

34 4 70

1 80

17 2 81

26 3 78

35 4 74

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


o resultado dessa funcao em uma variavel X.
> X <- aov(N ~ L)
> X
Call:
aov(formula = N ~ L)
Terms:
L Residuals
Sum of Squares
Deg. of Freedom

342

456

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
L
Residuals

342

114

36

456

13

Pr(>F)

9.01 0.00014 ***

--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

An
alise de Vari
ancia (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))

12

13

23

14

24

34

95% familywise confidence level

10

Differences in mean levels of L

Introducao ao R - Universidade Federal do ABC

9.4

An
alise de Vari
ancia (Anova) ou teste F

40

Pode-se perceber atraves na figura acima?? que existe diferencas significativas entre as duplas 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

[20]

53 572 716

[39]

45

62

99 686

18

92

46

38

65 426

35

52

44 455

45 617

83

94

89

58

69

80

56

34

54

78

90

48 252

27

38

63

92 252 450

21

25

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
Deg. of Freedom

342

456

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

An
alise de Vari
ancia (Anova) ou teste F

[1]

87

90

67

[20]

53 572 716

[39]

45

62

41

99 686

18

92

46

38

65 426

35

52

44 455

45 617

83

94

89

58

69

80

56

34

54

78

90

48 252

27

38

53

30 2

21

40 3

62
92

63

92 252 450

21

25

54 122 957 750 892

> a.vert <- data.frame(L, M)


10 1

20 2

65

87

11 1 426

21 2 572

31 2

54

41 3

90

12 1

35

22 2 716

32 2

78

42 3 252

67

13 1

52

23 2

89

33 3

90

43 3 450

99

14 1

44

24 2

63

34 3

25

44 3

1 686

15 1 455

25 2

58

35 3

48

45 3 122

18

16 1

45

26 2

69

36 3 252

46 3 957

92

17 2 617

27 2

80

37 3

27

47 3 750

46

18 2

83

28 2

56

38 3

38

48 3 892

38

19 2

94

29 2

34

39 3

45

> L <- factor(L)


> is.factor(L)
[1] TRUE
> anova <- aov(M ~ L)
> anova
Call:
aov(formula = M ~ L)
Terms:
L Residuals
Sum of Squares
Deg. of Freedom

113478

2950178

45

Residual standard error: 256


Estimated effects may be unbalanced
> summary(anova)
Df
L
Residuals

Sum Sq Mean Sq F value Pr(>F)


113478

56739

45 2950178

65560

0.87

0.43

Introducao ao R - Universidade Federal do ABC

54

9.4

An
alise de Vari
ancia (Anova) ou teste F

42

> TukeyHSD(anova)
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = M ~ L)
$L
diff
2-1

lwr upr p adj

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))

32

31

21

95% familywise confidence level

200

100

100

200

300

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 Diagn
ostico

9.5
9.5.1

43

Medidas de Diagn
ostico
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 <- prediction(ROCR.simple$predictions, ROCR.simple$labels)
> perf <- performance(pred, measure = "tpr", x.measure = "fpr")
> plot(perf, col = rainbow(10))

0.6
0.4
0.2
0.0

True positive rate

0.8

1.0

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

0.0

0.2

0.4

0.6

0.8

False positive rate

Introducao ao R - Universidade Federal do ABC

1.0

9.5

Medidas de Diagn
ostico

9.5.2

44

Regress
ao 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 <- lm(h ~ idade)
Vamos ver um resumo dos resultados da regressao.
> summary(modelo)
Call:
lm(formula = h ~ idade)
Residuals:
Min

1Q Median

-9.482 -2.652 -0.844

3Q

Max

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 Diagn
ostico

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
idade

646

646

Residuals 148

2740

19

Pr(>F)

34.9 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

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 Diagn
ostico

46

Acertos por Idade

20

15

10

Acertos

20

30

40

50

60

70

80

Idade

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<0.01")

Introducao ao R - Universidade Federal do ABC

9.5

Medidas de Diagn
ostico

47

Acertos por Idade

20

15

10

Acertos

20

30

40

50

60

70

80

Idade

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 c^
ancer")
> abline(reta1$coefficients, col = "blue")
> abline(reta2$coefficients, col = "red")

Introducao ao R - Universidade Federal do ABC

9.5

Medidas de Diagn
ostico

48

Fumo versus cncer

140

120

100

fumo$imorte

80

60

70

80

90

100

110

120

130

fumo$ifumo

9.5.3

Regress
ao linear m
ultipla

Para realizar analise de regressao m


ultipla, utilizam-se as mesmas funcoes usadas na regressao simples. Note, porem, que ao inves de utilizar somente a idade como variavel preditora
utiliza-se idade e renda.

> modelo <- lm(h ~ idade + dados$Renda, data = dados)


> summary(modelo)
Call:
lm(formula = h ~ idade + dados$Renda, data = dados)
Residuals:
Min

1Q Median

-8.491 -2.481 -0.738

3Q

Max

2.051 11.992

Coefficients:
Estimate Std. Error t value Pr(>|t|)
Introducao ao R - Universidade Federal do ABC

9.5

Medidas de Diagn
ostico

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

646

646

37.6 7.5e-09 ***

dados$Renda

219

219

12.8 0.00047 ***

147

2521

17

Residuals
---

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 Diagn
ostico

50

1.5

1.0

0.5

10

10

Fitted values

Normal QQ

Residuals vs Leverage

Fitted values

107
142

107

70142

3
2
1
0
2

107

142

70

0.0

Standardized residuals

Standardized residuals

142

70

ScaleLocation

107

Standardized residuals

5
0
10

Residuals

10

Residuals vs Fitted

Cook's distance144

0.00

Theoretical Quantiles

0.02

0.04

0.06

0.08

Leverage

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(no.readonly = TRUE)


> 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

An
alise 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 Diagn
ostico

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 <- data.frame(rbind(iris3[, , 1], iris3[, , 2], iris3[,


+

, 3]), Sp = rep(c("s", "c", "v"), rep(50, 3)))

> y <- sample(1:150, 75)


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

29 23 23
> z <- lda(Sp ~ ., x.data, prior = c(1, 1, 1)/3, subset = y)
> 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 <- update(z, . ~ . - Petal.W.))
Call:
lda(Sp ~ Sepal.L. + Sepal.W. + Petal.L., data = x.data, prior = c(1,
1, 1)/3, subset = y)
Prior probabilities of groups:
c

0.333 0.333 0.333


Group means:
Sepal.L. Sepal.W. Petal.L.
c

6.06

2.88

4.36

5.00

3.40

1.44

6.47

2.91

5.51

Coefficients of linear discriminants:


LD1

LD2

Sepal.L.

1.345 -1.400

Sepal.W.

0.934

3.207

Petal.L. -3.667

0.929

Introducao ao R - Universidade Federal do ABC

10 Gr
aficos

52

Proportion of trace:
LD1

LD2

0.998 0.002

10

Gr
aficos

10.1

Par
ametros 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 legenda
Para cada n
umero 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

Par
ametros 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))

10

11

12

13

14

16

17

15

20

21

22

18

23

19

25

24

> text((1:6) * 0.8 + 0.5, rep(1, 6), cex = 0.6, (20: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

Gr
afico 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

Gr
afico 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 n
umeros 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 <- c(88, 62)


> 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

Gr
afico de barras

55

Sexo

Mulheres

Homens
texto

10.3

Gr
afico 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

100

Sexo
Legenda

20

40

60

80

Feminino
Masculino

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 Indiv


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

Introducao ao R - Universidade Federal do ABC

10.4

Histograma

57

20
15
10
0

Quantidade de Indivduos

25

30

Histogram of dados$Renda

10000

20000

30000

40000

50000

ndice de Renda (R$)

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 Indiv
duos")

Introducao ao R - Universidade Federal do ABC

10.5

Boxplots

58

30
20
10
0

Quantidade de Indivduos

40

Histograma do ndice de Renda

10000

20000

30000

40000

50000

ndice de Renda (R$)

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

70

60

Boxplot da Quantidade de Horas de Internet

30

40

10

20

Horas

50

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

10

20

Horas

30

40

Quantidade de Horas de Internet

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 conhecimento 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

Gr
afico de dispers
ao

61

6
4
0

Intelectualidade

10

Boxplot do Coeficiente de Intelectualidade por Escolaridade

Escolaridades

10.6

Gr
afico de dispers
ao

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


> plot(h, t, xlab = "Acertos de Personagens Hist
oricas", pch = 0,
+

ylab = "Coeficiente de Concentra


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

principais sao:
Main
Sub

Ttulo do grafico
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 = "T


tulo", sub = "Subt
tulo", font.main = 4, col.main = "red",
+

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

Introducao ao R - Universidade Federal do ABC

10.7

Exportando o gr
afico.

62

1.2
1.0
0.8
0.6
0.2

0.4

Coeficiente de Concentrao

1.4

Ttulo

10

15

20

Acertos de Personagens Histricas


Subttulo

10.7

Exportando o gr
afico.

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 <- c(88, 62)
> 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 gr
afico.

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

Introducao ao R - Universidade Federal do ABC

63


REFERENCIAS

64

Refer
encias
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. Departamento de Metodos Estatsticos - (DME). Disponvel em http://www.im.ufrj.br/ flavia/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

Mudanca de Diretorio, 18

Apply, 25

Multiplicacao, 11

Caminho de Procura, 23

Pacote, 10

Concatenar, 17

Phi de Cramer, 33

Curva ROC, 43

Potenciacao, 12

Exponencial, 14

Raiz Quadrada, 13
Regressao Linear M
ultipla, 48

Fator, 22
Funcoes Trigonometicas, 12

Regressao Linear Simples, 44

cosseno, 12

Sequencia, 16

seno, 12

Soma, 11

tangente, 12

Subtracao, 11

Graficos, 52

Tapply, 26

Barras, 55

Teste Anova, 36

Boxplot, 58

Teste Exato de Fisher, 30

Dispersao, 61

Teste F, 36

Exportar o Grafico, 62

teste Qui-quadrado (X 2 ), 27

Histograma, 56

Teste T Nao-Pareado, 36

Legenda, 52

Teste T Pareado, 35

Parametros, 52

V de Cramer, 31

Pizza, 54

Valor Absoluto, 22

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

Introducao ao R - Universidade Federal do ABC