Baixe o app para aproveitar ainda mais
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 !
Compartilhar