Baixe o app para aproveitar ainda mais
Prévia do material em texto
Introduc¸a˜o ao R: Aula 1 October 3, 2017 1 Introduc¸a˜o R e´ um software gratuito e de co´digo aberto que proporciona um o´timo ambiente para manipulac¸a˜o de base de dados e ana´lises estat´ısticas, com recursos gra´ficos de alta qualidade. Foi criado originalmente por Ross Ihaka e por Robert Gentleman no departa- mento de Estat´ıstica da Universidade de Auckland, Nova Zelaˆndia, e foi de- senvolvido por um esforc¸o colaborativo de pessoas em va´rios locais do mundo. Principais vantagens de utilizar o R: Software livre; co´digo aberto; pacotes para diversas a´reas de conhecimentos; programa´vel... Desvantagens de utilizar o R: Fatal de integralizac¸a˜o entre os pacotes; Curva de aprendizagem lenta. Mais detalhes sobre o projeto, colaboradores, documentac¸a˜o, download do soft- ware e diversas outras informac¸o˜es podem ser encontradas na pa´gina oficial do projeto em: http://www.r-project.org. 2 Primeiros Passos Apo´s iniciar o RStudio, criar SEMPRE um arquivo R Script. Nele podemos escrever e executar linhas de comando e salva´-los para utilizar depois, evitando 1 re-trabalho. Utilize Ctrl+R ou Ctrl+Enter para executar uma linha, ou se- lecione as linhas e em seguida a execute. O output das linhas de comando aparecera´ na janela CONSOLE. A janela Environment conte´m o histo´rico de todos os objetos que foram criados. A quarta janela conte´m o output gra´fico, help, pacotes e outros. Criando objetos: Os principais objetos que podemos trabalhar no R, sa˜o vetores, matrizes e data frames (banco de dados). Vetores: podem ser classificados como, numeric, character, logical. > #A forma mais ba´sica de criar um vetor e´ utilizando a > # func¸~ao c(). > v1 = c(1,3,5,7,9);v1 [1] 1 3 5 7 9 > #Vetor de caracteres > v2 = c("Casado", "Solteiro");v2 #character [1] "Casado" "Solteiro" > #Func¸~ao rep(): replica valores. > v3 = rep(2, times = 10);v3 #integer [1] 2 2 2 2 2 2 2 2 2 2 > v4 = rep(c(1, 2), times = 5);v4 #integer [1] 1 2 1 2 1 2 1 2 1 2 > #Gerando uma amostra de uma distribuic¸~ao normal > v5 = rnorm(5, mean = 0, sd = 1);v5 #numeric [1] 0.9940225 -0.3760856 2.2620730 -0.1498943 0.1329926 > v6 = v1>=5;v6 #logical [1] FALSE FALSE TRUE TRUE TRUE Fatores: Um vetor de grupos ou classificac¸a˜o discreta > fac = c(1,0,0,0,1,2);fac [1] 1 0 0 0 1 2 > fac1 = factor(fac, levels=c(0,1), label = c("N~ao","Sim")) > fac1 2 [1] Sim N~ao N~ao N~ao Sim <NA> Levels: N~ao Sim > fac2 = factor(fac,levels=c(1,0,2),label=c("Sim","N~ao","Talvez")) > fac2 [1] Sim N~ao N~ao N~ao Sim Talvez Levels: Sim N~ao Talvez > fac3 = factor(fac);fac3 [1] 1 0 0 0 1 2 Levels: 0 1 2 Matrizes: > M1 = matrix(c(1,2,3,4), nrow = 2, ncol = 2);M1 [,1] [,2] [1,] 1 3 [2,] 2 4 > M2 = matrix(v3, nrow = 5);M2 [,1] [,2] [1,] 2 2 [2,] 2 2 [3,] 2 2 [4,] 2 2 [5,] 2 2 > M3 = matrix(v3, ncol = 5);M3 [,1] [,2] [,3] [,4] [,5] [1,] 2 2 2 2 2 [2,] 2 2 2 2 2 > M4 = matrix(v1, nrow = 5);M4 [,1] [1,] 1 [2,] 3 [3,] 5 [4,] 7 [5,] 9 Data Frame: > d1=data.frame(x=v1, y=v4);d1 3 x y 1 1 1 2 3 2 3 5 1 4 7 2 5 9 1 6 1 2 7 3 1 8 5 2 9 7 1 10 9 2 > d2=data.frame(x0 = rep(1, 10), x1 = v3, + y = rnorm(10, mean = 0, sd = 1));d2 x0 x1 y 1 1 2 1.5079057 2 1 2 -0.1465891 3 1 2 0.2764728 4 1 2 0.9340411 5 1 2 1.3042643 6 1 2 1.0650600 7 1 2 0.4537975 8 1 2 0.1134734 9 1 2 1.7583218 10 1 2 1.7266573 Para realizar uma boa ana´lise de dados, e´ necessa´rio conhecer o tipo de infor- mac¸a˜o que estamos trabalhando. > #Utilize a func¸~ao str(), ou a func¸~ao class(), para saber qual o > #tipo do objeto. > str(v1);class(v1) num [1:5] 1 3 5 7 9 [1] "numeric" > str(v4);class(v4) num [1:10] 1 2 1 2 1 2 1 2 1 2 [1] "numeric" > str(v5);class(v5) num [1:5] 0.994 -0.376 2.262 -0.15 0.133 [1] "numeric" 4 > str(v6);class(v6) logi [1:5] FALSE FALSE TRUE TRUE TRUE [1] "logical" > str(fac2);class(fac2) Factor w/ 3 levels "Sim","N~ao","Talvez": 1 2 2 2 1 3 [1] "factor" > str(M1);class(M1) num [1:2, 1:2] 1 2 3 4 [1] "matrix" > str(d2);class(d1) 'data.frame': 10 obs. of 3 variables: $ x0: num 1 1 1 1 1 1 1 1 1 1 $ x1: num 2 2 2 2 2 2 2 2 2 2 $ y : num 1.508 -0.147 0.276 0.934 1.304 ... [1] "data.frame" 3 Operac¸o˜es entre Atributos Com o R podemos ter infinitos recursos, uns dos mais simples e´ a manipulac¸a˜o entre os objetos: Soma/Subtrac¸a˜o: > v1;2+v1;v1-2 [1] 1 3 5 7 9 [1] 3 5 7 9 11 [1] -1 1 3 5 7 > v3;v4;v3+v4 [1] 2 2 2 2 2 2 2 2 2 2 [1] 1 2 1 2 1 2 1 2 1 2 [1] 3 4 3 4 3 4 3 4 3 4 5 > M1;10+M1;M1+M1 [,1] [,2] [1,] 1 3 [2,] 2 4 [,1] [,2] [1,] 11 13 [2,] 12 14 [,1] [,2] [1,] 2 6 [2,] 4 8 Multiplicac¸a˜o/Divisa˜o: > v3;2*v3;v3/2 [1] 2 2 2 2 2 2 2 2 2 2 [1] 4 4 4 4 4 4 4 4 4 4 [1] 1 1 1 1 1 1 1 1 1 1 > M1;2*M1;M1/2 [,1] [,2] [1,] 1 3 [2,] 2 4 [,1] [,2] [1,] 2 6 [2,] 4 8 [,1] [,2] [1,] 0.5 1.5 [2,] 1.0 2.0 > #Multiplicac¸~ao entre Matrizes > M1;M3;M1%*%M3 [,1] [,2] [1,] 1 3 [2,] 2 4 [,1] [,2] [,3] [,4] [,5] [1,] 2 2 2 2 2 [2,] 2 2 2 2 2 6 [,1] [,2] [,3] [,4] [,5] [1,] 8 8 8 8 8 [2,] 12 12 12 12 12 > #Multiplicac¸~ao entre um vetor e uma matriz > M3%*%v1 [,1] [1,] 50 [2,] 50 Observac¸a˜o: o vetor e´ interpretado pelo software com uma matriz coluna. Transposto e Inversa de uma Matriz: > # Para transpor uma matriz utilize a func¸~ao t(): > M1;t(M1) [,1] [,2] [1,] 1 3 [2,] 2 4 [,1] [,2] [1,] 1 2 [2,] 3 4 > # Para calcular a inversa de uma matriz utilize a func¸~ao solve: > solve(M1) [,1] [,2] [1,] -2 1.5 [2,] 1 -0.5 4 Manipulando Vetores e Matrizes Podemos pegar elementos espec´ıficos de um vetor ou uma matriz: Selecionando elementos de um vetor: > #Secinando o terceiro elemento do vetor: > v1;v1[3] [1] 1 3 5 7 9 [1] 5 > #Secinando os 3 primeiros elementos do vetor: > v1;v1[1:3] 7 [1] 1 3 5 7 9 [1] 1 3 5 > #Secinando o segundo e o u´ltimo elemento do vetor: > v1;v1[c(2,5)] [1] 1 3 5 7 9 [1] 3 9 > #Secinando os elementos que s~ao maiores ou iguais a 3: > v1;v1>=3;v1[v1>=3] [1] 1 3 5 7 9 [1] FALSE TRUE TRUE TRUE TRUE [1] 3 5 7 9 Selecionando elementos de uma matriz: > #Selecinando o elemento da linha 1 e coluna 2: > M2;M2[1, 2] [,1] [,2] [1,] 2 2 [2,] 2 2 [3,] 2 2 [4,] 2 2 [5,] 2 2 [1] 2 > #Selecinando os elementos da linha 1 e das colunas 1 e 2: > M2;M2[1, c(1,2)];M2[1, 1:2] [,1] [,2] [1,] 2 2 [2,] 2 2 [3,] 2 2 [4,] 2 2 [5,] 2 2 [1] 2 2 [1] 2 2 > #Selecinando os elementos das linha 1 e 5, e colunas 1: > M2;M2[c(1, 5), 1] 8 [,1] [,2] [1,] 2 2 [2,] 2 2 [3,] 2 2 [4,] 2 2 [5,] 2 2 [1] 2 2 > #Selecinando toda a segunda coluna: > M2;M2[, 2] [,1] [,2] [1,] 2 2 [2,] 2 2 [3,] 2 2 [4,] 2 2 [5,] 2 2 [1] 2 2 2 2 2 > #Selecinando toda a terceira linha: > M2;M2[3, ] [,1] [,2] [1,] 2 2 [2,] 2 2 [3,] 2 2 [4,] 2 2 [5,] 2 2 [1] 2 2 4.1 Algumas Func¸o˜es U´teis Somando elementos de um vetor: > sum(v1) [1] 25 > sum(M2[, 1]) [1] 10 > sum(M2[3, ]) [1] 4 9 Me´dia dos elementos de um vetor: > mean(v1) [1] 5 > mean(M2[, 1]) [1] 2 > mean(M2[3, ]) [1] 2 Selecionando o maior elemento de um vetor: > max(v1) [1] 9 > max(M2[, 1]) [1] 2 > max(M2[3, ]) [1] 2 Selecionando o menor elemento de um vetor: > min(v1) [1] 1 > min(M2[, 1]) [1] 2 > min(M2[3, ]) [1] 2 Nu´mero de elementos de um vetor, e a dimensa˜o de uma matriz: > class(v1);length(v1) [1] "numeric" [1]5 > class(M2);dim(M2) 10 [1] "matrix" [1] 5 2 > class(M2[, 1]);length(M2[, 1]) [1] "numeric" [1] 5 > class(M2[3, ]);length(M2[3, ]) [1] "numeric" [1] 2 5 Trabalhando com Banco de Dados Como dito anteriormente, banco de dados no r sa˜o os objetos data.frama. Basi- camente todos as te´cnicas de manipulac¸a˜o de se manipular os elementos de uma matriz tambe´m serve para banco de dados. 5.1 Exportac¸a˜o e Importac¸a˜o de Banco de Dados No R podemos exportar e importar banco de dados em diversos formatos (.txt, .csv, .xls, .sav, .m), mas dependendo do formato em que se deseja impor- tar/exportar os dados e´ necessa´rio utilizar pacotes espec´ıficos. Importando no formato .txt > # file = "local da base de dados\\nome da base de dados.txt" > # read.table(file, head = T, dec = ",", sep = ";") Importando no formato .csv > # file = "local da base de dados\\nome da base de dados.csv" > # read.csv(file, head = T, dec = ",", sep = ";") Para manipular uma vara´vel do banco banco de dados devemos utilizar a seguinte estrutura: nome banco dados$ nome variavel. > # A func¸~ao head mostra os primeiros 5 valores de um > # objeto (vetor, matrix, data frame) > head(dados$wage) [1] 5.10 4.95 6.67 4.00 7.50 13.07 > head(dados$education) [1] 8 9 12 12 12 13 11 5.2 Estat´ıstica Descritiva Me´dia: mean() > mean(dados$wage) [1] 9.024064 > mean(dados$education) [1] 13.01873 Mediana: median() > median(dados$wage) [1] 7.78 > median(dados$education) [1] 12 Variaˆncia: var() > var(dados$wage) [1] 26.41032 > var(dados$education) [1] 6.840174 Desvio Padra˜o: sd() > sd(dados$wage) [1] 5.139097 > sd(dados$education) [1] 2.615373 12 5.3 Selecionando Dados Para fazer selec¸a˜o de linha e colunas de um banco de dados, de acordo com algum crite´rio, utilizaremos a func¸a˜o subset(). > SUB.DADOS1 = subset(dados, education <=6, + select = c(wage, education, age, gender)); > SUB.DADOS1 wage education age gender 26 5.75 6 57 0 63 7.00 3 64 0 76 3.00 6 55 1 108 14.00 5 55 0 151 4.62 6 45 1 347 6.00 4 64 0 351 3.75 2 24 0 > SUB.DADOS2 = subset(dados, c(education <=6 & gender == 1), + select = c(wage, education, age, gender)) > SUB.DADOS2 wage education age gender 76 3.00 6 55 1 151 4.62 6 45 1 6 Exerc´ıcios 1. Utilize a func¸a˜o c() para criar o seguinte vetor no R: 2 10 5 8 20 3 9 1 4 6 Dica: Deˆ um nome para seu vetor. Ex.: vet = c(2, 10, ...) 2. Some todos os elementos do vetor que voceˆ acabou de criar. Qual a me´dia? Qual o ma´ximo e o mı´nimo? 3. Selecione o primeiro e o quinto elemento do vetor do exerc´ıcio 1. 4. Crie um novo vetor com os 3 primeiros elementos do vetor criado no ex- erc´ıcio 1. 5. Crie a seguinte matriz no R: 12 11 11 12 11 10 7 7 10 Deˆ um nome ao seu objeto. Ex.: mat = matrix(c(12, 11, ...)). 13 6. Selecione os elementos da segunda e terceira coluna, da segunda linha. 7. Crie um vetor selecionando a segunda coluna inteira. 8. Fac¸a a multiplicac¸a˜o entre a matriz do exerc´ıcio 5 e o vetor do exerc´ıcio 7. 9. Calcule a me´ida e a variaˆncia das varia´veis wage e experience, para as mulheres. Dica: utilize a func¸a˜o subset(). 10. Desafio: Gere uma amostra aleato´ria de uma distribuic¸a˜o binomial, da seguinte maneira: > b = rbinom(50, size = 10, prob = 0.7) Identifique os valores que sa˜o maiores que 5, depois tire a me´dia desses valores. 11. Desafio: A func¸a˜o cbind() inclui colunas em um banco de dados, por exemplo: > # Criando um vetor de uns do tamanho da base de dados: > uns = rep(1, nrow(dados));head(uns) [1] 1 1 1 1 1 1 > # A func¸~ao nrow() retorna o nu´mero de linhas de > # um data.frame/matrix. > > # Criando um objeto "X" acrecentando o vetor de uns > # como uma coluna na base de dados: > X = cbind(uns, dados) > # Para poder fazer operac¸~oes com matrizes: > class(X) # N~ao e´ uma matriz. [1] "data.frame" > # A func¸~ao as.matrix() transforma um data frame em uma matriz. > X = as.matrix(X) > class(X) # Agora e´ uma matriz. [1] "matrix" Suponha que voceˆ quer estimar o seguinte modelo de regressa˜o: wagei = β0 + β1educationi + �i. Com a base de dados, estime os paraˆmetros do modelo pelo me´todo de mı´nimos quadrados, ou seja: βˆ = (XTX)−1XT y. Na˜o esquec¸a de transformar o seu data frame em uma matriz. Resposta: 14 [,1] intercepto -0.7459797 education 0.7504608 15
Compartilhar