Post on 30-Aug-2020
Introducao ao R
Tatiene Correia de Souza / UFPBtatiene@de.ufpb.br
February 14, 2016
Souza Introducao ao R February 14, 2016 1 / 35
Introducao
Inicie o R em seu computador. Aparecera uma janela de comandoscom o sımbolo > que indica que o programa esta pronto para recebercomandos. Qualquer texto iniciando com o sımbolo # e entendido peloprograma como um comentario.
Souza Introducao ao R February 14, 2016 2 / 35
Iniciando o R
# Fazer com que o R ignore o que seradigitado: ## Sair do programa: q()# Salva o trabalho que esta sendo realizado:save.image# Lista todos os objetos da area de trabalhoatual: ls()# Remove o objeto x: rm(x)# Remove o objeto x e y: rm(x,y)# Dado ausente: NA
Souza Introducao ao R February 14, 2016 3 / 35
Iniciando o R
# Mostra os pacotes instalados: library()# Carrega o pacote sandwich: library(sandwich)# Obtendo ajuda: help(hist) ou ?hist# Obter ajuda sobre o comando ls: help(ls)# Obter ajuda sobre o pacote lmtest:help(package=lmtest)# Comando que procura objetos pelo nome model:apropos("model")# Mostra exemplo do comando hist:example(hist)
Souza Introducao ao R February 14, 2016 4 / 35
Manipulando objetos
> x=10 # o objeto x recebe 10> y=sqrt(4) #y recebera o valor da operacao indicada.> A=1> B=2> rm(A, B) # remove os objetos A e B> rm(list=ls()) # remove tudo!
Souza Introducao ao R February 14, 2016 5 / 35
Alguns objetos especiais
# Vetor> x=c(2,3,5,7,11) # vetor> mode(x); length(x) # tipo e o tamanho do objeto> y=c(x,13,17,19)# adicionando mais tres numeros
# Sequencia> a = 1:10 # criar sequencia de inteiros> b= 100:50 # sequencia decrescente> seq(1,10,1) # o mesmo que 1:10> seq(1,10,2)> seq(10,1,-3) # decrescente/passo negativo
Souza Introducao ao R February 14, 2016 6 / 35
Alguns objetos especiais
> rep(1,10) # repete 1 dez vezes> rep(c(1,2),10)> c(rep(0,10), rep(1,5))
> y=c(x,13,17,19)# adicionando mais tres numeros
# Sequencia> a = 1:10 # criar sequencia de inteiros> b= 100:50 # sequencia decrescente> seq(1,10,1) # o mesmo que 1:10> seq(1,10,2)> seq(10,1,-3) # decrescente/passo negativo
Souza Introducao ao R February 14, 2016 7 / 35
Alguns objetos especiais
# Listas> pes = list(idade=24, nome=’Alice’,notas=c(9.8,9.5,9.6))
> pes$idade[1] 24$nome[1] "Alice"$notas[1] 98 95 96
Souza Introducao ao R February 14, 2016 8 / 35
Alguns objetos especiais
# Matrizes> x = 1:12 # sequencia de 1 a 12> xmat= matrix(x, ncol=3) # matriz de 3 colunas> xmat
[,1] [,2] [,3][1,] 1 5 9[2,] 2 6 10[3,] 3 7 11[4,] 4 8 12> matrix(x, ncol=3, byrow=T)
[,1] [,2] [,3][1,] 1 2 3[2,] 4 5 6[3,] 7 8 9[4,] 10 11 12
Souza Introducao ao R February 14, 2016 9 / 35
Alguns objetos especiais
# Matrizes
> x1 = matrix(1:12, ncol=4)> dim(x1) # dimensoes da matriz x1[1] 3 4
> summary(x1)V1 V2 V3 V4
Min. :1.0 Min. :4.0 Min. :7.0 Min. :10.01st Qu.:1.5 1st Qu.:4.5 1st Qu.:7.5 1st Qu.:10.5Median :2.0 Median :5.0 Median :8.0 Median :11.0Mean :2.0 Mean :5.0 Mean :8.0 Mean :11.03rd Qu.:2.5 3rd Qu.:5.5 3rd Qu.:8.5 3rd Qu.:11.5Max. :3.0 Max. :6.0 Max. :9.0 Max. :12.0
Souza Introducao ao R February 14, 2016 10 / 35
Alguns objetos especiais
# Matrizes> x=matrix(10:1, ncol=2)> y=cbind(x,1:5)> y=rbind(y, c(99,99,99))> y
[,1] [,2] [,3][1,] 10 5 1[2,] 9 4 2[3,] 8 3 3[4,] 7 2 4[5,] 6 1 5[6,] 99 99 99
>z=cbind(y,rep(88,6),y)
Souza Introducao ao R February 14, 2016 11 / 35
Alguns objetos especiais
> z[2,5][1] 9> z[,4] # extraindo a quarta coluna[1] 88 88 88 88 88 88> z[,3] # extraindo a terceira coluna[1] 1 2 3 4 5 99> z[c(1,3,5),] # extraindo tres linhas
[,1] [,2] [,3] [,4] [,5] [,6] [,7][1,] 10 5 1 88 10 5 1[2,] 8 3 3 88 8 3 3[3,] 6 1 5 88 6 1 5
Souza Introducao ao R February 14, 2016 12 / 35
Alguns objetos especiais
> z[,5:7] # extraindo tres colunas[,1] [,2] [,3]
[1,] 10 5 1[2,] 9 4 2[3,] 8 3 3[4,] 7 2 4[5,] 6 1 5[6,] 99 99 99> z[c(2,3),c(4,6)] # tomando uma submatriz 2x2
[,1] [,2][1,] 88 4[2,] 88 3>
Souza Introducao ao R February 14, 2016 13 / 35
Alguns objetos especiaisVamos definir uma matriz em que as colunas armazenam: ındices (1 a5), idade e sexo (0 ou 1).
> pessoas = cbind(c(1:5), c(43,65,62,23,46), c(1,1,0,1,1))> pessoas
[,1] [,2] [,3][1,] 1 43 1[2,] 2 65 1[3,] 3 62 0[4,] 4 23 1[5,] 5 46 1
Agora queremos extrair todas as pessoas que tem mais que 60 anos.
> idosos = pessoas[pessoas[,2]>60,]> idosos
[,1] [,2] [,3][1,] 2 65 1[2,] 3 62 0>
Souza Introducao ao R February 14, 2016 14 / 35
Entrando com os dados
Diversos comandos podem ser usados com a finalidade de ler oueditar os dados. Entre eles podemos destacar: scan(), edit(),read.table() e data().
Uso da funcao scan:
> teste = scan()1: 102: 53: 64: 45: 76:Read 5 items
Souza Introducao ao R February 14, 2016 15 / 35
Entrando com os dadosOutra maneira...
Uso da funcao scan:
> trat=scan()1: 12: 13: 24: 25: 36:Read 5 items> dados=scan()1: 102: 153: 504: 225: 106:Read 5 items
Souza Introducao ao R February 14, 2016 16 / 35
Entrando com os dados
Outra maneira...
Uso da funcao scan:
> dados=cbind(trat, dados)> dadostrat dados[1,] 1 10[2,] 1 15[3,] 1 50[4,] 1 22[5,] 1 10
Souza Introducao ao R February 14, 2016 17 / 35
Entrando com os dados
Uso da funcao edit:
> teste=c(10,20,30,40,50)# trocar 50 por 60, por exemplo.> teste2=edit(teste)
Souza Introducao ao R February 14, 2016 18 / 35
Entrando com os dados
Uso da funcao read.table:
> read.table("nome do arquivo", header = TRUE)# header = TRUE: cabecalho.
Exercıcio: vamos criar um conjunto de dados para ler no R com a funcaoread.table.
Souza Introducao ao R February 14, 2016 19 / 35
Exercıcio
Vamos considerar o conjunto de dados que ja incluıdo no R. Paracarregar e visualizar os dados digite:
> data(Titanic)> help(Titanic)> Titanic
Perguntas:
Quantas pessoas havia no total?
> sum(Titanic)[1] 2201
Quantas pessoas havia tripulacao (crew)?
> sum(Titanic[4, , , ])[1] 885
Souza Introducao ao R February 14, 2016 20 / 35
Quantas pessoas sobreviveram e quantas morreram?
> apply(Titanic, 4, sum)No Yes1490 711
Quantas criancas sobreviveram??
> sum(Titanic[, , 1, 2])[1] 57
Quais as proporcoes de sobreviventes entre homens e mulheres?
> apply(Titanic, 2, sum)Male Female1731 470> apply(Titanic[, , , 2], 2, sum)Male Female367 344> 100*apply(Titanic[, , , 2], 2, sum)/apply(Titanic, 2, sum)Male Female21.20162 73.19149
Souza Introducao ao R February 14, 2016 21 / 35
Exemplo
> data()> data(women) # carrega o conjunto de dados women> women # mostra os dados> help(woman) # mostra a documentacao destes dados
> summary(women[,1])Min. 1st Qu. Median Mean 3rd Qu. Max.58.0 61.5 65.0 65.0 68.5 72.0> summary(women[,2])Min. 1st Qu. Median Mean 3rd Qu. Max.115.0 124.5 135.0 136.7 148.0 164.0
Souza Introducao ao R February 14, 2016 22 / 35
Analise de dados no R
library(AER)
data("CPS1985")help(CPS1985)
str(CPS1985)
head(CPS1985)
CPS1985[1:4,]attach(CPS1985)
# Uma variavel numerica - salario
summary(wage)mean(wage)median(wage)var(wage)sd(wage)hist(wage)Souza Introducao ao R February 14, 2016 23 / 35
Analise de dados no R
# Uma variavel categorica - Ocupacao
summary(occupation)tab = table(occupation)prop.table(tab)
barplot(tab)pie(tab)
# Duas variaveis categoricas - Genero e ocupacao
xtabs(˜gender+occupation, data=CPS1985)plot(gender˜occupation, data=CPS1985)
# Duas variaveis numericas - salario e eduacacao
cor(log(wage), education)plot(log(wage)˜education)
# Uma variavel numerica e uma variavel categorica - salario e generotapply(log(wage), gender, mean)plot(log(wage)˜gender)
Souza Introducao ao R February 14, 2016 24 / 35
Descrevendo conjunto de dados no R
O livro Estatıstica Basica de W. Bussab e P. Morettin traz no primeirocapıtulo um conjunto de dados hipotetico de atributos de 36funcionarios da companhia ‘Milsa’. Nosso objetivo e entrar com osdados no R e fazer uma analise descritiva.OS dados devem ser digitados no ‘estilo planilha’, com variaveis dediferentes tipos: categoricas e numericas (qualitativas e quantitativas).Portanto o formato ideal de armazenamento destes dados no R e odata.frame.
# abra a planilha para entrada dos dadosmilsa <- edit(data.frame())milsa # visualiza os dados digitadosfix(milsa)
Souza Introducao ao R February 14, 2016 25 / 35
Descrevendo conjunto de dados no R
Precisamos informar para o programa que as variaveis civil, instrucaoe regiao, NAO sao numericas e sim categoricas. No R as variaveiscategoricas sao definidas usando o comando factor().
milsa$civil <- factor(milsa$civil,label=c("solteiro", "casado"), levels=1:2)
milsa$instrucao <- factor(milsa$instrucao,label=c("1oGrau", "2oGrau", "Superior"), lev=1:3, ord=T)
milsa$regiao <- factor(milsa$regiao, label=c("capital","interior", "outro"), lev=c(2,1,3))
milsa
Souza Introducao ao R February 14, 2016 26 / 35
Descrevendo conjunto de dados no R
E preciso definir uma variavel unica idade a partir das variaveis ano emes que foram digitadas. Para gerar a variavel idade (em anos)fazemos:
milsa$idade <- milsa$ano + milsa$mes/12milsa$idade
is.data.frame(milsa) # conferindo se e um data-framenames(milsa) # vendo o nome das variaveisdim(milsa) # vendo as dimensoes do data-frameattach(milsa)
Souza Introducao ao R February 14, 2016 27 / 35
Descrevendo conjunto de dados no R# Variavel Qualitativa Nominalcivilis.factor(civil)##Tabelacivil.tb <- table(civil)civil.tb100 * table(civil)/length(civil)## ou em porcentagemProp.table(civil.tb)# Graficopie(table(civil))
## Variavel Qualitativa Ordinalinstrucaois.factor(instrucao)## Tabelainstrucao.tb <- table(instrucao)instrucao.tbprop.table(instrucao.tb)## Grafico:barplot(instrucao.tb)
Souza Introducao ao R February 14, 2016 28 / 35
Descrevendo conjunto de dados no R
## Variavel quantitativa discretafilhos## Tabela:filhos.tb <- table(filhos)filhos.tbfilhos.tb/sum(filhos.tb) # frequencias relativas## Grafico:plot(filhos.tb) # grafico das frequencias absolutasfilhos.fac <- cumsum(filhos.tb)filhos.fac # frequˆencias acumuladasplot(filhos.fac, type="s") # gr´afico das frequˆencias acumuladassummary(filhos) # varias medidas
Souza Introducao ao R February 14, 2016 29 / 35
Descrevendo conjunto de dados no R
##Variavel quantitativa contınuasalario##Tabelarange(salario) # maximo e mınimonclass.Sturges(salario) #numero de classes - criterio de Sturgesargs(cut)args(cut.default)table(cut(salario, seq(3.5,23.5,l=8)))## Graficohist(salario)hist(salario, br=seq(3.5,23.5,l=8))boxplot(salario)# Quantissalario.qt <- quantile(salario, na.rm=T)salario.qt[4] - salario.qt[2] # amplitude interquartilicasummary(salario) # varias medidas
Souza Introducao ao R February 14, 2016 30 / 35
Descrevendo conjunto de dados no RVamos considerar as variaveis civil (estado civil) e instrucao (grau deinstrucao). A tabela envolvendo duas variaveis e chamada tabela decruzamento ou tabela de contingencia.
## Analise Bivariada## Variavel Qualitativa vs Qualitativa## Estado civil e grau de instrucaociv.gi.tb <- table(civil, instrucao) # frequencias absolutasciv.gi.tbciv.gi.tb/as.vector(table(civil)) # frequencias por linha## Graficoplot(civ.gi.tb)barplot(civ.gi.tb)barplot(t(civ.gi.tb))## Medida de associacaosummary(civ.gi.tb)## Criando uma nova variavel para agrupar 2o Grau e Superiorinstrucao1 <- ifelse(instrucao == 1, 1, 2)table(instrucao)table(instrucao1)table(civil, instrucao1)summary(table(civil, instrucao1))
Souza Introducao ao R February 14, 2016 31 / 35
Descrevendo conjunto de dados no R
## Variavel Qualitativa vs Quantitativa## Grau de instrucao vs salario## Tabelaquantile(salario)ins.sal.tb <- table(instrucao, cut(salario, quantile(salario)))ins.sal.tb## Graficoplot(instrucao, salario)plot(salario, instrucao)## calculando as madias para cada grau de instrucaotapply(salario, instrucao, mean)## e as varianciastapply(salario, instrucao, var)## os mınimo, maximo e quartistapply(salario, instrucao, quantile)
Souza Introducao ao R February 14, 2016 32 / 35
Descrevendo conjunto de dados no R
## Varavel Quantitativa vs Quantitativa## salario e idade## Tabelatable(cut(idade, quantile(idade)), cut(salario, quantile(salario)))table(cut(idade, quantile(idade, seq(0,1,len=4))), cut(salario, quantile(salario, seq(0,1,len=4))))## Graficoplot(idade, salario)## Correlacaocor(idade, salario)
Souza Introducao ao R February 14, 2016 33 / 35
Exercıcio no RAnalise bivariada - variavel qualitativa versus quantitativa (instrucao esalario).Vamos agrupar a variavel salario em 4 classes definidas pelos quartisusando cut . Note que as classes sao definidas por intervalos abertosa esquerda e entao usamos o argumento include.lowest=TRUE paragarantir que todos os dados, inclusive o menor (mınimo) seja incluıdona primeira classe.
quantile(salario)salario.cl <- cut(salario, quantile(salario), include.lowest = T)ins.sal.tb <- table(dados$instrucao, salario.cl)ins.sal.tbprop.table(ins.sal.tb, margin = 1)
boxplot(salario ˜ dados$instrucao)
Souza Introducao ao R February 14, 2016 34 / 35
Exercıcio no R
cont. Analise bivariada - variavel qualitativa versus quantitativa(instrucao e salario).
tapply(salario, instrucao, mean)tapply(salario, instrucao, sd)tapply(salario, instrucao, quantile)
Souza Introducao ao R February 14, 2016 35 / 35