Curso: Métodos Computacionais em Estatísica Luís Carlos 9 de fevereiro de 2016 Métodos computacionais com o uso do software R Conhecendo o software R O software R é uma linguagem para manipulação de dados, análises estatísticas e construção de gráficos. O mesmo é derivado do software S, desenvolvido pela AT&T. Plataformas: Windows, MacOS, Unix e derivados. O R é um software livre, código aberto e um projeto colaborativo. Software R: [Baixar e instalar o R:] (https://cran.r-project.org/) Conhecendo o software RStudio Software RStudio: [Baixar e instalar o RStudio:] (https://www.rstudio.com/products/rstudio-desktop/) O ambiente do RStudio Instalando e habilitando pacotes no R Comandos úteis setwd(“c:/Users/lsr10/ArqR”) muda o diretório do trabalho getwd() mostra o diretório do trabalho ls() e objects() lista o nome dos objetos criados na sessão atual dir() lista todos os arquivos na pasta de trabalho atual search() lista todos os pacotes carregados rm() remove o objeto entre parênteses rm(list=ls(all=TRUE)) remove todos os objetos, limpando a memória attach() reconhece os objetos dentro de um data frame detach() função para desfazer a função attach() Operações básicas com o R Adição usa o operador “+”: 2 + 2 = 4 Subtração usa o operador “-”: 1-5 = -4 Multiplicaçãon usa o operador “*“: 2*6 = 12 Divisão de ponto flutuante usa o operador “/”: 6/5 = 1.2 1
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Curso: Métodos Computacionais em EstatísicaLuís Carlos
9 de fevereiro de 2016
Métodos computacionais com o uso do software R
Conhecendo o software R
O software R é uma linguagem para manipulação de dados, análises estatísticas e construção de gráficos.
O mesmo é derivado do software S, desenvolvido pela AT&T.
Plataformas: Windows, MacOS, Unix e derivados.
O R é um software livre, código aberto e um projeto colaborativo.
Software R:
[Baixar e instalar o R:] (https://cran.r-project.org/)
Conhecendo o software RStudio
Software RStudio:
[Baixar e instalar o RStudio:] (https://www.rstudio.com/products/rstudio-desktop/)
O ambiente do RStudio
Instalando e habilitando pacotes no R
Comandos úteis
setwd(“c:/Users/lsr10/ArqR”) muda o diretório do trabalho
getwd() mostra o diretório do trabalho
ls() e objects() lista o nome dos objetos criados na sessão atual
dir() lista todos os arquivos na pasta de trabalho atual
search() lista todos os pacotes carregados
rm() remove o objeto entre parênteses
rm(list=ls(all=TRUE)) remove todos os objetos, limpando a memória
attach() reconhece os objetos dentro de um data frame
detach() função para desfazer a função attach()
Operações básicas com o R
Adição usa o operador “+”: 2 + 2 = 4
Subtração usa o operador “-”: 1-5 = -4
Multiplicaçãon usa o operador “*“: 2*6 = 12
Divisão de ponto flutuante usa o operador “/”: 6/5 = 1.2
# a maioria das funções "is*" tem uma função correspondente "as*"ct1=c(5,7,9,11)# as(ct1, "data.frame"); as.data.frame(ct1) # usar sempre a classe específica sobre o padrão "as"..Machine
Devemos usar “==” para igualdade de números inteiros, “>” para maior que, “<” para menor que, “<=”para menor ou igual, “>=” para maior ou igual e “!=” para diferente.
barplot(tabela.frutas1,col= c("black", "red", "green", "tomato", "royalblue","royalblue"), main = "Frutas do Maranhão")
21
Abacate Abricó Caju Melancia Melão Pitomba
Frutas do Maranhão0.
00.
51.
01.
52.
02.
53.
0
pie(tabela.frutas1)
22
Abacate
AbricóCaju
Melancia
Melão
Pitomba
Tangerina
Conversão de tipos
as.integer(3.2)
## [1] 3
as.character(3.2)
## [1] "3.2"
as.double(3.2)
## [1] 3.2
as.complex(3.2)
## [1] 3.2+0i
as.logical(3.2)
## [1] TRUE
23
as.raw(3.2)
## [1] 03
Matrizes e Arrays
Array é qualquer conjunto de dados retangular multidimensional.
Matriz é um Array bidimensional.
Array com três dimensões
tres_d_array <- array(1:24, dim = c(4,3,2), dimnames = list(c("um","dois","três","quatro"),c("one","two","three"),c("un","deux")))
tres_d_array
## , , un#### one two three## um 1 5 9## dois 2 6 10## três 3 7 11## quatro 4 8 12#### , , deux#### one two three## um 13 17 21## dois 14 18 22## três 15 19 23## quatro 16 20 24
## one two three## um 1 5 9## dois 2 6 10## três 3 7 11## quatro 4 8 12
summary(dois_d_matrix) # atua em cada coluna
## one two three## Min. :1.00 Min. :5.00 Min. : 9.00## 1st Qu.:1.75 1st Qu.:5.75 1st Qu.: 9.75## Median :2.50 Median :6.50 Median :10.50## Mean :2.50 Mean :6.50 Mean :10.50## 3rd Qu.:3.25 3rd Qu.:7.25 3rd Qu.:11.25## Max. :4.00 Max. :8.00 Max. :12.00
25
class(dois_d_matrix)
## [1] "matrix"
dim(dois_d_matrix) # retorna um vetor de inteiros da dimensão da variável
## one two three## um 1 2 3## dois 4 5 6## três 7 8 9## quatro 10 11 12
dim(m_matrix)
## [1] 4 3
As funções nrow() e ncol() retornam o número de linhas e colunas de uma matriz e primeira e segundadimensão de um array - aplicadas sobre vetores retorna NULL.
## one two three one two three## um 1 2 3 2 10 18## dois 4 5 6 4 12 20## três 7 8 9 6 14 22## quatro 10 11 12 8 16 24
rbind(m_matrix, m1_matrix)
## one two three## um 1 2 3## dois 4 5 6## três 7 8 9## quatro 10 11 12## um 2 10 18## dois 4 12 20## três 6 14 22## quatro 8 16 24
Operações aritméticas com arraysOs operadores (“+”, “-”, “/”, “ˆ”) trabalham de elemento em elemento em matrizes e arrays e os mesmosdevem ter conformidade.
m_matrix+m1_matrix
## one two three## um 3 12 21## dois 8 17 26## três 13 22 31## quatro 18 27 36
m_matrix-m1_matrix
## one two three## um -1 -8 -15## dois 0 -7 -14## três 1 -6 -13## quatro 2 -5 -12
29
m_matrix*m1_matrix
## one two three## um 2 20 54## dois 16 60 120## três 42 112 198## quatro 80 176 288
m_matrix/m1_matrix
## one two three## um 0.500000 0.2000000 0.1666667## dois 1.000000 0.4166667 0.3000000## três 1.166667 0.5714286 0.4090909## quatro 1.250000 0.6875000 0.5000000
m_matrix^2
## one two three## um 1 4 9## dois 16 25 36## três 49 64 81## quatro 100 121 144
m_matrix^-1
## one two three## um 1.0000000 0.50000000 0.33333333## dois 0.2500000 0.20000000 0.16666667## três 0.1428571 0.12500000 0.11111111## quatro 0.1000000 0.09090909 0.08333333
Outras operações com matrizes
t(m_matrix) # matriz transposta
## um dois três quatro## one 1 4 7 10## two 2 5 8 11## three 3 6 9 12
m_matrix %*% t(m_matrix)
## um dois três quatro## um 14 32 50 68## dois 32 77 122 167## três 50 122 194 266## quatro 68 167 266 365
30
# multiplicação de matrizes, número de linhas de m_matrix igual ao número de colunas t(m_matrix)#m_matrix %*% m_matrix1:3 %o% 4:6; outer(1:3, 4:6)
## , , um, one#### one two three## um 1 2 3## dois 4 5 6## três 7 8 9## quatro 10 11 12#### , , dois, one#### one two three## um 4 8 12## dois 16 20 24## três 28 32 36## quatro 40 44 48#### , , três, one#### one two three## um 7 14 21## dois 28 35 42## três 49 56 63## quatro 70 77 84#### , , quatro, one#### one two three## um 10 20 30## dois 40 50 60## três 70 80 90## quatro 100 110 120#### , , um, two#### one two three## um 2 4 6
31
## dois 8 10 12## três 14 16 18## quatro 20 22 24#### , , dois, two#### one two three## um 5 10 15## dois 20 25 30## três 35 40 45## quatro 50 55 60#### , , três, two#### one two three## um 8 16 24## dois 32 40 48## três 56 64 72## quatro 80 88 96#### , , quatro, two#### one two three## um 11 22 33## dois 44 55 66## três 77 88 99## quatro 110 121 132#### , , um, three#### one two three## um 3 6 9## dois 12 15 18## três 21 24 27## quatro 30 33 36#### , , dois, three#### one two three## um 6 12 18## dois 24 30 36## três 42 48 54## quatro 60 66 72#### , , três, three#### one two three## um 9 18 27## dois 36 45 54## três 63 72 81## quatro 90 99 108#### , , quatro, three##
32
## one two three## um 12 24 36## dois 48 60 72## três 84 96 108## quatro 120 132 144
# o uso de "$" e "[[]]" retorna o elemento componentes da lista# o uso de "[]" retorna uma lista com os elementos selecionadosc(class(l_list$el1), class(l_list[["el1"]]), class(l_list["el1"]))
#l22 <- as.numeric(l21)# convertendo uma lista em um vetor (cada elemento da lista deve possuir um valor escalar).l3 <- list(a=2, b=5, d=c(2,4), e=c(3,5,7), f=c(1,2,3,4)); l3
#NULL valor especial que representa uma varável vazia.#length(NULL)#length(NA) # NA é um valor escalar.#is.null(NULL)#is.null(NA)#l21; l21[[2]] <- NULL # Podemos usar NULL para remover elementos de uma lista.#l21[[2]] <- NULL; l21#l21[[2]] <- list(NULL); l21
Data frames são usados para armazenar dados como em planilhas.A função data.frame() será utilizada para a criação dos mesmos.
## LETTERS.1.5. month.name.1.5. seq.1..5. rnorm.5.## 1 A January 1 -0.4335094## 2 B February 2 1.4059110## 3 C March 3 2.2192786## 4 D April 4 0.5448906## 5 E May 5 -0.6440232
## LETTERS.1.5. month.name.1.5. seq.1..5. rnorm.5.## 1 A January 1 -0.4335094## 2 B February 2 1.4059110## 3 C March 3 2.2192786## 4 D April 4 0.5448906## 5 E May 5 -0.6440232
## col1 col2 col3 col4## 1 A January 1 -0.4335094## 2 B February 2 1.4059110## 3 C March 3 2.2192786## 4 D April 4 0.5448906## 5 E May 5 -0.6440232
row.names(df1) <- c("l1","l2","l3","l4","l5");df1 # nome para as linhas
## col1 col2 col3 col4## l1 A January 1 -0.4335094## l2 B February 2 1.4059110## l3 C March 3 2.2192786## l4 D April 4 0.5448906## l5 E May 5 -0.6440232
## fac1 ndf ndf.1## 1 a 2.4685558 2.4685558## 2 c -1.0239590 -1.0239590## 3 c 0.2345870 0.2345870## 4 a 1.3815710 1.3815710## 5 a -0.3977395 -0.3977395## 6 b -0.9677525 -0.9677525## 7 b 0.4626182 0.4626182## 8 a -1.4753410 -1.4753410## 9 a 0.8281403 0.8281403## 10 a 0.3575973 0.3575973
45
## fac1 ndf ndf.1## 1 a 2.4685558 2.4685558## 2 c -1.0239590 -1.0239590## 3 c 0.2345870 0.2345870## 4 a 1.3815710 1.3815710## 5 a -0.3977395 -0.3977395## 6 b -0.9677525 -0.9677525
summary(fac1)
## a b c## 6 2 2
summary(lo1)
## Mode FALSE TRUE NA's## logical 4 5 1
summary(ndf)
## Min. 1st Qu. Median Mean 3rd Qu. Max.## -1.4750 -0.8252 0.2961 0.1868 0.7368 2.4690
summary(df2)
## fac1 ndf ndf.1## a:6 Min. :-1.4753 Min. :-1.4753## b:2 1st Qu.:-0.8252 1st Qu.:-0.8252## c:2 Median : 0.2961 Median : 0.2961## Mean : 0.1868 Mean : 0.1868## 3rd Qu.: 0.7368 3rd Qu.: 0.7368## Max. : 2.4686 Max. : 2.4686
View(df2) # não permite trocas de valoresView(fac1)View(lo1)View(ndf)df21 <- edit(df2) # permite troca de valores e salva em df21df21
## fac1 ndf ndf.1## 1 a 2.4685558 2.4685558## 2 c -1.0239590 -1.0239590## 3 c 0.2345870 0.2345870## 4 a 1.3815710 1.3815710## 5 a -0.3977395 -0.3977395## 6 b -0.9677525 -0.9677525## 7 b 0.4626182 0.4626182## 8 a -1.4753410 -1.4753410## 9 a 0.8281403 0.8281403## 10 a 0.3575973 0.3575973
46
fix(df2);df2 # permite a troca de valores e salva em df2
## fac1 ndf ndf.1## 1 a 2.4685558 2.4685558## 2 c -1.0239590 -1.0239590## 3 c 0.2345870 0.2345870## 4 a 1.3815710 1.3815710## 5 a -0.3977395 -0.3977395## 6 b -0.9677525 -0.9677525## 7 b 0.4626182 0.4626182## 8 a -1.4753410 -1.4753410## 9 a 0.8281403 0.8281403## 10 a 0.3575973 0.3575973
length(df1) # retorna o número de colunas do data frame, o mesmo que ncol()
## col1 col2 col3 col4 am logf## l1 A January 1 -0.4335094 TRUE 1## l2 B February 2 1.4059110 FALSE 2## l3 C March 3 2.2192786 FALSE 3## l4 D April 4 0.5448906 TRUE 4## l5 E May 5 -0.6440232 TRUE 5
#rbind(df1,dfn)dfn <- cbind(dfn,logfd=c(3,17,23,5,6), logfe=c(NA,NA,NaN,Inf,NA))#rbind(df1,dfn) # número de colunas devem ser iguais.names(dfn) <- c("col1", "col2", "col3", "col4"); dfn
## col1 col2 col3 col4## 1 f Jun TRUE 0.0399669## 2 g Jul FALSE -1.1425487## 3 h Aug FALSE -0.3823524## 4 i Sep FALSE -0.4216101## 5 j Oct FALSE 0.8572720
rbind(df1,dfn)
## col1 col2 col3 col4## l1 A January 1 -0.4335094## l2 B February 2 1.4059110
49
## l3 C March 3 2.2192786## l4 D April 4 0.5448906## l5 E May 5 -0.6440232## 6 f Jun 1 0.0399669## 7 g Jul 0 -1.1425487## 8 h Aug 0 -0.3823524## 9 i Sep 0 -0.4216101## 10 j Oct 0 0.8572720
cbind(df1,dfn)
## col1 col2 col3 col4 col1 col2 col3 col4## l1 A January 1 -0.4335094 f Jun TRUE 0.0399669## l2 B February 2 1.4059110 g Jul FALSE -1.1425487## l3 C March 3 2.2192786 h Aug FALSE -0.3823524## l4 D April 4 0.5448906 i Sep FALSE -0.4216101## l5 E May 5 -0.6440232 j Oct FALSE 0.8572720
merge(df1,dfn, by="col3")
## col3 col1.x col2.x col4.x col1.y col2.y col4.y## 1 1 A January -0.4335094 f Jun 0.0399669
merge(df1,dfn, by="col3", all=TRUE)
## col3 col1.x col2.x col4.x col1.y col2.y col4.y## 1 0 <NA> <NA> NA g Jul -1.1425487## 2 0 <NA> <NA> NA h Aug -0.3823524## 3 0 <NA> <NA> NA i Sep -0.4216101## 4 0 <NA> <NA> NA j Oct 0.8572720## 5 1 A January -0.4335094 f Jun 0.0399669## 6 2 B February 1.4059110 <NA> <NA> NA## 7 3 C March 2.2192786 <NA> <NA> NA## 8 4 D April 0.5448906 <NA> <NA> NA## 9 5 E May -0.6440232 <NA> <NA> NA
colSums(dfn[,3:4]) # rowSums - para data frames com valores numéricos
plot(x, main="Retorno diáros de ativos", ylab= "retorno", xlab="dias")abline(lm(x~seq(1,200,1)))
68
0 50 100 150 200
−2
02
46
8Retorno diáros de ativos
dias
reto
rno
Atividades
1- Qual o tamanho desta lista: list(A=“Tucum”, B=“Araça”, list(C=“Pitomba”, D=“Inharé”, E=“Abricó”),F=“Oití”, G=NULL)?
2- Criar uma lista de variáveis que contenha todos os números quadrados na faixa de 100 a 109 como primeiroelemento, de 110 a 119 no segundo elemento, de 120 a 129 no terceiro elemento, de 130 a 139 no quartoelemento, de 140 a 149 no quinto elemento.