introdução ao rmbranco/dicas_r.pdf · apoio: andressa cerqueira (aluna do programa pae) 1 . para...
TRANSCRIPT
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
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.
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
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
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)
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
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:
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"
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
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
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
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.
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
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)
15
Exemplos
Exemplo1: Obter o valor de via simulação
16
Exemplos
Exemplo1: Obter o valor de via simulação
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
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
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
20
Exemplos
Exemplo2: Simular a variável X com distribuição binomial(n,p)
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
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)
}
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.
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