Buscar

R-Aula 1 - Graduação em Estatística - ENCE

Prévia do material em texto

1
Estatística Computacional 1
Aula 1 - Usando o R como Calculadora
Alinne Veiga
Primeiro Semestre de 2017
2
No R
I Já sabemos que o R não trabalha com planilha
I Precisamos utilizar a linha de comando para que o R faça aquilo que nós queremos
I Podemos também criar scripts para executar e armazenar todos os nossos
comandos
3
Tipo de dados
I Lógico: TRUE FALSE
I Numérico: Inteiro ou real
I Complexo: Números com a parte imaginária
I Caracter: valores alfa-numéricos (texto)
4
Usando R como calculadora
Veja as seguintes operações:
4+ 3− 5
2× 5+ 1
32 + 14÷ 7
10÷ 200
Quais os seus resultados? Como faríamos isso no R?
I O R funciona como uma calculadora
I Temos operações de soma(+), subtração (-), multiplicação (*), divisão (/),
potenciação (ˆ)
5
Usando R como calculadora
4 + 3 - 5
## [1] 2
2 * 5 + 1
## [1] 11
3^2 + 14/7
## [1] 11
10 / 200
## [1] 0.05
6
Usando R como calculadora
Poderiamos ter pedido todos os comandos numa só linha e utilizar o ; (ponto e vírgula)
para separar cada equação
4+ 3 - 5; 2 * 5 + 1; 3^2 + 14/7; 10 / 200
## [1] 2
## [1] 11
## [1] 11
## [1] 0.05
7
Usando R como calculadora
Se quisermos mudar prioridades usamos os parênteses (e não colchetes ou chaves)
I Veremos que os colchetes são usados para fazer referência a elementos dentro de
um objeto
I Chaves podem ser utilizadas mas não é aconselhável
Verifique:
(4+ 3 - 5)+( 2 * 5 + 1)*(3^2 + 14/7)*(10 / 200)
## [1] 8.05
((4+ 3 - 5)+( 2 * 5 + 1)) * (3^2 + 14/7)*(10 / 200)
## [1] 7.15
((4+ 3 - 5)+( 2 * 5 + 1) * (3^2 + 14/7))*(10 / 200)
## [1] 6.15
8
Usando R como calculadora
Operadores Matemáticos
+ Adição - Subtração
* Produto
/ Divisão
ˆ Exponenciação
%% Resto da divisão
%/% Quociente de divisão inteira
9
Usando R como calculadora
7 / 3 # divisão
## [1] 2.333333
7 %/% 3 # parte inteira
## [1] 2
7 %% 3 # retorna o resto
## [1] 1
10
Usando R como calculadora
Operadores Relacionais
== Igual
!= Diferente
>= Maior ou Igual
<= Menor ou Igual
> Maior
< Menor
11
Usando R como calculadora
Operadores Lógicos
Operador AND (E) - & ou &&
No caso de comparação entre vetores, existe diferença entre & e &&.
& Comparação elemento a elemento
&& Comparação restrita ao 1º elemento de cada vetor
Operador OR (OU) - | ou ||
No caso de comparação entre vetores, existe diferença entre | e ||.
12
Usando R como calculadora
Operadores Lógicos
! NOT
& && AND
| || OR
~ Fórmula
13
Usando R como calculadora
Condições: Tabela Verdade - E
_ :E Resultado
TRUE TRUE TRUE
TRUE FALSE FALSE
FALSE TRUE FALSE
FALSE FALSE FALSE
14
Usando R como calculadora
Condições: Tabela Verdade - OU
_ :OU Resultado
TRUE TRUE TRUE
TRUE FALSE TRUE
FALSE TRUE TRUE
FALSE FALSE FALSE
15
Usando R como calculadora – Mais Exemplos
10+4 #(soma)
8-5+2 #(soma e subtração)
10^4 #(potenciação)
10^1/3 #(potenciação)
16
Usando R como calculadora – Mais Exemplos
10+4 #(soma)
## [1] 14
8-5+2 #(soma e subtração)
## [1] 5
10^4 #(potenciação)
## [1] 10000
10^1/3 #(potenciação)
## [1] 3.333333
17
Usando R como calculadora – Mais Exemplos
10^1/2 #(potenciação)
10^(1/2) #(potenciação)
10^(1/3) #(potenciação)
8/2 #(divisão real)
18
Usando R como calculadora – Mais Exemplos
10^1/2 #(potenciação)
## [1] 5
10^(1/2) #(potenciação)
## [1] 3.162278
10^(1/3) #(potenciação)
## [1] 2.154435
8/2 #(divisão real)
## [1] 4
19
Usando R como calculadora – Mais Exemplos
8/5 #(divisão real)
8%%5 #(resto da divisão inteira)
8%/%5 #(quociente da divisão inteira)
sqrt(8) #(raiz quadrada)
20
Usando R como calculadora – Mais Exemplos
8/5 #(divisão real)
## [1] 1.6
8%%5 #(resto da divisão inteira)
## [1] 3
8%/%5 #(quociente da divisão inteira)
## [1] 1
sqrt(8) #(raiz quadrada)
## [1] 2.828427
21
Usando R como calculadora – Mais Exemplos
sqrt(16) #(raiz quadrada)
9>1
4>3 & 5<1
4>3 | 5<1
22
Usando R como calculadora – Mais Exemplos
sqrt(16) #(raiz quadrada)
## [1] 4
9>1
## [1] TRUE
4>3 & 5<1
## [1] FALSE
4>3 | 5<1
## [1] TRUE
23
Usando R como calculadora – Mais Exemplos
8 > 4+8
8>4+8 | 5>2^2
"Amanda">"Ana"
"Amanda"<"Ana"
24
Usando R como calculadora – Mais Exemplos
8>4+8
## [1] FALSE
8>4+8 | 5>2^2
## [1] TRUE
"Amanda">"Ana"
## [1] FALSE
"Amanda"<"Ana"
## [1] TRUE
#Ordem alfabética
25
Usando R como calculadora – Mais Exemplos
"01" >"02"
## [1] FALSE
"01" < "02"
## [1] TRUE
"AA" > "XY"
## [1] FALSE
"AA" < "XY"
## [1] TRUE
26
Usando R como calculadora – Mais Exemplos
3>1 ; 4>5 ; 1>2 ; 4>-7
## [1] TRUE
## [1] FALSE
## [1] FALSE
## [1] TRUE
3>1 & 4>5 ; 3>1 & 4>5 | 1>2 | 4>-7
## [1] FALSE
## [1] TRUE
(T & F) ; F | F | T
## [1] FALSE
## [1] TRUE
27
Usando R como calculadora – Mais Exemplos
10+4 == 3
## [1] FALSE
8-5+2 != 4
## [1] TRUE
10^4 > 100
## [1] TRUE
10^1/3 <=3
## [1] FALSE
28
Algumas funções do base
exp(10) #Exponencial de um número x
log(10) #Logaritmo na base e de x (x>0)
log(10,10) #Logaritmo na base dez de x
log(10,3) #Logaritmo na base 3 de x
29
Algumas funções do base
exp(10) #Exponencial de um número x
## [1] 22026.47
log(10) #Logaritmo na base e de x (x>0)
## [1] 2.302585
log(10,10) #Logaritmo na base dez de x
## [1] 1
log(10,3) #Logaritmo na base 3 de x
## [1] 2.095903
30
Usando R como calculadora – Mais Exemplos
factorial(7) #Fatorial de um número
choose(4,2) #Calcula o número de combinações de n
#elementos em grupos de tamanho k.
options(digits=20) #(no dígitos na tela)
sin(60*pi/180) #seno de 60o (radianos)
sin(30*pi/180) #seno de 30o
31
Usando R como calculadora – Mais Exemplos
factorial(7) #Fatorial de um número
## [1] 5040
choose(4,2) #Calcula o número de combinações de n
## [1] 6
#elementos em grupos de tamanho k.
options(digits=20) #(no dígitos na tela)
sin(60*pi/180) #seno de 60o (radianos)
## [1] 0.8660254037844386
sin(30*pi/180) #seno de 30o
## [1] 0.49999999999999994
32
Usando R como calculadora – Mais Exemplos
options(digits=4)
sin(30*pi/180)
sin(60*pi/180)
cos(75*pi/180) #cosseno de 75o
tan(45*pi/180) #tangente de 45o
33
Usando R como calculadora – Mais Exemplos
options(digits=4)
sin(30*pi/180)
## [1] 0.5
sin(60*pi/180)
## [1] 0.866
cos(75*pi/180) #cosseno de 75o
## [1] 0.2588
tan(45*pi/180) #tangente de 45o
## [1] 1
34
Usando R como calculadora – Mais Exemplos
options(digits=6)
sin(30*pi/180)
## [1] 0.5
sin(60*pi/180)
## [1] 0.866025
cos(75*pi/180) #cosseno de 75o
## [1] 0.258819
tan(45*pi/180) #tangente de 45o
## [1] 1
35
Usando R como calculadora – Mais Exemplos
floor(x) Retorna o maior inteiro que não ultrapassa x
floor(4.5678);floor(5.999)
floor(-1.2) #Retorna o menor inteiro
trunc(4.5678) #Retorna o valor truncado
trunc(5.999)
36
Usando R como calculadora – Mais Exemplos
floor(x) Retorna o maior inteiro que não ultrapassa x
floor(4.5678);floor(5.999)
## [1] 4
## [1] 5
floor(-1.2) #Retorna o menor inteiro
## [1] -2
trunc(4.5678) #Retorna o valor truncado
## [1] 4
trunc(5.999)
## [1] 5
37
Usando R como calculadora – Mais Exemplos
round(numero,numero_de_casas)
round(4.567) #Arredonda um número real
round(4.567,1) #Arredonda considerando uma casa decimal
38
Usando R como calculadora – Mais Exemplos
round(numero,numero_de_casas)
round(4.567) #Arredonda um número real
## [1] 5
round(4.567,1) #Arredonda considerando umacasa decimal
## [1] 4.6
39
Usando R como calculadora – Mais Exemplos
ceiling(x) - Retorna o menor inteiro maior do que x.
ceiling(4.3);ceiling(4.9)
ceiling(-1.25)
40
Usando R como calculadora – Mais Exemplos
ceiling(x) - Retorna o menor inteiro maior do que x.
ceiling(4.3);ceiling(4.9)
## [1] 5
## [1] 5
ceiling(-1.25)
## [1] -1
41
Usando R como calculadora – Mais Exemplos
ceiling(7.85);floor(7.85)
## [1] 8
## [1] 7
ceiling(-4.35);floor(-4.35)
## [1] -4
## [1] -5
42
= e <-
I No R podemos utilizar o sinal = ou <- para a atribuição (a objetos)
I O operador = pode não funcionar em algumas situações e o operador <- é mais
aconselhável
I Um objeto é como uma “caixa” com um nome
I Você pode colocar qualquer tipo de valor dentro da caixa
I Costumamos dizer que o objeto recebe aquilo depois de <-
43
= e <-
x<-2 #(atribui o valor 2 para x)
x #(mostra o valor de x)
## [1] 2
print(x) #(mostra o valor de x)
## [1] 2
x <- x+2 #(incremento) (renovando o valor de x)
x
## [1] 4
44
= e <-
x<-sqrt(2) #(atribui um valor real)
x
## [1] 1.41421
x<-"ENCE"; x #(cria uma string ou caractere)
## [1] "ENCE"
mode(x) #(Retorna o tipo de variável)
## [1] "character"
45
= e <-
x<-8^2; x; mode(x)
## [1] 64
## [1] "numeric"
?mode
46
= e <-
Figure 1
47
Mensagens de erro - Menssagens especiais
Sempre atentos
NA Not Available (missing)
Inf Infinito (x/0 onde x é diferente de zero)
NaN Not a Number (0/0)
48
Mensagens de erro - Menssagens especiais
> a <-4
>
> a*5 -
+
+ 3
[1] 17
Esse é o tal que sempre acontece!
49
Trabalhando com scripts
I SCRIPT é um arquivo permanente, que permite repetir comandos, fazer anotações ,
compartilhar etc. . .
I É como um arquivo .txt com todos os comandos em sequência e esse arquivo
pode ser avaliado - ou Rodado - para produzir resultados
50
Trabalhando com scripts
O que é rodar o SCRIPT?
I É como se estivesse levando os comandos do sript para a linha de comando.
Como iniciar um SCRIPT?
I Se estiver no RGui, vá em File -> New script;
I Se estiver no RStudio, vá em File -> New File -> R Script
Qual a maior vantagem de se trabalhar com um SCRIPT?
I Não precisar redigitar tudo toda vez!
51
Trabalhando com scripts
Figure 2
52
Trabalhando com scripts
Figure 3
53
Trabalhando com scripts
Qual outas vantagem de usar SCRIPT?
I É possivel salvar para ser atualizado em diferentes sessões
Além disso é possível inserir documentação em formato de comentário
I Isso permite que você adicione sua linha de pensamento, anotações, explicações ou
análise feitas passo-a-passo
I Essas anotações ajudam a lembrar de onde paramos ou o que pensamos quando
escrevemos o script
Sendo assim, qualquer informação que não queremos que o R considere como
comando iremos adicionar após o símbolo #
54
Trabalhando com scripts
É boa prática começar cada script com alguma documentação de data, autoria e sobre
o que se trata o SCRIPT, por exemplo
# Feito por: Alinne Veiga
# 08/03/2017
# Primeiro script da turma de Estatística Computacional 1
55
Trabalhando com scripts
Figure 4
56
Trabalhando com scripts
Desde o começo, salve o seu script. No RStudio tem um butão de disquete para salvar
o sript ou você pode ir em File -> Save
Figure 5
57
Trabalhando com scripts
I Quando um script é salvo, você salva um arquivo com a extensão .R
I Note: se você apenas digitar as linhas no script, nada acontece até que você dê
um comando através de algumas combinações de teclas do teclado ou faça isso
através dos menus.
58
Trabalhando com scripts
No RGui temos:
Figure 6
59
Trabalhando com scripts
No RStudio temos:
Figure 7
60
Trabalhando com scripts
Figure 8
61
Trabalhando com scripts
Se quiser rodar algumas das linhas: selecione as linhas e Ctrl + R
I Ou, simplesmente, selecione as linhas ou a linha que você queira rodar e aperte o
Ctrl + R .
I Esse comando funciona nos dois: Rgui e Rstudio
Note: No RStudio, a composição do script se torna facilitada com ferramentas de auto
preenchimento
I Além disso, se apertarmos a tecla <TAB> quando digitamos uma função, o RStudio
demonstrará os próximos passos de nossa digitação, vejam a seguir
62
Trabalhando com scripts
Figure 9
63
Trabalhando com scripts
Considere como nosso primeiro script
# Feito por: Alinne Veiga
# 08/03/2017
# Primeiro script da turma de Estatística Computacional 1
#Limpando objetos anteriores
rm(list = ls())
#Sabendo qual o diretório de trabalho atual
getwd()
## [1] "U:/Disciplinas_2017/EstatComp1/aulas/Aula1"
#Mudando o diretótio de trabalho
setwd("U:/Disciplinas_2017/EstatComp1/aulas/Aula1")
#Confirmando o diretório
getwd()
## [1] "U:/Disciplinas_2017/EstatComp1/aulas/Aula1"
64
Trabalhando com scripts
Se você tem um script já pronto e testado e quer rodá-lo de uma vez, faça:
source("exemplo_script.R")
Para esse script não há nada para ser mostrado. . .
65
Trabalhando com scripts
Caso você não lembre de começar digitando pelo Script você pode optar por copiar o
conteúdo no “History” para um Script e depois limpar de acordo com a necessidade
Você pode copiar todo o history ou um pedaço dele, selecionando as linhas que você
quer copiar e aperte no botão “To Source”
Figure 10
66
Trabalhando com scripts
Um script será iniciado e basta você salvar o script de acordo.
Figure 11
67
Tipos de objetos
I No R tudo é progamável e podemos armazenar diversos tipos de informações em
objetos
I Os objetos ficam armazenados no workspace - ou área de trabalho
objeto<- expressão
68
Tipos de objetos
I Já mencionei, rapidamente, que o R trabalha com o conceito de programação
orientada a objetos.
I Ex: Uma regressão: Quando efetua uma regressão utilizando o SAS ou o SPSS, há uma
grande quantidade de informação apresentada na tela.
I Em contrapartida, ao utilizar o R para efetuar uma regressão (função lm()), o R retorna
todos os resultados da regressão em um objeto (coeficientes, resíduos, etc).
69
Tipos de objetos
Exemplo de uma regressão com a função lm()
##
## Call:
## lm(formula = y ~ x, data = dummy)
##
## Residuals:
## Min 1Q Median 3Q Max
## -5.348 -2.368 0.094 2.083 5.281
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1.103 1.349 -0.82 0.42
## x 1.100 0.113 9.77 1.3e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.9 on 18 degrees of freedom
## Multiple R-squared: 0.841, Adjusted R-squared: 0.832
## F-statistic: 95.4 on 1 and 18 DF, p-value: 1.28e-08
70
Tipos de objetos
O que está contido no objeto gerado da função lm()
## [1] "assign" "call" "coefficients" "df.residual"
## [5] "effects" "fitted.values" "model" "qr"
## [9] "rank" "residuals" "terms" "xlevels"
71
Tipos de objetos
I R é polimórfico - Uma função pode ser aplicada a diferentes tipos de entradas (Ex:
plot, summary).
I Todo objeto recebe um nome - qualquer nome de acordo com o criador do objeto
(verificando certos limites)
Para lembrar: ls() lista todos os objetos na área de trabalho e rm() os remove
ls()
## [1] "dummy" "fm" "w" "x"
rm("fm","x")
72
Tipos de objetos
Um objeto pode conter o valor de um escalar, um vetor, uma matriz, uma lista, um
arquivo de dados
escalar<- 1; escalar
## [1] 1
vetor<-c (3 ,7 ,2 ,12);vetor
## [1] 3 7 2 12
matriz<-matrix(vetor,ncol=2); matriz
## [,1] [,2]
## [1,] 3 2
## [2,] 7 12
73
Tipos de objetos
lista<-list(nome="Paulo",idade=42,renda=5380.5,dirige=T); lista
## $nome
## [1] "Paulo"
##
## $idade
## [1] 42
##
## $renda## [1] 5380.5
##
## $dirige
## [1] TRUE
74
Tipos de objetos
idade<-sample(18:30,10,replace=TRUE); idade
## [1] 22 18 24 30 23 23 30 29 23 23
periodo<-sample(1:8,10,replace=TRUE); periodo
## [1] 7 1 8 3 3 7 6 5 2 5
trabalha<-sample(c("sim","não"),10,replace=TRUE); trabalha
## [1] "sim" "sim" "não" "não" "não" "não" "sim" "não" "não" "não"
cr<-sample(50:100,10,replace=TRUE)/10;cr
## [1] 9.2 5.4 9.2 5.4 5.6 8.6 9.8 6.6 6.6 5.0
75
Tipos de objetos
arq_dados<- data.frame(idade,periodo,trabalha,cr); arq_dados
## idade periodo trabalha cr
## 1 22 7 sim 9.2
## 2 18 1 sim 5.4
## 3 24 8 não 9.2
## 4 30 3 não 5.4
## 5 23 3 não 5.6
## 6 23 7 não 8.6
## 7 30 6 sim 9.8
## 8 29 5 não 6.6
## 9 23 2 não 6.6
## 10 23 5 não 5.0
76
Tipos de objetos
example(sample)
##
## sample> x <- 1:12
##
## sample> # a random permutation
## sample> sample(x)
## [1] 10 9 7 1 5 4 8 6 11 2 12 3
##
## sample> # bootstrap resampling -- only if length(x) > 1 !
## sample> sample(x, replace = TRUE)
## [1] 12 8 7 4 9 12 3 8 10 3 9 11
##
## sample> # 100 Bernoulli trials
## sample> sample(c(0,1), 100, replace = TRUE)
## [1] 1 1 0 0 0 0 1 0 0 1 0 1 1 0 1 0 1 0 1 1 1 0 1 1 0 0 0 0 1 1 1 0 1 0 1
## [36] 1 0 0 0 0 1 0 1 1 0 1 0 1 1 0 0 1 1 0 0 0 0 1 0 1 0 1 0 1 0 1 0 0 1 0
## [71] 1 0 1 0 0 0 0 1 1 0 1 1 1 0 1 1 1 1 1 0 0 0 1 0 1 0 0 0 1 1
##
## sample> ## More careful bootstrapping -- Consider this when using sample()
## sample> ## programmatically (i.e., in your function or simulation)!
## sample>
## sample> # sample()'s surprise -- example
## sample> x <- 1:10
##
## sample> sample(x[x > 8]) # length 2
## [1] 10 9
##
## sample> sample(x[x > 9]) # oops -- length 10!
## [1] 7 4 3 1 2 9 8 10 5 6
##
## sample> sample(x[x > 10]) # length 0
## integer(0)
##
## sample> resample <- function(x, ...) x[sample.int(length(x), ...)]
##
## sample> resample(x[x > 8]) # length 2
## [1] 9 10
##
## sample> resample(x[x > 9]) # length 1
## [1] 10
##
## sample> resample(x[x > 10]) # length 0
## integer(0)
##
## sample> ## R 3.x.y only
## sample> sample.int(1e10, 12, replace = TRUE)
## [1] 8360457446 9603296394 5027204740 6738881524 6826656784 9795538532
## [7] 4394607863 8815152230 1479498309 1836601752 4244872580 8830488495
##
## sample> sample.int(1e10, 12) # not that there is much chance of duplicates
## [1] 8457209801 2766013406 9386811622 740588921 493649809 7141575294
## [7] 5413864054 2264917087 4615879670 7578686398 2773669961 7258438391
77
Tipos de objetos
Figure 12
78
O comando c()
I Esse comando já apareceu algumas vezes até aqui.
I c() pertence à base do R e é necessário para entrada de dados. Os argumentos
dessa função formarão um vetor - que é formado por combinar cada argumento:
c(1,7:9)
## [1] 1 7 8 9
c(1:5, 10.5, "next")
## [1] "1" "2" "3" "4" "5" "10.5" "next"
I Esse comando será muito utilizado em exemplos e exercícios nas próximas aulas.
79
O comando seq()
I seq()também é uma função da base do R e serve para gerar sequência de dados.
I Sequências podem ser geradas de diferentes formas, e iremos retornar a essa
questão nas próximas aulas. Mas uma forma alternativa é apenas utilizando o :
seq(17)
## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
1:17
## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
80
Pra Casa!
Instalar R e RStudio nos computadores de “casa” (para quem puder) e repetir os
comandos vistos até agora !

Continue navegando