Buscar

Mini tutorialR

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 36 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 36 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 36 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Introduc¸a˜o ao Ambiente Computacional R
Renato Nunes Pereira1
Setembro de 2014
Suma´rio
1 Instalando o R 2
2 Iniciando o R 2
2.1 Comando de ajuda no R . . . . . . . . . . . . . . . . . . . . . . . 2
2.2 Objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.3 Entrada de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.4 Operac¸o˜es aritme´ticas . . . . . . . . . . . . . . . . . . . . . . . . 8
2.5 Operac¸o˜es com vetores e matrizes . . . . . . . . . . . . . . . . . . 9
3 Estat´ıstica descritiva 10
3.1 Medidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2 Func¸o˜es gra´ficas no R . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2.1 A func¸a˜o plot() . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2.2 Gra´fico de Barras: func¸a˜o barplot() . . . . . . . . . . . 13
3.2.3 Histograma: a func¸a˜o hist() . . . . . . . . . . . . . . . . 16
3.2.4 Entrando com os dados no R . . . . . . . . . . . . . . . . 17
3.3 Explorando o histograma . . . . . . . . . . . . . . . . . . . . . . 18
3.4 Boxplot: func¸a˜o boxplot() . . . . . . . . . . . . . . . . . . . . . 20
4 Exerc´ıcos utilizando o R 21
4.1 Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5 Distribuic¸o˜es de probabilidade 24
5.1 Distribuic¸a˜o Binomial . . . . . . . . . . . . . . . . . . . . . . . . 25
5.2 Distribuic¸a˜o Normal . . . . . . . . . . . . . . . . . . . . . . . . . 26
5.2.1 Probabilidade . . . . . . . . . . . . . . . . . . . . . . . . . 26
5.3 Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
6 Ana´lise de frequeˆncias usando tabelas de contingeˆncia 29
6.1 Exerc´ıcio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
7 Noc¸a˜o ba´sica de programac¸a˜o no R 31
7.1 Comandos de lo´gica . . . . . . . . . . . . . . . . . . . . . . . . . 31
7.1.1 Which . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
7.1.2 if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
7.1.3 if else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
7.1.4 ifelse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
7.2 Looping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
7.2.1 O loop for . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
7.2.2 O loop while . . . . . . . . . . . . . . . . . . . . . . . . . 34
1Departamento de Matema´tica, Instituto de Cieˆncias Exatas Rural do Rio de Janeiro,
Campus de Serope´dica. E-mail: rnpmoc@gmail.com
1
7.2.3 O loop repeat . . . . . . . . . . . . . . . . . . . . . . . . 35
7.3 Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
1 Instalando o R
O programa esta´ dispon´ıvel em: www.r-project.org
PASSOS
1. Apo´s entrar neste site, clique em CRAN.
2. Em seguida, escolha um espelho perto de voceˆ, por exemplo, o espelho da
Universidade de Sa˜o Paulo, Piracicaba:
http://brieger.esalq.usp.br/CRAN/
3. Escolha seu sistema operacional, por exemplo, Windows.
4. Escolha o arquivo executa´vel, por exemplo, R-2.15.1-win.exe. Pronto! E´
so´ baixar e executar.
2 Iniciando o R
Para a utilizac¸a˜o do R, basta seguir os seguintes passos:
1. inicie o R em seu computador;
2. voceˆ vera´ uma janela com uma barra de menu, algumas mensagens ba´sicas
e o s´ımbolo > em vermelho, que e´ o prompt do R indicando que o sistema
esta´ pronto para receber seus comandos.
2.1 Comando de ajuda no R
help.start() inicia documentac¸a˜o na forma de arquivos html visualizados no
seu browser.
help(to´pico) ou ?(to´pico) iniciam uma janela de ajuda sobre to´pico.
2.2 Objetos
O R e´ uma linguagem orientada a objetos (varia´veis, dados, matrizes, ar-
rays, data-frames, listas, func¸o˜es etc) que sa˜o armazenados na memo´ria ativa
do computador e a partir da´ı todas as operac¸o˜es matema´ticas podem ser feitas
usando esses objetos. Veja como se deve proceder para criar um objeto:
1) Escolher um nome para o objeto, x, por exemplo;
2) Atribuir um valor a esse nome;
3) A atribuic¸a˜o de um valor a um nome pode ser feita, basicamente, de duas
maneiras. Usando o sinal de igualdade (=) ou uma seta formada pela
junc¸a˜o do sinal menor que (<) e o sinal de menos -, ou seja <-. Veja
a seguir alguns tipos de armazenamentos. No R ha´ uma distinc¸a˜o entre
letras minu´sculas e MAIU´SCULAS.
2
1) Nu´mero: e´ poss´ıvel atribuir um u´nico nu´mero ao objeto.
Exemplo: atribuir o nu´mero 10 ao objeto x e o nu´mero 2 ao ob-
jeto y.
> x <- 10 # x recebe 10
> x # Para verificar quanto vale o objeto x.
[1] 10
> y <- 2 # y recebe 2
> y # Para verificar quanto vale o objeto y.
[1] 2
Observac¸~ao importante: o sinal # que aparece acima e´ utilizado para fa-
zer comenta´rios. Tudo que for escrito depois desse sinal sera´ entendido como
comenta´rio e na˜o sera´ interpretado como comando.
2) Vetor: para atribuir um conjunto de valores a um objeto pode-se usar
o comando c(), em que os valores vem separados por v´ırgulas, dentro do
pareˆnteses.
> x <- c(2,3,5,7,11) # os 5 primeiros nu´meros primos
> x
[1] 2 3 5 7 11
> y <- c(x,13,17,19,23) # adicionando mais quatro nu´meros primos
> y[7] # vetor que ocupa a se´tima posic¸~ao.
[1] 17
3) Sequeˆncia: uma sequeˆncia pode ser atribu´ıda a um objeto da seguinte
forma.
> x<-1:20 # sequ¨e^ncia de 1 a 20
> x
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
> seq(1,20,1) # a mesma seque^ncia anterior
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
> seq(1,20,2) # de 2 em 2
[1] 1 3 5 7 9 11 13 15 17 19
> y <- 20:1 # sequ¨e^ncia decrescente de 20 a 1
> y
[1] 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
> rep(1,5) # repetir o nu´mero 1, 5 vezes.
3
[1] 1 1 1 1 1
> rep(c(1,2),10) # repetir o vetor 10 vezes
[1] 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2
> c(rep(0,10),rep(1,5)) # repetir o 0, 10 vezes e o 1, 5 vezes.
[1] 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1
> paste("tr",1:5,sep="")
[1] "tr1" "tr2" "tr3" "tr4" "tr5"
4) Matriz: uma matriz e´ atribu´ıda a um objeto pela func¸a˜o matrix().
> X<-matrix(c(5,5,6,1,2,4,5,6,7,10,2,4),3,4)
> X
[,1] [,2] [,3] [,4]
[1,] 5 1 5 10
[2,] 5 2 6 2
[3,] 6 4 7 4
> Y<-matrix(c(5,5,6,1,2,4,5,6,7,10,2,4),ncol=4)
> Y # A mesma matriz anterior, pore´m especificando apenas o nu´mero de colunas.
[,1] [,2] [,3] [,4]
[1,] 5 1 5 10
[2,] 5 2 6 2
[3,] 6 4 7 4
Indices das matrizes
> X[3,2] # elemento da matriz X na linha 3 e coluna 2.
[1] 4
> X[,3] # extraindo a terceira coluna
[1] 5 6 7
> X[2,] # extraindo a segunda linha
[1] 5 2 6 2
> X[c(1,2),] # extraindo duas linhas
[,1] [,2] [,3] [,4]
[1,] 5 1 5 10
[2,] 5 2 6 2
> X[,1:3] # extraindo tre^s colunas
4
[,1] [,2] [,3]
[1,] 5 1 5
[2,] 5 2 6
[3,] 6 4 7
5) Arrays: o array representa uma hipermatriz, ou seja, um conjunto de nu´-
meros arranjados em mais de 2 dimenso˜es. O comando usado e´ o array().
Obs: A primeira posic¸a˜o da func¸a˜o array() se refere aos argumentos das
matrizes e a segunda posic¸a˜o se refere a`s dimenso˜es do mesmo.
> Z<-array(0,c(2,2,2)) # array de zeros
> Z
, , 1
[,1] [,2]
[1,] 0 0
[2,] 0 0
, , 2
[,1] [,2]
[1,] 0 0
[2,] 0 0
> M<-array(c(1,2,3,4,5,6,7,8), c(2,2,2))
> M
, , 1
[,1] [,2]
[1,] 1 3
[2,] 2 4
, , 2
[,1] [,2]
[1,] 5 7
[2,] 6 8
6) Data frame: essa estrutura de dados e´ uma espe´cie de tabela, de estru-
tura bidimensional de dados. Sua func¸a˜o e´ data.frame().
> K<-data.frame("Dia´rias" = c("Hotel 1", "Hotel 2", "Hotel 3"),
+ "Prec¸o" = c(175, 200, 250) )
> K
Dia´rias Prec¸o
1 Hotel 1 175
2 Hotel 2 200
3 Hotel 3 250
5
> L3 <- LETTERS[1:3]
> d <- data.frame(cbind(x=1, y=1:10), fac=sample(L3, 10, repl=TRUE))
> d
x y fac
1 1 1 B
2 1 2 C
3 1 3 B
4 1 4 C
51 5 A
6 1 6 B
7 1 7 C
8 1 8 A
9 1 9 B
10 1 10 A
2.3 Entrada de dados
Pode-se entrar com dados no R de diferentes formas. Veja a seguir algumas
delas.
1. Criac¸a˜o de vetores, matrizes, data frames, listas etc.
Nota: essas formas s~ao adequadas para entrada de dados direta-
mente no R.
2. O R pode ler arquivos de estruturas simples como as extenso˜es .txt e
.r. Tambe´m e´ poss´ıvel importar outros tipos de arquivos mais complexos,
como os .csv. Veja os procedimentos para leitura dos dados com essas
extenso˜es:
Passo 1) Mudar o direto´rio:
Clique em R console => Arquivo => Mudar o direto´rio => localizar
a pasta de trabalho.
Passo 2) Depende da extensa˜o do arquivo.
• Se a extensa˜o do seu arquivo for .txt.
sintaxe:
dados < − read.table("Nome−do−arquivo.txt", opc¸~oes)
opc¸~oes:
header: TRUE, assume que a primeira linha da tabela conte´m ro´tulos
das varia´veis. FALSE, assume que os dados se iniciam na primeira li-
nha.
Exemplo:
Importar os dados provenientes do arquivo altura.txt, disponibilizado no curso
do professor Renato, e amarzenar no objeto de nome Altura:
> Altura<-read.table("altura.txt",header=TRUE)
6
Visualiza os dados obtidos e armazenados no objeto Altura:
> Altura
Aluno Altura
1 Pedro 1.86
2 Augusto 1.89
3 Ana 1.55
4 Fernanda 1.63
5 Gustavo 1.80
• Se a extensa˜o do seu arquivo for .r.
sintaxe:
dados < − read.table("Nome−do−arquivo.r", opc¸~oes)
opc¸o˜es:
header: TRUE, assume que a primeira linha da tabela conte´m ro´tulos
das varia´veis. FALSE, assume que os dados se iniciam na primeira li-
nha.
• Se a extensa˜o do seu arquivo for .csv.
Para importar dados a partir de uma planilha do Microsoft Excel, e´ necessa´rio
antes salvar essa planilha no formato .CSV (valores separados por v´ırgula). Para
salva´-la nesse formato, clique em Arquivo do menu, em seguida Salvar como....
Na parte inferior da caixa de dia´logo, clique sobre as opc¸o˜es de Salvar como
tipo e selecione CSV (separado por v´ırgulas). Agora basta escolher a pasta
de destino e clicar no bota˜o Salvar. Surgira˜o algumas mensagens indicando a
incompatibilidade de alguns recursos do Microsoft Excel com esse formato, mas
como o que nos interessa sa˜o apenas os dados, clique em OK e em seguida em
SIM.
• Lendo arquivos do tipo CSV (separado por vı´rgulas)
Podemos usar o comando read.csv para armazenar os dados desse ar-
quivo em um objeto do R chamado dados:
sintaxe:
dados < − read.csv("nome−do−arquivo.csv", opc¸~oes)
opc¸~oes:
sep: caractere utilizado para separac¸~ao dos campos e valores. Nor-
malmente e´ utilizado o ponto e vı´rgula (;)
dec: caractere utilizado para separar as casas decimais. Normalmente
ponto (.) ou vı´rgula (,).
header: TRUE, assume que a primeira linha da tabela conte´m ro´tulos
das varia´veis. FALSE, assume que os dados se iniciam na primeira li-
nha.
Exemplo:
7
Importar os dados provenientes do arquivo altura.csv, disponibilizado no
curso do professor Renato, com v´ırgula como sinal decimal, ponto e v´ırgula
como separador de campos e valores e armazena no objeto de nome Altura:
> Altura <- read.csv("altura.csv", sep=";", dec=",", header=TRUE)
Visualiza os dados obtidos e armazenados no objeto Altura:
> Altura
Aluno Altura
1 Pedro 1.86
2 Augusto 1.89
3 Ana 1.55
4 Fernanda 1.63
5 Gustavo 1.80
2.4 Operac¸o˜es aritme´ticas
O R pode ser usado como uma calculadora, sendo u´til para realizac¸a˜o dos
mais diversos ca´lculos.
> x<- 8
> y<- 6
> x + y # Soma
[1] 14
> x - y # Subtrac¸~ao
[1] 2
> x*y # Produto de escalares
[1] 48
> x/y # divis~ao
[1] 1.3333
> x^y # Potenciac¸~ao
[1] 262144
> sqrt(x^y) # Raiz quadrada
[1] 512
> k <- x*y/(y^2)
> k
[1] 1.3333
A seguir, temos uma lista de algumas func¸o˜es aritme´ticas no R:
8
Func¸a˜o Significado
sqrt(x) Raiz quadrada de x
abs(x) Valor absoluto de x (postivo)
sin(x), cos(x), tan(x) Func¸o˜es trigonome´tricas de x
asin(x), acos(x), atan(x) Func¸o˜es trigonome´tricas inversas de x
sinh(x), cosh(x), tanh(x) Func¸o˜es hiperbo´licas de x
asinh(x), acosh(x), atanh(x) Func¸o˜es hiperbo´licas inversas de x
exp(x) Antilogar´ıtmo de x (ex)
log(x) Logar´ıtmo de base e de x
log10(x) Logar´ıtmo base 10 de x
log(x,n) Logar´ıtmo de base n de x
choose(n,x) n!(x!(n-x)!)
2.5 Operac¸o˜es com vetores e matrizes
> A<-c(1,2,3,4) # Vetor A
> A
[1] 1 2 3 4
> t(A)%*%A # A'A (A transposto "vezes" A).
[,1]
[1,] 30
> X<- matrix(c(3,2,1,1,2,6,5,4,4),3,3) # Matrix com 3 linhas e 3 colunas.
> X
[,1] [,2] [,3]
[1,] 3 1 5
[2,] 2 2 4
[3,] 1 6 4
> Y<-t(X)%*%X # X'X (X transposta "vezes" X)
> Y
[,1] [,2] [,3]
[1,] 14 13 27
[2,] 13 41 37
[3,] 27 37 57
> Xinv<-solve(X) # Inversa da matriz X
> Xinv
[,1] [,2] [,3]
[1,] 8 -13.0 3
[2,] 2 -3.5 1
[3,] -5 8.5 -2
9
3 Estat´ıstica descritiva
3.1 Medidas
Nesta sec¸a˜o sera˜o apresentadas algumas estat´ısticas descritivas e gra´ficos fre-
quentemente utilizados em diversas a´reas. A seguir, temos uma lista de algumas
func¸o˜es estat´ısticas no R:
Func¸a˜o Significado
max(x) Ma´ximo da amostra x
min(x) Mı´nimo da amostra x
mean(x) Me´dia da amostra x
median(x) Mediana da amostra x
quantile(x) Quartis da amostra x
var(x) Variaˆncia amostral de x
sd(x) Desvio padra˜o amostral de x
cov(x,y) Covariaˆncia entre x e y
cor(x,y) Correlac¸a˜o entre conjuntos x e y
Como exemplo, considere os dados dos vetores X e Y, no R:
> X <- c(12,10,9,8,7,6,15,19,17,18)
> Y <- c(20,18,16,17,12,11,24,25,30,35)
Pode-se calcular a me´dia de Y, assim como a me´dia de X, da seguinte forma:
> mean(X)
[1] 12.1
> mean(Y)
[1] 20.8
A mediana de Y e´ dada por:
> median(Y)
[1] 19
Os percentis, que por padra˜o no R sa˜o calculados os P0, P25, P50, P75 e P100,
sa˜o obtidos por meio de:
> quantile(Y)
0% 25% 50% 75% 100%
11.00 16.25 19.00 24.75 35.00
O mı´nimo e ma´ximo de Y sa˜o calculados da seguinte maneira:
> min(Y)
[1] 11
> max(Y)
10
[1] 35
No R, existe o comando summary capaz de resumir todas as medidas que
falamos anteriormente, como por exemplo:
> summary(Y)
Min. 1st Qu. Median Mean 3rd Qu. Max.
11.0 16.2 19.0 20.8 24.8 35.0
As medidas de dispersa˜o variaˆncia e desvio padra˜o, da varia´vel em estudo,
sa˜o calculadas, repectivamente, por:
> var(Y)
[1] 59.289
> sd(Y)
[1] 7.6999
Ale´m das medidas mostradas anteriormente, podemos calcular a correlac¸a˜o
e a convariaˆncia, respectivamente, entre as varia´veis X e Y.
> cor(X,Y)
[1] 0.92311
> cov(X,Y)
[1] 34.244
3.2 Func¸o˜es gra´ficas no R
Para um boa abordagem estat´ıstica e´ importante que o pesquisador fac¸a
inicialmente uma ana´lise preliminar nos seus dados e uma forma seria por meio
de uma inspec¸a˜o gra´fica.
11
3.2.1 A func¸a˜o plot()
A func¸a˜o gra´fica geral mais utilizada e flexivel do R e´ a plot(). Quando
trabalhamos com vetores nume´ricos, como as varia´veis X e Y do exemplo a
seguir, o resultado sera´ um diagrama de dispersa˜o para as duas coordenadas.
> x <- seq(1,20,2) #uma seque^ncia de 1 a 20, de dois em dois.
> x
[1] 1 3 5 7 9 11 13 15 17 19
> y<- x^3 # x ao cubo
> plot(x,y)
l l l
l
l
l
l
l
l
l
5 10 15
0
20
00
40
00
60
00
x
y
Ha´ va´rias outras opc¸o˜es para os gra´ficos. Basta entrar com o seguinte comando
no R: ?plot. Podemos adicionar ao gra´fico um t´ıtulo, informar do que se trata
o eixo X e o eixo Y, ale´m de mudar a cor do gra´fico.
> x <- seq(1,20,2) #uma seque^ncia de 1 a 20, de dois em dois.
> x
[1] 1 3 5 7 9 11 13 15 17 19
> y<- x^3 # x ao cubo
12
> x <- seq(1,20,2) #uma seque^ncia de 1 a 20, de dois em dois.
> x
[1] 1 3 5 7 9 11 13 15 17 19
> y<- x^3 # x ao cubo
> plot(x,y,type="l", main = "Tı´tulo" ,xlab="Eixo X aqui",ylab="EixoY aqui",col="blue" )
5 10 15
0
20
00
40
00
60
00
Título
Eixo X aqui
Ei
xo
 Y
 a
qu
i
3.2.2 Gra´fico de Barras: func¸a˜o barplot()
Para entender como sa˜o feitos os gra´ficos de barras, considere o exemplo a
seguir:
Exemplo 1: A tabela abaixo representa a distribuic¸a˜o de frequeˆncia dos da-
dos referentes a matr´ıculas de professores e alunos em escolas do munic´ıpio de
Nitero´i em 2009.
Escola de Ensino Fundamental Matr´ıculas de professores Matr´ıcula de alunos
Privada 1751 25280
Pu´blica Estadual 1186 21328
Pu´blica Municipal 947 18432
Pu´blica Federal 29 280
Total 3.913 65.320
Tabela 1: matr´ıculas de professores e alunos
13
> #Gra´fico de barras vertical ou gra´fico de colunas
> prof<-c(1751,1186,947,29)
> escola<-c("privada","estadual","municipal","federal")
> names(prof)<-c("privada","estadual","municipal","federal")
> barplot(prof, names.arg=escola, main="Distribuic¸~ao dos professores",
+ col=c(2,3,4,5),xlab="tipo de escola",ylab="nº de matrı´culas")
privada estadual municipal federal
Distribuição dos professores
tipo de escola
n
º 
de
 m
at
ríc
ul
as
0
50
0
10
00
15
00
14
> #Gra´fico de barras
> prof<-c( 29 ,947, 1186 , 1751)
> escola<-c("Federal" ,"Municipal","Estadual","Privada")
> names(prof)<-c("federal" ,"municipal","estadual","privada")
> barplot(prof, names.arg=escola, main="Distribuic¸~ao dos professores",
+ col=c(5,4,3,2),xlab="nº de matrı´culas",ylab="tipo de escola",
+ horiz=TRUE,angle=45)
>
Fe
de
ra
l
M
un
ic
ip
al
Es
ta
du
al
Pr
iva
da
Distribuição dos professores
nº de matrículas
tip
o 
de
 e
sc
ol
a
0 500 1000 1500
15
> #Gra´fico de barras alunos e professores
> alunosprof<- matrix(c(1751,1186,947,29,25280,21328,18432,280), nrow=4, ncol=2,
+ dimnames=list(c("privada", "estadual", "municipal", "federal"),
+ c("professores", "alunos")))
> barplot(alunosprof[,2:1],beside=TRUE, ylab="n. de matrı´culas",
+ xlab="matrı´cula",col=c("blue","red","green","orange"),
+ main="Distribuic¸~ao de professores e alunos")
>
alunos professores
Distribuição de professores e alunos
matrícula
n
. 
de
 m
at
ríc
ul
as
0
50
00
10
00
0
15
00
0
20
00
0
25
00
0
3.2.3 Histograma: a func¸a˜o hist()
A func¸a˜o hist() calcula uma distribuic¸a˜o de frequeˆncia para varia´veis con-
t´ınuas e gera um histograma de um conjunto de dados. Paraˆmetros adicionais
permitem a determinac¸a˜o da escala a ser utilizada no eixo vertical (frequeˆncias
absolutas ou relativas) e o nu´mero de intervalos.
Exemplo 2. Para se estudar o comportamento de uma planta t´ıpica de du-
nas, a Hydrocotille sp, quanto ao seu desenvolvimento, mediu-se o tamanho de
pec´ıolo (cm), em duas a´reas: seca e u´mida. Selecionou-se de cada uma dessas
a´reas amostras aleato´rias de plantas e mediu-se o tamanho dos pec´ıolos. Os
dados sa˜o fornecidos na tabela a seguir.
16
A´rea u´mida (X)
13,8 14,3 14,5 15,0 15,0 15,5 15,5 15,5 15,6
15,6 15,8 15,8 15,8 15,8 16,0 16,0 16,0 16,1
16,1 16,3 16,3 16,3 16,3 16,5 16,5 16,6 16,6
16,6 16,8 16,8 16,9 17,0 17,0 17,2 17,4
A´rea Seca (Y)
7,3 7,6 7,8 7,8 8,0 8,2 8,2 8,3 8,3
8,4 8,4 8,4 8,6 8,6 8,6 8,6 9,0 9,0
9,0 9,0 9,3 9,3 9,3 9,6 9,6 9,8 9,8
10,4 10,4 10,9 10,9 11,7 11,7 12,0
3.2.4 Entrando com os dados no R
> y <-c(13.8,14.3,14.5,15.0,15.0,15.5,15.5,15.5,15.6,
+ 15.6,15.8,15.8,15.8,15.8,16.0,16.0,16.0,16.1,
+ 16.1,16.3,16.3,16.3,16.3,16.5,16.5,16.6,16.6,
+ 16.6,16.8,16.8,16.9,17.0,17.0,17.2,17.4,7.3,
+ 7.6,7.8,7.8,8.0,8.2,8.2,8.3,8.3,
+ 8.4,8.4,8.4,8.6,8.6,8.6,8.6,9.0,9.0,
+ 9.0,9.0,9.3,9.3,9.3,9.6,9.6,9.8,9.8,
+ 10.4,10.4,10.9,10.9,11.7,11.7,12.0)
> dados <- data.frame(Areas = factor(rep(c("Area_Umida","Area_Seca"),
+ times=c(35,34))),Tamanho=y)
Ha´ um mecanismo no R de “anexar” objetos ao caminho de procura que permite
economizar um pouco de digitac¸a˜o. Veja os comandos abaixo.
> #attach(dados)
> # detach(precipitac¸~ao) para retirar o objeto Areas do
> # caminho de procura
> head(dados) # mostra as 6 primeiras linhas dos seus dados.
Areas Tamanho
1 Area_Umida 13.8
2 Area_Umida 14.3
3 Area_Umida 14.5
4 Area_Umida 15.0
5 Area_Umida 15.0
6 Area_Umida 15.5
Apo´s isso podemos fazer os diferentes tipos de gra´ficos que o sistema R dis-
ponibiliza para cada uma das varia´veis. Com esse comando attach(), agora,
precisamos digitar somente Areas ao inve´s de dados$Areas. Vamos prosseguir
com a ana´lise explorato´ria, obtendo algumas medidas e gra´ficos.
17
> par(mfrow=c(1,2))
> hist(dados[1:35,2],xlab="Tamanho (cm)",ylab="Freque^ncia Absoluta",
+ main="Area U´mida", col="red")
> hist(dados[36:69,2],xlab="Tamanho (cm)",ylab="Freque^ncia Absoluta",
+ main=" Area Seca",col="blue")
Area Úmida
Tamanho (cm)
Fr
eq
uê
nc
ia
 A
bs
ol
ut
a
14 15 16 17
0
2
4
6
8
 Area Seca
Tamanho (cm)
Fr
eq
uê
nc
ia
 A
bs
ol
ut
a
7 8 9 10 11 12
0
2
4
6
8
3.3 Explorando o histograma
Para explorar o histograma, vamos gerar um conjunto de dados utilizando a
func¸a˜o rnorm().
> par(mfrow=c(1,1))
> set.seed(12)
> dad<-rnorm(100)
Podemos gerar e gravar a distribuic¸a˜o de frequeˆncia com o comando:
> dadhist<-hist(dad)
> dadhist
$breaks
[1] -2.5 -2.0 -1.5 -1.0 -0.5 0.0 0.5 1.0 1.5 2.0 2.5
$counts
[1] 1 2 11 14 26 20 15 6 2 3
$intensities
18
[1] 0.02 0.04 0.22 0.28 0.52 0.40 0.30 0.12 0.04 0.06
$density
[1] 0.02 0.04 0.22 0.28 0.52 0.40 0.30 0.12 0.04 0.06
$mids
[1] -2.25 -1.75 -1.25 -0.75 -0.25 0.25 0.75 1.25 1.75 2.25
$xname
[1] "dad"
$equidist
[1] TRUE
attr(,"class")
[1] "histogram"
Ao executar a func¸a˜o hist() criamos um objeto de classe histogram, que
e´ uma list com os componentes listados acima.
breaks: e´ um vetor com os limites dos intervalos.
counts: E´ um vetor com as freque^ncias absolutas.
density: Conte´m as freque^ncias relativas
Podemos modificar o eixo vertical de frequeˆncias absolutas par relativas uti-
lizando o paraˆmetro “freq=FALSE” e o nu´mero de intervalos com os paraˆmetros
“breaks. Uma alternativa ao histograma e´ o gra´fico de densidades, que e´ mais
apropriado a` visualizac¸a˜o de distribuic¸o˜es cont´ınuas, visto que torna desneces-
sa´ria a divisa˜o das varia´veis cont´ınuas em intervalos discretos, o que minimiza a
perda de informac¸a˜o. Para comparar o histograma com o gra´fico de densidades,
podemos utilizar a func¸a˜o “density()” para criar um objeto da classe density
contendo as estimativas do nu´cleo para as densidades (frequeˆncias relativas) ao
longo da varia´vel.
> hist(dad,freq=F,col="red", xlab="dados gerados", ylab="Densidade",
+ main="Histograma com sua densidade")
> lines(density(dad))
19
Histograma com sua densidade
dados gerados
D
en
si
da
de
−2 −1 0 1 2
0.
0
0.
1
0.
2
0.
3
0.
4
0.
5
3.4 Boxplot: func¸a˜o boxplot()
Quando o propo´sito do gra´fico e´ comparar a distribuic¸a˜o de dois ou mais gru-
pos diferentes para uma mesma varia´vel, podemos utilizar a func¸a˜o boxplot().
> boxplot(Tamanho~Areas, xlab="A´reas",
+ ylab="Tamanho do pecı´olo (cm)")
20
l
Area_Seca Area_Umida
8
10
12
14
16
Áreas
Ta
m
a
n
ho
 d
o 
pe
cí
ol
o 
(cm
)
4 Exerc´ıcos utilizando o R
4.1 Exerc´ıcios
1. Um agricultor instalou um pluvio´metro para medir a precipitac¸a˜o num
dado terreno. Durante um ano, obteve os seguintes totais mensais (em mm):
Janeiro Fevereiro Marc¸o Abril Maio Junho
101,1 60,7 75,1 19,9 26,7 10,5
Julho Agosto Setembro Outubro Novembro Dezembro
2,5 39,8 5,7 51,7 50,1 170,6
Utilizando o pacote estat´ıstico R, responda a`s seguintes al´ıneas:
(a) Crieum vector com os 12 totais mensais indicados. Designe o objeto
criado por precip.
(b) Crie o vector meses com o nome dos 12 meses do ano.
(c) Associe a cada medic¸a˜o o nome do respectivo meˆs, utilizando o comando
names do R.
(d) Calcule, com a ajuda dos comandos estat´ısticos elementares de que o R
dispo˜e, as seguintes quantidades:
i. A precipitac¸a˜o total anual;
ii. A precipitac¸a˜o mensal me´dia;
21
iii. A precipitac¸a˜o mensal mediana;
iv. A variaˆncia das precipitac¸o˜es mensais;
v. O desvio padra˜o das precipitac¸o˜es mensais;
vi. A precipitac¸a˜o mensal mı´nima;
vii. A precipitac¸a˜o mensal ma´xima.
(e) Selecione o subvector
i. da precipitac¸a˜o no meˆs de Outubro;
ii. das precipitac¸o˜es nos meses de Junho a Setembro (inclusive);
(f) Seleccione o subvector dos meses com precipitac¸a˜o
i. superior a 50 mm;
ii. acima da me´dia.
(i) Execute os comandos
plot(precip, type="l")
plot(precip, type="h")
2. Duas varia´veis, X e Y, assumem os valores:
Calcular:
X 4 3 2 6 8 10 8 9 11 13 15 15
Y 40 33 28 56 78 90 89 92 101 98 102 105
(a)
∑n
i=1Xi;
(b)
∑n
i=1 Yi;
(c)
∑n
i=1XiYi;
(d)
∑n
i=1XiY
2
i ;
(e)
∑n
i=1(Xi + Yi)(Xi − Yi);
3. Lendo dados utilizando o read.table e inspecionando seu conteu´do.
> dados<-read.table("dados.txt",h=T)
> dados
Borda_da_Mata Mata_Fechada
1 0.2145 0.5521
2 0.2540 0.5841
3 0.2592 0.6284
4 0.2891 0.6357
5 0.2971 0.6489
6 0.3013 0.6570
7 0.3279 0.6704
8 0.3458 0.6780
9 0.3482 0.6842
22
10 0.3487 0.6898
11 0.3490 0.6945
12 0.3547 0.6950
13 0.3574 0.6970
14 0.3648 0.7125
15 0.3796 0.7126
16 0.3815 0.7154
17 0.3874 0.7179
18 0.3924 0.7256
19 0.3931 0.7321
20 0.3971 0.7783
21 0.4015 0.7884
22 0.4125 0.7894
23 0.4142 0.7912
24 0.4182 0.8023
25 0.4326 0.8046
26 0.4358 0.8451
27 0.4573 0.8467
28 0.4582 0.8468
29 0.4657 0.8564
30 0.4670 0.8654
31 0.4823 0.8665
32 0.4862 0.9214
33 0.4921 0.9421
34 0.5010 0.9573
35 0.5231 0.9689
Esses dados sa˜o relativos a` variac¸a˜o de luz no crescimento das plantas, medida
atrave´s da a´rea foliar espec´ıfica apo´s 60 dias, da espe´cie Cecropia glazioui, em
amostras situadas em borda de mata e mata fechada, com intensidade de luz
me´dia de 10,6% e 0,87%, respectivamente. A espe´cie C. glazioui, conhecida po-
pularmente por embau´ba, e´ uma planta pioneira, helio´fita, perinifolia, seletiva
higro´fila, ocorrendo preferencialmente em capoeiras e capoeiro˜es de derrubadas
recentes. Compare as duas amostras por meio de me´dia, desvio padra˜o, coefici-
ente de variac¸a˜o e pelo boxplot.
4 Em um experimento de competic¸a˜o de variedades de batatinhas, um pes-
quisador obteve as seguintes produc¸o˜es em t/ha, resultados de 18 repetic¸o˜es:
20,1 21,1 27,0 26,4 25,4 22,3 26,1 24,0 23,2
Huinkul
27,0 25,2 24,6 26,5 22,5 25,8 27,1 26,2 24,1
22,6 29,9 24,2 20,6 25,1 23,5 20,2 21,0 20,5
S. Rafaela
22,1 21,3 22,1 22,6 20,7 20,3 21,5 21,0 24,1
Para cada uma das variedades:
(a) calcule a me´dia, mediana e o desvio padra˜o;
(b) construa desenhos esquema´ticos (”box-plot”), usando a mesma escala para
23
as duas variedades;
(c)com base nos resultados obtidos em a) e b), voceˆ diria que uma das varieda-
des e´ superior a outra?Por que?
5 Distribuic¸o˜es de probabilidade
Encontra-se no programa R uma se´rie de distribuic¸o˜es teo´ricas de probabi-
lidades prontas. Para cada distribuic¸a˜o ha´ 4 operac¸o˜es ba´sicas indicadas pelas
letras:
d: calcula a densidade de probabilidade f(x) no ponto.
p: calcula a func¸~ao de probabilidade acumulada F(x) no ponto.
q: calcula o quantil correspondente a uma dada probabilidade.
r: retira uma amostra da distribuic¸~ao.
Para usar os func¸o˜es deve-se combinar uma das letras acima com uma abre-
viatura do nome da distribuic¸a˜o, por exemplo para calcular probabilidades usa-
mos: pnorm para normal, pexp para exponencial, pbinom para binomial e
assim por diante. Algumas distribuic¸o˜es existentes no R sa˜o:
Distribuic¸a˜o Func¸a˜o
Beta beta
Binomial binom
Cauchy cauchy
Qui-quadrado chisq
Exponencial exp
F f
Gamma gamma
Geome´trica geom
Hypergeome´trica hyper
Log-normal lnorm
Log´ıstica logis
Binomial Negativa nbinom
Normal norm
Poisson pois
t de Student t
Uniforme unif
Weibull weibull
Para conhecer os paraˆmetros necessa´rios em cada distribuic¸a˜o, use na linha
de comando, por exemplo, ?rbinom. Aparecera´ um menu de ajuda completo.
Vamos explorar a partir de agora as distribuic¸o˜es binomial e normal.
24
5.1 Distribuic¸a˜o Binomial
Para os ca´lculos de distribuic¸a˜o binomial usamos a func¸a˜o dbinom.
Exemplo 3. Seja X uma varia´vel aleato´ria com distribuic¸a˜o binomial com
n = 20 e p = 0.6. Vamos estudar no R os comandos para:
a) Fazer o gra´fico para a func¸a˜o de probabilidade.
b) Fazer o gra´fico para a func¸a˜o de probabilidade acumulada.
c) Calcular P(x=3).
d) Calcular P(X<2).
e) gerar 12 nu´meros desta distribuic¸a˜o.
> x<-1:20
> fx<-dbinom(x,20,0.6)
> fx
[1] 3.2985e-07 4.7004e-06 4.2304e-05 2.6969e-04 1.2945e-03 4.8544e-03
[7] 1.4563e-02 3.5497e-02 7.0995e-02 1.1714e-01 1.5974e-01 1.7971e-01
[13] 1.6588e-01 1.2441e-01 7.4647e-02 3.4991e-02 1.2350e-02 3.0874e-03
[19] 4.8749e-04 3.6562e-05
> plot(x,fx)
l l l l l
l
l
l
l
l
l
l
l
l
l
l
l
l l l
5 10 15 20
0.
00
0.
05
0.
10
0.
15
x
fx
25
> Fx<-pbinom(x, 20,0.6)
> plot(x,Fx)
l l l l l l
l
l
l
l
l
l
l
l
l
l l l l l
5 10 15 20
0.
0
0.
2
0.
4
0.
6
0.
8
1.
0
x
Fx
> dbinom(3,20,0.60)
[1] 4.2304e-05
> pbinom(2,20,0.6)
[1] 5.0413e-06
> rbinom(12,20,0.60)
[1] 8 14 12 10 8 11 13 16 12 13 10 18
5.2 Distribuic¸a˜o Normal
5.2.1 Probabilidade
A probabilidade de um evento em uma distribuic¸a˜o cont´ınua e´ uma a´rea sob
a curva da distribuic¸a˜o.
Seja X uma varia´vel aleato´ria com distribuic¸a˜o N(100,100). Para calcular a
probabilidade P[X < 95] usamos o comando:
26
> pnorm(95, 100, 10)
[1] 0.30854
em que no nosso exemplo temos:
pnorm(x = 95, me´dia = 100, desvio padr~ao =
√
100)
Vamos agora “esquecer” o comando pnorm() e ver uma outra forma de re-
solver usando integrac¸a˜o nume´rica. Lembrando que a normal tem a func¸a˜o de
densidade dada por
f(x) =
1√
2piσ2
exp{− 1
2σ2
(x− µ)2}
em que −∞ < x <∞, −∞ < µ <∞ e σ2 > 0
vamos definir uma func¸a˜o no R para a densidade normal deste problema:
> fn <- function(x) {
+ fx <- (1/sqrt(2 * pi * 100)) * exp((-1/200) * (x - 100)^2)
+ return(fx)
+ }
Para calcular a a´rea pedida sem usar a func¸a˜o pnorm() podemos usar a fun-
c¸a˜o de integrac¸a˜o nume´rica. Note que esta func¸a˜o, diferentemente da pnorm()
reporta ainda o erro de aproximac¸a˜o nume´rica.
> integrate(fn, -Inf, 95)
0.30854 with absolute error < 2.1e-06
Para obter o gra´fico desta distribuic¸a˜oo usamos o fato que a maior parte da
func¸a˜o esta´ no intervalo [X¯ − 3σ; X¯ + 3σ], portanto entre 70 e 130. Podemos
enta˜o fazer como nos comandos que se seguem. Para marcar no gra´fico a a´rea
que corresponde a probabilidade pedida criamos um pol´ıgono com coordenadas
ax e ay definindo o per´ımetro desta a´rea.
27
> x <- seq(70, 130, l = 200)
> fx <- fn(x)
> plot(x, fx, type = "l")
> ax <- c(70, 70, x[x < 95], 95, 95)
> ay <- c(0, fn(70), fx[x < 95], fn(95), 0)
> polygon(ax, ay, dens = 10)
70 80 90 100 110 120 130
0.
00
0.
01
0.
02
0.
03
0.
04
x
fx
5.3 Exerc´ıcios
Utilizando os conceitos apresentados acima, resolva os exerc´ıcios abaixo uti-
lizando a func¸a˜o pnorm(), o me´todo de integrac¸a˜o e utilizando tabela padro
nizada.
1. O peso me´dio de 500 estudantes do sexo masculino, de uma determinada
universidade, e´ 75,5 kg e o desviopadra˜o e´ 7,5 kg. Admitindo-se que os pesos
esta˜o distribu´ıdos normalmente, determinar quantos estudantes pesam:
(a) entre 60 e 77,5 kg; R.: 292, 87 ' 293
(b) mais do que 92,5 kg; R.: 6
2. O peso me´dio das reses que se encontram num curral de uma determinada
fazenda e´ 200kg, e o desvio padra˜o e´ de 10 kg. Em 120 animais retirados ao
acaso do curral, quantos pesara˜o mais de 185 kg? Vamos considerar que o peso
das reses tenha distribuic¸a˜o normal. R.: 111,984 ou seja 112 animais.
28
6 Ana´lise de frequeˆncias usando tabelas de con-
tingeˆncia
Em duas amostras tiradas de solos diferentes foram encontradas duas espe´-
cies de tatuzinho:
Tabela 2: Distribuic¸a˜o conjunta das varia´veis espe´cies e tipo de solos
Espe´cies
Tipos de solos Oniscus Armadilidium TOTAL
Solo argiloso 14 6 20
Solo calca´reo 22 46 68
TOTAL 36 52 88
Coloque os dados numa matriz e verifique a matriz x.
> x<-matrix(c(14,22,6,46),nc=2)
> x
[,1] [,2]
[1,] 14 6
[2,] 22 46
Rode o qui-quadrado com a correc¸a˜o de Yates, mesmo se voceˆ esquecer, ele
vai fazer a correc¸a˜o automaticamente.
> chisq.test(x, correct=TRUE)
Pearson's Chi-squared test with Yates' continuity correction
data: x
X-squared = 7.5706, df = 1, p-value = 0.005933
Ha´ uma associac¸a˜o significativa entre as varia´veis.
29
> barplot(x, names=c("Oniscus","Armadilidium"),
+ col=c(2,7),font=3,beside=TRUE)
> legend(1,30,c("Argiloso","Calca´reo"),fill=c(2,7))
>
Oniscus Armadilidium
0
10
20
30
40
Argiloso
Calcáreo
6.1 Exerc´ıcio
1. Um produtor de iogurte solicitou uma pesquisa a um estat´ıstico com o intuito
avaliar as prefereˆncias em relac¸a˜o aos iogurtes A e B dispon´ıveis no mercado.
O estat´ıstico solicitou ao seu estagia´rio que entrevistasse 2.000 consumidores:
1.000 homens e 1.000 mulheres. Os resultados sa˜o mostrados na Tabela 3. Ha´
associac¸a˜o entre o sexo e tipo de iogurte?
Tabela 3: Distribuic¸a˜o conjunta das varia´veis sexo e tipo de iogurte
Prefereˆncias
Tipos Homens Mulheres TOTAL
A 670 530 1200
B 330 470 800
TOTAL 1000 1000 2000
30
7 Noc¸a˜o ba´sica de programac¸a˜o no R
7.1 Comandos de lo´gica
Primeiro vamos ver o significado de alguns comandos:
> maior que
>= maior que ou igual a
< menor que
<= menor que ou igual a
== igualdade
! = diferenc¸a
> X<-c(5,6,8,11,15,20,26,33)
> Y<-c(6,8,10,12,14,16,18,20)
> X>Y # Retorna TRUE para os maiores e FALSE para os menores
[1] FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE
> X>=Y
[1] FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE
> X<Y
[1] TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE
> X==Y # Retorna TRUE para os X que s~ao iguais a Y
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
> X!=Y # Retorna TRUE para os X que s~ao diferentes de Y
[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
Agora vamos selecionar partes dos dados que obedecem a algum crite´rio de
selec¸a˜o.
7.1.1 Which
A func¸a˜o which funciona como se fosse a pergunta: Quais?
> a<-c(1,4,9,16,25,36,49,64,81,100)
> a>10 # Retorna um vetor contendo TRUE se for maior e FALSE se for menor
[1] FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
> which(a>10) # Equivale a pergunta: "Quais valores de a s~ao maiores que 10?".
[1] 4 5 6 7 8 9 10
> #Observe que a resposta e´ a posic¸~ao dos valores (o quarto, o quinto...)
> # e n~ao os valores que s~ao maiores que 10.
> a[4] # selecionamos o quarto valor de a
31
[1] 16
> a[c(4:10)] # selecionamos do quarto ao de´cimo valor
[1] 16 25 36 49 64 81 100
> a[which(a>=25)]
[1] 25 36 49 64 81 100
7.1.2 if
O comando condicional if tem a seguinte sintaxe:
Sintaxe:
If (condic¸~ao1){tarefa a ser realizada se condic¸~ao1=TRUE}.
Programa 1 Execute o Programa 1, para ver mais aplicac¸o˜es.
# Dado o nu´mero x , encontrar o mo´dulo de x , |x|
x1 <- 2
if (x1 >= 0) x = x1
x
x1 <- -3
if (x1 < 0) x = -x1
x
> x1 <- 2
> if (x1 >= 0) x = x1
> x
[1] 2
> x1 <- -3
> if (x1 < 0) x = -x1
> x
[1] 3
7.1.3 if else
A estrutura de decisa˜o if else, dispon´ıvel no R tem a seguinte sintaxe:
if (condic¸~ao) express~ao-1 else express~ao-2
Se a condic¸a˜o e´ verdadeira executa a expressa˜o-1, caso contra´rio executa a
expressa˜o-2.
Programa 2
> x <- 12
> x
32
# Avalia dois nu´mero "x"e "y"
x <- 12
x
y <- 13
y
if(x > y) z = x else z = y y
[1] 12
> y <- 13
> y
[1] 13
> if(x > y) z = x else z = y
> y
[1] 13
7.1.4 ifelse
O comando ifelse e´ uma versa˜o vetorizada do comando if else.
Sintaxe:
ifelse(condic¸~ao, express~ao-1, express~ao-2)
Este comando avalia as expresso˜es 1 e 2 e retorna ao valor apropriado para cada
uma, baseada na condic¸a˜o.
Programa 3
# Dado um vetor x encontrar o mo´dulo dos elementos de x
x <- -5:5
# Vers~ao vetorizada do if else
y <- ifelse(x >=0, x, -x)
y
> x <- -5:5
> y <- ifelse(x >=0, x, -x)
> y
[1] 5 4 3 2 1 0 1 2 3 4 5
7.2 Looping
Voceˆ pode querer fazer uma se´rie de tarefas dentro de um bloco de comandos,
ou ate´ mesmo fora dele. As tarefas iterativas (loops) podem ser feitas atrave´s
dos comandos, for, while e repeat. Os loops sa˜o geralmente empregados nos
programas, com as seguintes func¸o˜es:
a) Para repetir a mesma transformac¸a˜o (ou computac¸a˜o) sobre os elementos
de um vetor ou matriz.
33
b) Para formar somas, tais como, a`quelas associadas a variaˆncia amostral, ou
expansa˜o de se´ries de poteˆncias.
c) Para implementar me´todos iterativo
7.2.1 O loop for
O comando for funciona da seguinte maneira:
Sintaxe:
for(i in 1:n) comandos
Isso quer dizer que:
para cada valor i o R vai calcular os comandos que est~ao entre as cha-
ves {comandos}. O "i in 1:n"indica que os valores de i ser~ao i = 1
ate´ 1 = n. Ou seja, na primeira rodada do for o i sera´ igual a 1,
na segunda i = 2, e assim por diante ate´ i = n. Programa 4 Executando
# Vamos usar o for para elevar i valores ao quadrado:
for(i in 1:5)
{
x[i]<-i ∧ 2
}
x
o programa:
> w<-NULL
> for(i in 1:5){
+ w[i]<-i^2
+ }
> w
[1] 1 4 9 16 25
7.2.2 O loop while
O comando while permite que uma ac¸a˜o seja repetida ate´ que uma condic¸a˜o
seja verdadeira. No mometo que a condic¸a˜o deixar de ser verdadeira, isto e´,
passar a ser falsa, a ac¸a˜o na˜o mais se realiza.
Sintaxe:
while(condic¸~ao...)
{ac¸~ao...
}
Programa 5 Executando o programa:
> x=2
> while(x<=10)
+ {
+ print(x)
+ x = x + 3
+ }
34
# Dado os nu´meros de 2 a 12 imprimir esta seque^ncia
x=2
while(x<=10)
{
print(x)
x = x + 3
}
[1] 2
[1] 5
[1] 8
7.2.3 O loop repeat
Na˜o existe muita diferenc¸a entre o comando repeat e o comando while,
exceto que precisamos do comando break dentro do looping. Sintaxe:
repeat
{
express~ao } express~ao = uma express~ao matema´tica.
7.3 Exerc´ıcios
1 Fazer um algoritmo para calcular e imprimir as 10 primeiras poteˆncias de 3.
2 Usar o comando for para calcular a soma de 20 termos de
ex =
∞∑
i=0
xi
i!
= 1 + x+
x2
2
+
x3
3!
+ ...
dica: de^ um valor para x.
3 Escreva uma func¸a˜o para calcular
f(x) = x2 − 3x+ 2
Atribua uma sequencia de 100 valores e fac¸a o gra´fico desta func¸a˜o.
4 Escreva uma func¸a˜o que calcula o valor de
pi =
√√√√ ∞∑
i=0
6
i2
5 Gerar um co´digo que escolhe nu´meros para a mega sena.
(a) use esse co´digo para gerar um jogo;
(b) use esse co´digo para gerar 20 jogos;
(c) use esse co´digo para gerar 100 jogos;
35
6 Entendendo o conceito de intervalo de confianc¸a:
Passo 1: Fixar uma semente para gerar sempre os mesmos valores.
Passo 2: Gerar 1000 valores de uma populac¸a˜o Normal.
Passo 3: Sortear 100 amostras de tamanho 50 e para cada uma delas calcular
o intervalo de confianc¸a para a me´dia e verificar em quantosdesses intervalos a
me´dia populacional pertence.
Atenc¸a˜o: Este tutorial foi montado com base nas refereˆncias bibliogra´ficas
a seguir.
Refereˆncias
[1] BEASLEY; C, R. Bioestat´ıstica usando o R: Apostila de exemplos
para o bio´logo. Braganc¸a, 2004.
[2] RIBEIRO JUNIOR, J. I. Apostila: curso sobre o programa computa-
cional R - 2005.
[3] CARVALHO, S. P.; TANDEL, M.C.F.F. Apostila: Introduc¸a˜o ao am-
biente computacional R - 2006.
[4] BOTTER,D.A., SANDOVAL, M.C., ITANO, F., SANTOS, S.M. To´picos
de Estat´ıstica utilizando R.
36

Continue navegando