introdução ao rmbranco/dicas_r.pdf · apoio: andressa cerqueira (aluna do programa pae) 1 . para...

24
Análise de Dados e Simulação Márcia D’Elia Branco http://www.ime.usp.br/~mbranco Introdução ao R Apoio: Andressa Cerqueira (Aluna do Programa PAE) 1

Upload: others

Post on 27-Oct-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introdução ao Rmbranco/Dicas_R.pdf · Apoio: Andressa Cerqueira (Aluna do Programa PAE) 1 . Para procurar algum comando que já foi utilizado basta apertar a tecla do seu teclado

Análise de Dados e Simulação

Márcia D’Elia Branco

http://www.ime.usp.br/~mbranco

Introdução ao R

Apoio: Andressa Cerqueira (Aluna do Programa PAE)

1

Page 2: Introdução ao Rmbranco/Dicas_R.pdf · Apoio: Andressa Cerqueira (Aluna do Programa PAE) 1 . Para procurar algum comando que já foi utilizado basta apertar a tecla do seu teclado

Para procurar algum

comando que já foi

utilizado basta apertar a

tecla do seu teclado

2

Prompt do R

Utilizamos o símbolo # para

fazer comentários no R.

Page 3: Introdução ao Rmbranco/Dicas_R.pdf · Apoio: Andressa Cerqueira (Aluna do Programa PAE) 1 . Para procurar algum comando que já foi utilizado basta apertar a tecla do seu teclado

A Ajuda do R é útil para entender a finalidade de algum código e para conhecer seus parâmetros.

Exemplos:

help.search("mean")

help(mean)

help(package=cluster)

example(mean)

Procurar por “mean” em todos os pacotes instalados

Obter ajuda sobre o comando “mean”

Obter ajuda sobre o pacote “cluster”

Mostrar exemplo do comando “mean”

3

Ajuda

Page 4: Introdução ao Rmbranco/Dicas_R.pdf · Apoio: Andressa Cerqueira (Aluna do Programa PAE) 1 . Para procurar algum comando que já foi utilizado basta apertar a tecla do seu teclado

log(x) Log de base e de x

exp(x) e^x

log(x,n) Log de base n de x

log10(x) Log de base 10 de x

Sqrt(x) Raiz quadrada de x

choose(n,x) Combinação de n por x

cos(x), sen(x), tan(x) Funções trigonométricas de x em radianos

factorial(x) fatorial de x

abs(x) valor absoluto de x

floor(x) retorna a parte inteira de x

Símbolos: + - / * ^

4

Operações aritméticas

Page 5: Introdução ao Rmbranco/Dicas_R.pdf · Apoio: Andressa Cerqueira (Aluna do Programa PAE) 1 . Para procurar algum comando que já foi utilizado basta apertar a tecla do seu teclado

5

Leitura dos dados

> x <- scan()

1: 5 5 3 3 4 5 6 4 7 7 #basta digitar ou “colar” os valores 11:

Read 10 items

> x

[1] 5 5 3 3 4 5 6 4 7 7

Leitura dos dados a partir de um vetor sem a separação por vírgulas:

Leitura dos dados a partir de arquivo:

>read.table(“endereço completo do arquivo de dados”,h=T)

# h=T indica que a primeira linha dos dados possui o nome das colunas. Caso contrário, use h=F # para mais informações sobre os parâmetros deste comando utilize >help(read.table)

Page 6: Introdução ao Rmbranco/Dicas_R.pdf · Apoio: Andressa Cerqueira (Aluna do Programa PAE) 1 . Para procurar algum comando que já foi utilizado basta apertar a tecla do seu teclado

6

Tipos de Objetos:

Os tipos básicos de objetos do R são: • Vetores • Matrizes e arrays • Data-frames • Listas • Funções

Criando Objetos

x <- 10 #o objeto x recebe o valor 10 y <- sqrt(64) #o objeto y recebe o valor da operação x ou print(x) #mostra o conteúdo do objeto x mode(x) #mostra o tipo do objeto x is.numeric(x), is.vector(), is.matrix() #verifica o tipo de objeto

Objetos

Page 7: Introdução ao Rmbranco/Dicas_R.pdf · Apoio: Andressa Cerqueira (Aluna do Programa PAE) 1 . Para procurar algum comando que já foi utilizado basta apertar a tecla do seu teclado

7

Vetores

> x <- c(2,4,6,8) #cria um vetor com os valores dados > x

[1] 2 4 6 8

> x[3] #exibe a terceira entrada do vetor [1] 6

> y <- 7:11 #cria a sequência de 7 a 11 > y

[1] 7 8 9 10 11

> z <- seq(7,11,1) #cria a sequência de 7 a 11 > z

[1] 7 8 9 10 11

> z <- seq(7,11,2) #cria a sequência de 7 a 11 de 2 em 2 > z

[1] 7 9 11

> rep(2,6) #cria uma repetição [1] 2 2 2 2 2 2

> rep(c(1,2),5)

[1] 1 2 1 2 1 2 1 2 1 2

Comandos e exemplos:

Page 8: Introdução ao Rmbranco/Dicas_R.pdf · Apoio: Andressa Cerqueira (Aluna do Programa PAE) 1 . Para procurar algum comando que já foi utilizado basta apertar a tecla do seu teclado

8

Listas

As listas permitem combinar diferentes tipos de objetos em um mesmo objeto.

Comandos e exemplos:

> l <- list(turma="A", notas=c(7,8.5,9,10,4,3))

> l

$turma

[1] "A"

$notas

[1] 7.0 8.5 9.0 10.0 4.0 3.0

> is.list(l) #verifica se o objeto l é uma lista [1] TRUE

> l$turma #acessa o objeto turma da lista [1] "A“

> names(l) #lista o nome dos objetos de l [1] "turma" "notas"

Page 9: Introdução ao Rmbranco/Dicas_R.pdf · Apoio: Andressa Cerqueira (Aluna do Programa PAE) 1 . Para procurar algum comando que já foi utilizado basta apertar a tecla do seu teclado

9

Matrizes

Comandos e exemplos:

> x <- c(1,5,7,8,3,3,5,9) #cria um vetor > mat <-matrix(x,ncol=4) #cria a matriz a partir do vetor > mat

[,1] [,2] [,3] [,4]

[1,] 1 7 3 5

[2,] 5 8 3 9

> dim(mat) #dimensões da matriz [1] 2 4

> mat <- matrix(1:4,ncol=2)

> mat

[,1] [,2]

[1,] 1 3

[2,] 2 4

> y<- c(1,5)

> rbind(mat,y) #adiciona o vetor como linha da matriz [,1] [,2]

1 3

2 4

y 1 5

> cbind(mat,y) #adiciona o vetor comocoluna da matriz y

[1,] 1 3 1

[2,] 2 4 5

Page 10: Introdução ao Rmbranco/Dicas_R.pdf · Apoio: Andressa Cerqueira (Aluna do Programa PAE) 1 . Para procurar algum comando que já foi utilizado basta apertar a tecla do seu teclado

10

Matrizes

Comandos e exemplos:

> mat <- matrix(1:12,ncol=3)

> mat

[,1] [,2] [,3]

[1,] 1 5 9

[2,] 2 6 10

[3,] 3 7 11

[4,] 4 8 12

> mat[2,3] #seleciona a segunda linha e terceira coluna da matriz [1] 10

> mat[2,] #seleciona a segunda linha da matriz [1] 2 6 10

> mat[,3] #seleciona a terceira coluna da matriz [1] 9 10 11 12

> mat[c(1,4),] #seleciona mais de uma linha da matriz [,1] [,2] [,3]

[1,] 1 5 9

[2,] 4 8 12

> mat[c(1,4),c(2,3)]

[,1] [,2]

[1,] 5 9

[2,] 8 12

Page 11: Introdução ao Rmbranco/Dicas_R.pdf · Apoio: Andressa Cerqueira (Aluna do Programa PAE) 1 . Para procurar algum comando que já foi utilizado basta apertar a tecla do seu teclado

11

Comandos e exemplos: Médias finais de três turmas. > mat <-

rbind(c(7,8.3,9,4.7,6.8,9,4.5,8.2),c(5.5,7.1,8,5,9,8,10,4.7),c(10,4,

7,3.2,7.3,8,9,7.5))

> mat

[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]

[1,] 7.0 8.3 9 4.7 6.8 9 4.5 8.2

[2,] 5.5 7.1 8 5.0 9.0 8 10.0 4.7

[3,] 10.0 4.0 7 3.2 7.3 8 9.0 7.5

> mat >= 5

[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]

[1,] TRUE TRUE TRUE FALSE TRUE TRUE FALSE TRUE

[2,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE

[3,] TRUE FALSE TRUE FALSE TRUE TRUE TRUE TRUE

> 1*(mat >= 5)

[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]

[1,] 1 1 1 0 1 1 0 1

[2,] 1 1 1 1 1 1 1 0

[3,] 1 0 1 0 1 1 1 1

> notas_rep <- mat[mat<5]

> notas_rep

[1] 4.0 4.7 3.2 4.5 4.7

Operações com Matrizes e vetores

Page 12: Introdução ao Rmbranco/Dicas_R.pdf · Apoio: Andressa Cerqueira (Aluna do Programa PAE) 1 . Para procurar algum comando que já foi utilizado basta apertar a tecla do seu teclado

12

Operações com Matrizes e vetores

> rowSums(mat)/8 #calcular a médias das turmas

[1] 7.1875 7.1625 7.0000

> mean(mat) #determinar a média das notas de todas as turmas

[1] 7.116667

> sum(mat<5) #número de alunos reprovados

[1] 5

> which(mat[1,]<5) #para saber quais alunos foram reprovados da turma 1

[1] 4 7

Comandos e exemplos: Médias finais de três turmas.

Page 13: Introdução ao Rmbranco/Dicas_R.pdf · Apoio: Andressa Cerqueira (Aluna do Programa PAE) 1 . Para procurar algum comando que já foi utilizado basta apertar a tecla do seu teclado

13

Funções

Criando Funções:

nome_da_funcao <- function(argumento1, argumento2, ..., argumento n){

comandos da função

}

Exemplo1: Criar uma função para o cálculo da média

Escrever a função

Page 14: Introdução ao Rmbranco/Dicas_R.pdf · Apoio: Andressa Cerqueira (Aluna do Programa PAE) 1 . Para procurar algum comando que já foi utilizado basta apertar a tecla do seu teclado

14

Funções

> media <- function(dados){

med <- sum(dados)/length(dados)

return(med)

}

> x <- c(12,34,56.7,25.3,17,29)

> media(x)

[1] 29

• Execuções condicionais if (condição) expressão_1 else expressão_2 > x<-4

> if(x<6 & x>3) print("Verdadeiro") else print("Falso")

[1] "Verdadeiro“

• Ciclos while(condição) for(condição)

Page 15: Introdução ao Rmbranco/Dicas_R.pdf · Apoio: Andressa Cerqueira (Aluna do Programa PAE) 1 . Para procurar algum comando que já foi utilizado basta apertar a tecla do seu teclado

15

Exemplos

Exemplo1: Obter o valor de via simulação

Page 16: Introdução ao Rmbranco/Dicas_R.pdf · Apoio: Andressa Cerqueira (Aluna do Programa PAE) 1 . Para procurar algum comando que já foi utilizado basta apertar a tecla do seu teclado

16

Exemplos

Exemplo1: Obter o valor de via simulação

Page 17: Introdução ao Rmbranco/Dicas_R.pdf · Apoio: Andressa Cerqueira (Aluna do Programa PAE) 1 . Para procurar algum comando que já foi utilizado basta apertar a tecla do seu teclado

17

Exemplos

#código para obter o valor de “pi” por simulação

n <- 10000 #número de simulações

u1 <- runif(n,0,1)

u2 <- runif(n,0,1)

i <- numeric(n)

for(k in 1:n){

v <- (2*u1[k]-1)^2 + (2*u2[k]-1)^2

if(v <=1) i[k] <- 1

}

PI <- mean(i)*4

PI

Page 18: Introdução ao Rmbranco/Dicas_R.pdf · Apoio: Andressa Cerqueira (Aluna do Programa PAE) 1 . Para procurar algum comando que já foi utilizado basta apertar a tecla do seu teclado

18

Exemplos

#código para obter o valor de “pi” por simulação

n <- 10000 #número de simulações

u1 <- runif(n,0,1)

u2 <- runif(n,0,1)

i <- numeric(n)

for(k in 1:n){

v <- (2*u1[k]-1)^2 + (2*u2[k]-1)^2

if(v <=1) i[k] <- 1

}

PI <- mean(i)*4

PI

#código para obter o valor de “pi” por simulação

n <- 10000

u1 <- runif(n,0,1)

u2 <- runif(n,0,1)

v <- (2*u1 - 1)^2 + (2*u2 -1)^2

PI <- (sum(v<=1)/n)*4

PI

Page 19: Introdução ao Rmbranco/Dicas_R.pdf · Apoio: Andressa Cerqueira (Aluna do Programa PAE) 1 . Para procurar algum comando que já foi utilizado basta apertar a tecla do seu teclado

19

Exemplos

n=100 n=1.000 n=10.000 n=100.000 Valores Simulados 3,28 3,236 3,142 3,14184

Para n=100.000 obtivemos os tempos de simulação:

• Código 1 (usando “for”) 0,86s • Código 2 0,01s

Page 20: Introdução ao Rmbranco/Dicas_R.pdf · Apoio: Andressa Cerqueira (Aluna do Programa PAE) 1 . Para procurar algum comando que já foi utilizado basta apertar a tecla do seu teclado

20

Exemplos

Exemplo2: Simular a variável X com distribuição binomial(n,p)

Page 21: Introdução ao Rmbranco/Dicas_R.pdf · Apoio: Andressa Cerqueira (Aluna do Programa PAE) 1 . Para procurar algum comando que já foi utilizado basta apertar a tecla do seu teclado

21

Exemplos

#Simulando da distribuição binomial(n,p)

n <- 10

p <- 0.4

u <- runif(1,0,1)

c <- p/(1-p)

pr <- F <- (1-p)^n

i <- stop <- 0

while(stop==0){

if( u < F){

x <- i

stop<-1

}

else {

pr <- (c*(n-i)*pr)/(i+1)

F <- F + pr

i <- i+1

print(i)

}

}

x

Page 22: Introdução ao Rmbranco/Dicas_R.pdf · Apoio: Andressa Cerqueira (Aluna do Programa PAE) 1 . Para procurar algum comando que já foi utilizado basta apertar a tecla do seu teclado

22

Exemplos

Para simular uma amostra da variável X com distribuição binomial(n,p)

binomial <- function(n,p,r){

u <- runif(1,0,1)

c <- p/(1-p)

F <- numeric(n+1)

pr <- F[1] <- (1-p)^n

for(i in 0:(n-1)){

pr <- (c*(n-i)*pr)/(i+1)

F[i+2] <- F[i+1] + pr

i <- i+1

print(i)

}

u <- runif(r,0,1)

x <- numeric(r)

for(i in 1:r){

x[i] <- which(u[i] <F)[1] -1

}

return(x)

}

Page 23: Introdução ao Rmbranco/Dicas_R.pdf · Apoio: Andressa Cerqueira (Aluna do Programa PAE) 1 . Para procurar algum comando que já foi utilizado basta apertar a tecla do seu teclado

23

Exemplos

> histograma <- function(n,p){

media <- numeric(1000)

for(i in 1:1000){

x <- rbinom(100,n,p)

media[i] <- mean(x)

}

hist(media, freq=FALSE,main="Histograma")

}

> histograma(10,0.3)

Exemplo3: Simular mil amostras de tamanho 100 da distribuição binomial de parâmetros n e p. Utilizar as simulações para construir o gráfico da densidade da média da binomial.

Page 24: Introdução ao Rmbranco/Dicas_R.pdf · Apoio: Andressa Cerqueira (Aluna do Programa PAE) 1 . Para procurar algum comando que já foi utilizado basta apertar a tecla do seu teclado

24

http://www.leg.ufpr.br/~paulojus/embrapa/Rembrapa/

Você pode acessar o link abaixo para obter mais dicas do uso do R.

Diversas apostilas sobre o R podem ser encontradas na internet.

Referências