\documentclass[a4paper, oneside, 10pt]{article}
\usepackage[unicode]{hyperref}
\usepackage[utf8x]{inputenc}
\usepackage[english]{babel}
\usepackage{listings}
\date{\today}
\title{}
\author{}
\begin{document}


\begin{itemize}
  \item Tutorial
  \item  Exercícios
  \item  Apostila 
\end{itemize}


\section{\texorpdfstring{4. Tutoriais de Análise Exploratória de Dados}{4 Tutoriais de Analise Exploratoria de Dados}}
\label{sec:4_tutoriais_de_analise_exploratoria_de_dados}


\subsection{\texorpdfstring{Conferindo Data Frames}{Conferindo Data Frames}}
\label{sec:conferindo_data_frames}


A primeira coisa que temos que fazer quando criamos um objeto de dados é verificá-lo cuidadosamente em busca de erros e incoerências. Neste tutorial simulamos duas situações bem comuns: variáveis de fatores com códigos errados e valores \texttt{NA} que na verdade são zeros.

Vamos usar uma planilha com dados fictícios, que você baixa aqui. 

Lendo a planilha com \texttt{read.table} ou \texttt{read.csv2}\lstset{frame=single}
\begin{lstlisting}

aves.c <- read.table("aves_cerrado.csv", row.names=1, header=T, sep=";", dec=",", as.is=T)
aves.c <- read.csv2("aves_cerrado.csv", row.names=1, as.is=T)
\end{lstlisting}



Verificação inicial do \emph{ data frame}\lstset{frame=single}
\begin{lstlisting}

head(aves.c)
tail(aves.c)
str(aves.c)
summary(aves.c)
\end{lstlisting}



Com isso já vemos um problema: os NAs são de fato observações faltantes?
Verificando a planilha descobrimos que na verdade são pontos em que não houve avistamento. Portanto, o valor correto é zero
Quais são os registros com este problema? Vamos verificar para os urubus\lstset{frame=single}
\begin{lstlisting}

aves.c[aves.c$urubu==NA,] 
\end{lstlisting}



Isto não funciona. O teste lógico Para NA é feito pela função \texttt{is.na}:\lstset{frame=single}
\begin{lstlisting}

is.na(aves.c)
is.na(aves.c$urubu)
\end{lstlisting}



Que retorna um vetor lógico que usamos para indexar o data frame ou um de seus vetores:\lstset{frame=single}
\begin{lstlisting}

aves.c[is.na(aves.c$urubu),]
aves.c[is.na(aves.c$urubu)|is.na(aves.c$carcara)|is.na(aves.c$seriema),]
\end{lstlisting}



Vamos guardar este pedaço da planilha num objeto temporário\lstset{frame=single}
\begin{lstlisting}

temp1 <- aves.c[is.na(aves.c$urubu)|is.na(aves.c$carcara)|is.na(aves.c$seriema),]
\end{lstlisting}



E agora vamos corrigir estes valores, que pode ser feito de três maneiras:\lstset{frame=single}
\begin{lstlisting}

aves.c$urubu[is.na(aves.c$urubu)] <- 0
aves.c[is.na(aves.c$urubu),2] <- 0
aves.c[is.na(aves.c[,2]), 2] <- 0
\end{lstlisting}



Continuando, para as outras aves:\lstset{frame=single}
\begin{lstlisting}

aves.c$carcara[is.na(aves.c$carcara)] <- 0
aves.c$seriema[is.na(aves.c$seriema)] <- 0
\end{lstlisting}



Deu certo? Vamos verificar, comparando linhas que agora são zero com o pedaço antigo do objeto que guardamos:\lstset{frame=single}
\begin{lstlisting}

aves.c[aves.c$urubu==0|aves.c$carcara==0|aves.c$seriema==0,]
temp1
\end{lstlisting}



Agora vamos verificar os valores da coluna que será um fator\lstset{frame=single}
\begin{lstlisting}

table(aves.c$fisionomia)
\end{lstlisting}



Há um erro de digitação no código de fisionomia de uma parcela. Corrigindo:\lstset{frame=single}
\begin{lstlisting}

aves.c$fisionomia[aves.c$fisionomia=="ce"] <- "Ce"
table(aves.c$fisionomia)
\end{lstlisting}



Convertendo para fator, que ordenamos da fisionomia mais aberta para a menos:\lstset{frame=single}
\begin{lstlisting}

aves.c$fisionomia <- factor(aves.c$fisionomia, levels=c("CL","CC","Ce"))
\end{lstlisting}



Ufa! Verificando tudo novamente:\lstset{frame=single}
\begin{lstlisting}

str(aves.c)
summary(aves.c)
\end{lstlisting}



Parece que agora está ok.

\subsection{\texorpdfstring{Média, Mediana e Quantis}{Media Mediana e Quantis}}
\label{sec:media_mediana_e_quantis}


Vamos usar o mesmo arquivo do tutorial anterior para explorar as estatísticas descritivas básicas. Começando pela média, e mediana:\lstset{frame=single}
\begin{lstlisting}

mean(aves.c[,2:4])
\end{lstlisting}



Este comando ainda funciona, mas está ,,condenado" (\emph{deprecated}) desde a verão 2.14.0. Em versões posteriores ele irá gerar um erro. Use a maneira recomendada pelo aviso, que é aplicar as funções a cada elemento do \emph{data frame}, que é uma lista:\lstset{frame=single}
\begin{lstlisting}

sapply(aves.c[,2:4],mean)
sapply(aves.c[,2:4],median)
\end{lstlisting}



No caso de \emph{data frames} você consegue o mesmo com a função \texttt{apply}, indicando no segundo argumento a margem a aplicar a função (1 para linhas e 2 para colunas):\lstset{frame=single}
\begin{lstlisting}

apply(aves.c[,2:4],2,median)
\end{lstlisting}



Calcule também a média truncada:\lstset{frame=single}
\begin{lstlisting}

apply(aves.c[,2:4], 2, mean, trim=0.1)
\end{lstlisting}



Há muita diferença entre essas três medidas de tendência central? Como você as explicaria?
Agora calcule os quantis para o número de avistamentos de urubus.  O padrão da função \texttt{quantile} são quartis, como na função \texttt{summary}:\lstset{frame=single}
\begin{lstlisting}

quantile(aves.c$urubu) ## O mesmo que o retornado pelo summary
summary(aves.c$urubu)
\end{lstlisting}



Mas você pode mudar para qualquer quantil:\lstset{frame=single}
\begin{lstlisting}

quantile(aves.c$urubu, probs= seq(from=0,to=1,by=0.1))
\end{lstlisting}



Por fim, obtenha quartis, médias e medianas de uma vez para todas as variáveis, com o comando:\lstset{frame=single}
\begin{lstlisting}

summary(aves.c[,2:4])
\end{lstlisting}



\subsection{\texorpdfstring{Exploração de uma Variável Categórica}{Exploraao de uma Variavel Categorica}}
\label{sec:exploraao_de_uma_variavel_categorica}


Vamos usar um conjunto de dados de um inventário de árvores, que você baixa  aqui. Leia com atenção a descrição deste conjunto de dados.

Vamos explorar a variável categórica nome da espécie, com a função \texttt{table}:\lstset{frame=single}
\begin{lstlisting}

caixeta <- read.csv("caixeta.csv", as.is=T)
names(caixeta)
table(caixeta$especie)
\end{lstlisting}



Qual a diferença no resultado se usamos o comando abaixo?\lstset{frame=single}
\begin{lstlisting}

sort(table(caixeta$especie), decreasing=T)
\end{lstlisting}



O resultado da função \texttt{table} pode ser fornecido à função de gráficos de barras:\lstset{frame=single}
\begin{lstlisting}

barplot(sort(table(caixeta$especie), decreasing=T))
barplot(table(caixeta$local))
\end{lstlisting}



\subsection{\texorpdfstring{Gráficos para uma Variável}{Graficos para uma Variavel}}
\label{sec:graficos_para_uma_variavel}


Voltando ao objeto criado no tutorial , vamos criar em uma só página os quatro gráficos básicos de diagnóstico de uma variável numérica, para o número de avistamentos de urubus:\lstset{frame=single}
\begin{lstlisting}

par(mfrow=c(2,2))
boxplot(aves.c$urubu)
hist(aves.c$urubu)
plot(density(aves.c$urubu))
stripchart(aves.c$urubu, method="stack")
par(mfrow=c(1,1))
\end{lstlisting}



O que acontece se você omite a primeira linha? E a última?

\subsection{\texorpdfstring{Variações do Histograma}{Variaoes do Histograma}}
\label{sec:variaoes_do_histograma}


Voltando ao objeto criado no tutorial Conferindo Data Frames, vamos fazer algumas variações de histogramas do número de avistamentos de urubus:
Você pode acrescentar marcas (traços) indicando a posição de cada observação no eixo x.\lstset{frame=single}
\begin{lstlisting}

## Histograma com os valores (funcao rug)
hist(aves.c$urubu)
rug(jitter(aves.c$urubu))
\end{lstlisting}



O que acontece se você omite a função \texttt{jitter} neste caso? Por que?

Agora vamos fazer um histograma re-escalonado de modo que as áreas das barras somem um. Com isto, podemos sobrepor ao histograma um ajuste não paramétrico de densidade probabilística, que também mantém área um:\lstset{frame=single}
\begin{lstlisting}

hist(aves.c$urubu, prob=T)
lines( density(aves.c$urubu),col="blue" )
\end{lstlisting}



Também sobre este histograma podemos sobrepor a curva normal. Para os parâmetros da normal, usamos a média e o desvio-padrão da amostra.\lstset{frame=single}
\begin{lstlisting}

hist(aves.c$urubu, prob=T)
curve(expr = dnorm(x,mean=mean(aves.c$urubu),sd=sd(aves.c$urubu)),add=T, col="red")
\end{lstlisting}



Por fim, vamos sobrepor a curva empírica de densidade probabilística com a curva normal:\lstset{frame=single}
\begin{lstlisting}

plot(density(aves.c$urubu),col="blue", ylim=c(0,0.08))
curve(expr = dnorm(x,mean=mean(aves.c$urubu),sd=sd(aves.c$urubu)),add=T, col="red")
\end{lstlisting}



O que estes gráficos revelam sobre a distribuição do número de avistamentos de urubus neste estudo fictício?

\subsection{\texorpdfstring{table e aggregate}{table e aggregate}}
\label{sec:table_e_aggregate}


Usaremos o objeto \texttt{caixeta} criado no tutorial Exploração de uma Variável Categórica.

A relação entre duas ou mais variáveis categóricas pode ser explorada com tabelas cruzadas, por exemplo:\lstset{frame=single}
\begin{lstlisting}

table(caixeta$especie,caixeta$local)
\end{lstlisting}



Quando temos uma variavel categórica (fator) e uma numérica, as funções \texttt{aggregate} e \texttt{tapply} são muito úteis. 
A função \texttt{aggregate} é o equivalente das tabelas dinâmicas das planilhas eletrônicas. Por exemplo, para obter do objeto \texttt{caixeta} um \emph{data frame} com a altura média dos fustes de cada espécie de árvore por local você executa o comando:\lstset{frame=single}
\begin{lstlisting}

caixeta.alt <- aggregate(caixeta$h, by=list(local=caixeta$local,especie=caixeta$especie),
                         FUN=mean)
\end{lstlisting}



Consulte a ajuda da função \texttt{aggregate} e experimente outras combinações de fatores e funções, com este conjunto de dados.

\subsection{\texorpdfstring{xtabs}{xtabs}}
\label{sec:xtabs}


Crie um objeto com este arquivo e faça as seguintes tabulações:\lstset{frame=single}
\begin{lstlisting}

xtabs(Freq~Sex+Survived, data=Titanic.df)
prop.table(xtabs(Freq~Sex+Survived, data=Titanic.df), margin=1)
xtabs(Freq~Class+Survived, data=Titanic.df)
prop.table(xtabs(Freq~Class+Survived, data=Titanic.df), margin=1)
\end{lstlisting}



Por que usamos a função \texttt{xtabs} neste caso e não a função \texttt{table}? P.ex:\lstset{frame=single}
\begin{lstlisting}

table(Titanic.df$Sex,Titanic.df$Survived)
\end{lstlisting}



\subsection{\texorpdfstring{Fórmula Estatística em Gráficos}{Formula Estatistica em Graficos}}
\label{sec:formula_estatistica_em_graficos}


A função \texttt{xtabs} (tutorial anterior) usa a notação de fórmula estatística do R, que é:variável dependente \textasciitilde{} variáveis preditoras


Esta notação foi criada para os modelos estatísticos, como a regressão linear, mas foi estendida para vários gráficos no R. Experimente os comandos abaixo em que esta notação é usada:\lstset{frame=single}
\begin{lstlisting}

boxplot(urubu~fisionomia, data=aves.c)
plot(seriema~urubu, data=aves.c, subset=fisionomia=="Ce")
plot(seriema~urubu, data=aves.c, subset=fisionomia=="CC")
plot(seriema~urubu, data=aves.c, subset=fisionomia!="CL")
\end{lstlisting}



Que tipo de padrão ou diferenças estes gráficos podem revelar?

Esta fórmula pode ainda incluir um fator condicionante, que aplica a relação proposta dentro de cada nível dos condicionais:variável dependente \textasciitilde{} variáveis preditoras | variáveis condicionantes


O pacote \texttt{lattice} implementa esta idéia para gráficos:\lstset{frame=single}
\begin{lstlisting}

library(lattice)
xyplot(seriema~urubu|fisionomia, data= aves.c)
\end{lstlisting}



Qual a diferença entre este gráfico e os três últimos obtidos com os comandos anteriores?

\subsection{\texorpdfstring{O quarteto de Anscombe}{O quarteto de Anscombe}}
\label{sec:o_quarteto_de_anscombe}


O pacote \texttt{datasets} tem vários conjuntos de dados que se tornaram clássicos da estatística. Vamos analisar um dos mais usados para treino de análises exploratórias. Como o R já carrega o \texttt{datasets} por padrão, precisamos apenas fazer uma cópia do objeto para nossa área de trabalho \footnote{isto não é estritamente necessário, mas facilita.}:\lstset{frame=single}
\begin{lstlisting}

data(anscombe)#carrega para a area de trabalho
ls() #agora o objeto está no workspace
\end{lstlisting}



Este objeto é composto de 4 pares de variáveis, nomeadas \texttt{x1} a \texttt{x4} (variáveis independentes ou preditoras) e \texttt{y1} a \texttt{y4} (variáveis dependentes ou resposta):\lstset{frame=single}
\begin{lstlisting}

names(anscombe)
\end{lstlisting}



Compare as médias de cada uma das variáveis. Para isto, use a função \texttt{apply} para aplicar a função \texttt{mean} a cada coluna\footnote{argumento \texttt{MARGIN=2}} deste data frame:\lstset{frame=single}
\begin{lstlisting}

apply(anscombe[1:4], MARGIN=2, FUN=mean)
apply(anscombe[5:8], 2, mean)
\end{lstlisting}



Faça o mesmo para obter as variâncias:\lstset{frame=single}
\begin{lstlisting}

apply(anscombe[1:4], 2, var)
apply(anscombe[5:8], 2, var)
\end{lstlisting}



A pergunta principal para este conjunto de dados é se há relação entre cada variável \texttt{x} e \texttt{y}. Isso pode ser testado com o \href{http://en.wikipedia.org/wiki/Pearson_product-moment_correlation_coefficient}{coeficiente de correlação de Pearson}, que vai de zero (nenhuma correlação) a um (positivo ou negativo, correlação perfeita).\lstset{frame=single}
\begin{lstlisting}

with(anscombe,cor(x1,y1))
with(anscombe,cor(x2,y2))
with(anscombe,cor(x3,y3))
with(anscombe,cor(x4,y4))
\end{lstlisting}



O que se pode concluir até aqui? Faça os gráficos de dispersão:\lstset{frame=single}
\begin{lstlisting}

par(mfrow=c(2,2)) # 4 graficos em uma janela
plot(y1~x1, data=anscombe)
plot(y2~x2, data=anscombe)
plot(y3~x3, data=anscombe)
plot(y4~x4, data=anscombe)
par(mfrow=c(1,1))
\end{lstlisting}



Você pode acrescentar as linhas de regressão linear \footnote{descreve o valor esperado de uma variável dependente como uma função linear de uma variável independente, veja na unidade sobre modelos lineares }:\lstset{frame=single}
\begin{lstlisting}

par(mfrow=c(2,2)) # 4 graficos em uma janela
plot(y1~x1, data=anscombe,
     xlim=range(anscombe[,1:4]),ylim=range(anscombe[,5:8]))
abline(lm(y1~x1, data=anscombe))
plot(y2~x2, data=anscombe,
     xlim=range(anscombe[,1:4]),ylim=range(anscombe[,5:8]))
abline(lm(y2~x2, data=anscombe))
plot(y3~x3, data=anscombe,
     xlim=range(anscombe[,1:4]),ylim=range(anscombe[,5:8]))
abline(lm(y3~x3, data=anscombe))
plot(y4~x4, data=anscombe,
     xlim=range(anscombe[,1:4]),ylim=range(anscombe[,5:8]))
abline(lm(y4~x4, data=anscombe))
par(mfrow=c(1,1))
\end{lstlisting}



Este conjunto de dados foi criado pelo estatístico Frank Anscombe para demonstrar a importância da análise visual de dados, veja \href{http://en.wikipedia.org/wiki/Anscombe's_quartet}{aqui}.

\subsection{\texorpdfstring{Leia mais sobre análise exploratória de dados}{Leia mais sobre analise exploratoria de dados}}
\label{sec:leia_mais_sobre_analise_exploratoria_de_dados}


Artigo com um protocolo de análise exploratória de dados:
\begin{itemize}
  \item\url{http://onlinelibrary.wiley.com/doi/10.1111/j.2041-210X.2009.00001.x/pdf}
\end{itemize}


Capítulo do livro ,,Analysing Ecological Data" sobre análise exploratória de dados:
\begin{itemize}
  \item\href{media/bie5782/02_tutoriais/tutorial4/zuur_cap_4_exploration_statistics.pdf}{zuur\_cap\_4\_exploration\_statistics.pdf}
\end{itemize}


\end{document}
