Introdução à Análise de Dados Utilizando o Ambiente R
Marcelo de Souza Lauretto
Sistemas de Informação – EACH
Curso de Verão EACH/USP
Fevereiro / 2015
Referências
• R Core Team. R: A Language and Environment for Statistical Computing. R Foundation for Statistical Computing, Vienna, Austria, 2014. http://www.R-project.org
• R. Ihaka. R: Past and Future History. Statistics Department, The University of Auckland, Auckland, New Zealand. http://cran.r-project.org/doc/html/interface98-paper/paper.html
• J.Fox, M. Bouchet-Valat. Getting Started With the R Commander. Version 2.1-0. http://socserv.mcmaster.ca/jfox/Misc/Rcmdr/Getting-Started-with-the-Rcmdr.pdf
Referências
• P. J. Ribeiro Junior, Introdução ao Ambiente Estatístico R. 2011. http://www.leg.ufpr.br/~paulojus/embrapa/Rembrapa/
• W. N. Venables, D.M.Smith and the R Core Team. An Introduction to R. Version 3.1.2, 2014. http://www.cran.r-project.org/doc/manuals/R-intro.pdf
Preâmbulo
Fonte: M. J. Fontelles, Bioestatística Aplicada à Pesquisa Experimental. São Paulo, Ed. Livraria da Física, 2012. (Vol. 1, p. 188).
Tipos de variáveis em uma análise típica
Pré-processamento de dados
• Etapas básicas* (Han & Kamber, 2006): – Limpeza: eliminação de caracteres espúrios, padronização
de formatos, redução de inconsistências, imputação de dados faltantes;
– Integração: Compilação das informações a partir de bases de dados heterogêneas;
– Transformação: Conversão de tipo (numérico categórico ou vice-versa), suavização (remoção de ruídos), agrupamentos de valores em faixas, normalização de variáveis, criação de novos atributos, etc.
– Redução de dimensionalidade, discretização. *A real necessidade de algumas atividades depende do problema e da modelagem de interesse.
J. Han, M. Kamber. Data Mining: Concepts and Techinques, 2nd Edition, Illinois USA: Elsevier, 2006
R: definição e história
• R é uma linguagem e um ambiente de desenvolvimento voltado principalmente para computação estatística (inferência, simulações, data mining, etc) e gráficos.
• Desenvolvido originalmente por Ross Ihaka e Robert Gentleman (Depto Estatística da Universidade de Auckland, Nova Zelândia).
• Inspirado em duas linguagens: – S (John Chambers e colegas – Bell Labs): sintaxe
– Scheme (Hal Abelson and Gerald Sussman): implementação e semântica
• R está disponível como um software livre, nos termos da GNU GPL (General Public License). – Windows, Linux, OS X (Mac)
O Projeto R
• Software e documentação disponível em www.r-project.org
• Conteúdo geral do site: – Sobre o R
– Download, packages: • CRAN (Comprehensive R Archive Network)
– Documentação • Manuals
• FAQs (Frequently Asked Questions)
– Ex: como citar o R.
– Informações suplementares: • CRAN Task views: guias para pacotes e funções úteis para certas
áreas/disciplinas
• Ferramenta de busca no site (opção Search), muito útil
R Commander
R Commander
• Interface gráfica para análises estatísticas básicas
– Comandos R são gerados e executados via menus
• Pacote Rcmdr
– Instalação: dentro do ambiente R: • install.packages('Rcmdr')
– Chamada: • library(Rcmdr)
• 1a chamada do Rcmdr:
– Instalar pacotes adicionais
• Janela do R Commander:
Comandos R gerados pela interface
Resultados impressos
Mensagens de erro, avisos e outras notas
Configuração dos quadros
• Entrada de dados no R Commander – Digitação manual
– Leitura de arquivos-texto
– Leitura de dados de pacotes
• Arquivo-texto: – Exemplo: Nations.txt
(subdiretório etc do pacote Rcmdr) Cabeçalho (nomes das
variáveis)
Registros (um por linha) Separadores de campos (espaços)
NA = missing values
• Leitura do arquivo Nations.txt:
• TFR: total fertility rate (children/woman)
• contraception: rate of contraceptive among married women (%)
• infant.mortality: infant mortality rate (per 1000 live births)
• GDP: gross domestic product per capita (US$)
• Edição e visualização dos dados
• Sumários gerais
• Sumários numéricos
• Sumários numéricos agrupados
• Histograma
infant.mortality
fre
qu
en
cy
0 50 100 150
02
04
06
08
0
• Histogramas por grupos
region = Africa
infant.mortality
frequency
0 50 100 150
015
30
region = Americas
infant.mortality
frequency
0 50 100 150
015
30
region = Asia
infant.mortality
frequency
0 50 100 150
015
30
region = Europe
infant.mortalityfr
equency
0 50 100 150
015
30
region = Oceania
infant.mortality
frequency
0 50 100 150
015
30
• Histogramas por grupos
• Diagrama em caixa (Box-plot)
• Diagrama em caixa (Box-plot): interpretação
Fonte: M. M. Reis, Estatística – Diagramas em Caixas. http://www.inf.ufsc.br/~marcelo/AED06.pdf
Md: Mediana Qi: quartil inferior Qs: quartil superior (Qs – Qi): intervalo inter-quartil
Informações de interesse: - Simetria - Dispersão - Dados discrepantes - Comparação entre grupos
• Gráfico de dispersão (scatterplot)
• Gráfico de dispersão (scatterplot)
50 100 200 500 1000 2000 5000 20000 50000
25
10
20
50
100
200
GDP
infa
nt.
mort
alit
y
Tonga
Iraq
• Matriz de gráficos de dispersão (Scatterplot matrix)
• Matriz de gráficos de dispersão (Scatterplot matrix)
contraception
0 20000 40000 1 3 5 7
020
40
60
80
020000
40000
GDP
infant.mortality
050
100
150
0 20 40 60 80
13
57
0 50 100 150
TFR
GDP muito assimétrico
Alternativa: nova variável com escala logarítmica
• Criação de nova variável
• Criação de nova variável
• Matriz de gráficos de dispersão com nova variável
contraception
0 50 100 150 1 2 3 4 5 6 7
020
40
60
80
050
100
150
infant.mortality
logGDP
1.5
2.5
3.5
4.5
0 20 40 60 80
12
34
56
7
1.5 2.5 3.5 4.5
TFR
• Matriz de gráficos de dispersão com filtro
contraception
20 40 60 80 1.5 2.5 3.5 4.5
20
40
60
20
40
60
80
infant.mortality
logGDP
3.0
3.5
4.0
20 40 60
1.5
2.5
3.5
4.5
3.0 3.5 4.0
TFR
• Leitura de datasets de pacotes: Prestige
- education: average education (years) - income: average income (CAD$) - women: percentage of incumbents who are women. - prestige: Pineo-Porter prestige score for occupation - census: Canadian Census occupational code. - type: type of occupation.
• Seleção do dataset ativo
• Visualização de dependências (scatterplots)
census
6 8 12 16 20 40 60 80
2000
8000
610
14 education
income
010000
25000
20
60
prestige
2000 6000 0 10000 25000 0 40 80
040
80women
• Ajuste de modelo linear (1ª versão)
• Ajuste de modelo linear (1ª versão)
• Ajuste de modelo linear (2ª versão)
• Ajuste de modelo linear (2ª versão)
• Análise de Variância (ANOVA)
R Studio
R Studio
• IDE (integrated development environment) para R
• Algumas vantagens:
– Facilidade de execução parcial ou total de scripts R
– Inserção de pontos de parada no código (depuração)
– Integra editor, console do R, ajuda, gráficos, instalador de pacotes, histórico de comandos, inspeção de variáveis, etc.
• Disponível em http://www.rstudio.com/
– Windows, Linux, OS X (Mac)
• Algumas características de uso serão apresentadas durante a aula.
Editor
Histórico, variáveis de ambiente
Console do R
Diretório, gráfico, pacotes, ajuda
Linguagem R
R: Ajuda
• Ajuda no ambiente R:
help.start()
help('while'), help('print'), ?print
help.search('regression')
• R site search:
– http://finzi.psych.upenn.edu/search.html
• CRAN Task Views:
– http://cran.r-project.org/web/views/
• Cartão de referência preparado por Jonathan Baron:
– http://www.leg.ufpr.br/~paulojus/misc/refcard.pdf
Tipos de objetos no R
• Tipos de objetos em R: – vector: o mais elementar e um dos mais importantes – matrix e array: generalizações multi-dimensionais de vetores – factor: forma compacta para manipulação de dados categóricos – list: forma geral de vetores, nos quais os elementos não
precisam ser do mesmo tipo básico. Útil p.ex. para retorno de funções, quando diversos objetos necessitam ser devolvidas
– data frames: são estruturas na forma de matrizes, em que as colunas podem ser de diferentes tipos básicos
– funções: maneira simples e conveniente de estender as funcionalidades do R.
• Todo objeto tem dois atributos intrínsecos: – mode: tipo básico dos elementos do objeto
• numeric (inclui double, integer, factor), character, logical e complex
– length: número de elementos do objeto
Vetores
• Atribuição:
x <- c(10.4, 5.6, 3.1, 6.4, 21.7)
Operador de atribuição: <- = ou ->
x
mode (x)
length(x)
y <- c(x, 0, x)
c(x, 0, x) -> y
• Aritmética:
v <- 2*x + y + 1
• Funções estatísticas e sumários:
sum(x)
length(x)
mean(x) # equivalente a sum(x) / length(x)
var(x) # equivalente a sum((x-mean(x))^2) / (length(x)-1)
• Sequências regulares
s1 = 1:30
n=10
s2 = 1:n-1
s3 = 1:(n-1)
s4 = seq(-5, 5, by=.2)
• Vetores lógicos
temp = x>13
• Filtros
idxval = which(x>13)
xsel = x[idxval]
• Vetores de caracteres
letras = c('a', 'b', 'c')
repeticao_a
labs <- paste(c("X","Y"), 1:10, sep='')
Operações e funções matemáticas:
2 + 4 * 5 # Order of operations log (10) # Natural logarithm with base e=2.7182 log10(5) # Common logarithm with base 10 5^2 # 5 raised to the second power 5/8 # Division sqrt (16) # Square root abs (3-7) # Absolute value pi # 3.14 exp(2) # Exponential function round(pi,0) # Round pi to a whole number round(pi,1) # Round pi to 1 decimal place round(pi,4) # Round pi to 4 decimal places
Operações e funções matemáticas:
floor(15.9) # Rounds down ceiling(15.1) # Rounds up cos(.5) # Cosine Function sin(.5) # Sine Function tan(.5) # Tangent Function acos(0.8775826) # Inverse Cosine asin(0.4794255) # Inverse Sine atan(0.5463025) # Inverse Tangent
Outros tipos de objetos
• Matrizes:
M = matrix(1:20, nrow=5, ncol=4)
N = matrix(1:20, nrow=5, ncol=4, byrow=TRUE)
colnames(N) = c('a', 'b', 'c', 'd')
N[, 1:2]
N[c(2,4),]
N[c(2,4), 1:2] # acesso a porcoes especificas
N[,c('a', 'b')]
• Data frames
Test = data.frame(a = rep(1,10), b=runif(10,1), c=letters[1:10])
• Listas
Ltest = list(a=1:10, b=3, t=Test)
Ltest2 = list()
Ltest2[[1]] = 1:10
Ltest2[[2]] = 1