Thiago Cesar Lima Silveira - Março 2020

Os processos de análise de dados em projetos científicos se incia com uma planilha de dados. A organização de bancos de dados é uma etapa importante, pois dados desorganizados tendem a gerar erros futuros, podemdo limitar análises ou até inviabilidar pesquisas. Com os dados organizados da maneira correta você poderá facilmente extrair, manipular, criar novas variáveis e construir gráficos de maneira mais eficiente. Para usar ferramentas que tornam a computação mais eficiente, como linguagens de programação como R, precisamos estruturar nossos dados da maneira lógica.

Tendo como ponto de partida a aula teórica e prática que tivemos anteriormente, vamos explorar um banco de dados já estruturado, “desembarque BTS”. O banco de dados apresenta dados fictícios baseados em um estudo real sobre desembarque pesqueiro na Baía de Todos os Santos - Bahia. A metodologia de coleta empregada consistiu no acompanhamento diário do desembarque da pesca em seis localidades (Caípe, Madre de Deus, Bom Jesus, São Paulo, Paramana e Frade). Em cada local, um entrevistador permaneceu nas praias de cada localidade seis dias por semana das 06:00 às 14:30 horas. Cada formulário compreeende o desembarque na praia de uma embarcação ou indivíduo (para o caso de pescadores que se deslocam a pé). O estudo teve como objetivo observar as variações quali-quantitativas da atividade pesqueira, bem como avaliar a sua produtividade em cada localidade.

1 - Abra o RStudio, crie um diretório de trabalho, e carregue o arquivo dados_desembarque_pesca_2019.csv. Use os comandos abaixo para importar e explorar o objeto recém criado df_pesca

df_pesca<-read.csv("dados_desembarque_pesca_2019.csv", na.string = "Na", header=T)
head(df_pesca) 
# verifique se o nome da primeira variavel está desta maneira "ï..localidade"
# se estiver assim modifique o nome da variável utilzando o comando:
# df_pesca$localidade<-df_pesca$ï..localidade
# esse é um problema que ainda nao resolvi quanto a exportacao de arquivos csv em
# macOS

2 - Como vimos na aula teórica, existem basicamente dois tipos de variáveis: numéricas e categóricas. As variáveis numéricas podem ser medições de peso, quantidade e preço. Para variáveis categóricas, podemos ter o tipo de arte de pesca, a espécie, família ou nome popular. No objeto criado anteriormente df_pesca, qual a natureza de cada variável? Analise o banco de dados com a função str(). Esta função auxilia a identificar cada tipo de variável em um data frame. O R consegue identificar a natureza das variáveis, e, normalmente, já deixa pronto para uso. Execute o comando abaixo e analise o banco de dados importado, discernindo os tipos de variáveis.

str(df_pesca)

3 - Saber a natureza de cada variável é importante para o tipo de teste estatístico a ser utilizado. Um exemplo de uso de variáveis categóricas é utilizado em experimentos em que se usa diferentes tratamentos (tipo de solo, localidade,…). Para termos uma idéia de como se comportam os dados de df_pesca podemos fazer um gráfico do tipo box.plot e investigar os dados. Os comandos abaixo fazem um boxplot utilizando dados peso de pescado em função das localidades.

boxplot(df_pesca$peso_total ~ df_pesca$localidade, ylab = "Peso (Kg)",
        xlab = "Localidade")

4 - Verificamos que algumas variáveis que deveriam ser numéricas estão em forma de fator, se pretendemos fazer uma soma precisamos nos certificar que variáveis numéricas sejam realmente numéricas. Os comandos abaixo resolvem este problema.

str(df_pesca)
df_pesca$abun<-as.numeric(as.character(df_pesca$abun))
df_pesca$peso_total<-as.numeric(as.character(df_pesca$peso_total))
df_pesca$preco_kg<-as.numeric(as.character(df_pesca$preco_kg))

5 - Um dos pacotes disponíveis em R para manipulação e reformatação de bancos de dados se chama reshape2(). Este pacote possui uma função chamada acast(), que quando usada após a função aggregate() torna possível formatar bancos de dados em planilhas onde temos as observações nas linhas e variáveis nas colunas. Este tipo de configuração de planilha é a usada para quase todas as análises estatísticas no R. Portanto, dominar estes procedimentos de formatação de bancos de dados é importante para a agilidade na análise de dados, poupando tempo e preservando a saúde mental. Pois bem, primeiramente devemos instalar e carregar o pacote reshape2.

install.packages("reshape2")
library(reshape2)

6 - Os comandos abaixo agregam os dados de abundância por nome popular e localidade. Avalie o resultado.

head(df_pesca)

# Passo 1: usando aggregate para somar as abundâncias por nome popular e localidade
sp_local<-aggregate(abun ~ popular_nome + localidade , FUN="sum", data=df_pesca)
sp_local #planilha longa ainda

# Passo 2: usando acast para formatar a matriz em localidae X nome popular com a variável abundância 
sp_local_cast<-acast(localidade ~ popular_nome ,
                     value.var="abun",
                     data =sp_local)

# Alternativamente você pode ter o mesmo resultado usando somente a função acast
# adicionando o argumento "fun.aggregate = sum" usando os dados originais "df_pesca"
# Desta maneira você realiza o "Passo 1" e o "Passo 2" com uma linha de comando somente
sp_local_cast_passo1_e_passo2<-acast(localidade ~ popular_nome,
                     value.var="abun",
                     fun.aggregate = sum,
                     data =df_pesca)

7 - Note que na matriz resultante sp_local_cast percebe-se uma planilha com Na, estes Nas são os casos em que a espécie não ocorreu. Para transformar ao Nas em ZERO use o comando abaixo. Use a ajuda do R para saber o que a função is.na() realiza.

sp_local_cast[is.na(sp_local_cast)]<-0  
sp_local_cast

8 - Os comandos abaixo criam criam uma planilha com peso total em Kg por cada espécie por local. Mais um recorte dos dados originários de um banco de dados.

kg_local<-aggregate(peso_total ~ popular_nome + localidade , FUN="sum", data=df_pesca)
df_pesca$peso_total<-as.numeric(as.character(df_pesca$peso_total)) #tornando a variável numérica
kg_local<-aggregate(peso_total ~ popular_nome + localidade , FUN="sum", data=df_pesca)

sp_local_cast<-acast(localidade ~ popular_nome , value.var="abun", fun.aggregate = sum, 
                             data =df_pesca)


kg_local_cast<-acast( localidade ~ popular_nome , 
                    value.var='peso_total', FUN=sum, data=kg_local  )
kg_local_cast
kg_local_cast[is.na(kg_local_cast)]<-0  

kg_local_cast

10 - O comando abaixo tenta criar uma planilha com arte de pesca por localidade. Avalie os dados criados.

arte_local<-aggregate(arte ~ localidade , FUN="sum", data=df_pesca)

11 - Não é possivel agregar arte de pesca por localidadae, pois a arte é um fator com categorias e nos retorna um erro “not meaningful for factors”. Para tanto temos que criar uma coluna que contenha números que possam ser agregados, somados no nosso caso. A saída é criarmos uma nova coluna que chamaremos de “uni”, essa coluna terá em todas as linhas da planilha com o número “1”.

df_pesca$uni<-1
str(df_pesca)

12 - Agora sim, temos uma variável numérica que pode ser usada para contagens. O comando abaixo agrega e cria a nossa nova variável uni, que pode ser somada condicionalmente a arte de pesca e localidade.

arte_local<-aggregate(uni ~ arte + localidade , FUN="sum", data=df_pesca)
arte_local
arte_local_cast<-acast(localidade ~ arte  , 
                    value.var='uni', FUN=sum, data=arte_local)
arte_local_cast #tem Na?
arte_local_cast[is.na(arte_local_cast)]<-0 #trocando Na por 0  
arte_local_cast #ok!

13 - Com os dados podemos, por exemplo, construir um gráfico de barras utilizando a função barplot().

artes<-arte_local$arte[arte_local$localidade == "sao_paulo"]
artes
vals<-arte_local$uni[arte_local$localidade == "sao_paulo"]
df_bp<-data.frame(artes, vals) #fazendo um pequeno data.frame para o gráfico
df_bp_ord<-df_bp[order(vals, decreasing = T),] #order?
barplot(df_bp_ord$vals,
        names.arg=df_bp_ord$artes, cex.names = .6, ylim=c(0,300),
        col= c("blue") )

14 - Agora vamos explorar os dados visando entender a influência do tamanho da embarcação sobre a biomassa capturada.

#Criando uma nova variáves "id", uma maneira de individualizar amostras com um rótulo individual
df_pesca$id<-paste(df_pesca$ano, df_pesca$mes, df_pesca$formulario ) 
df_pesca$id

str(df_pesca)
df_pesca$c_embarcacao<-as.numeric(as.character(df_pesca$c_embarcacao))
df_kg_emb<-aggregate(peso_total ~ c_embarcacao + id + localidade, FUN = mean,
                     data=df_pesca)
str(df_kg_emb)

df_sp<-subset(df_kg_emb, localidade == 'sao_paulo') # somente para 'sao paulo'
head(df_sp)

plot(peso_total ~ c_embarcacao, data=df_sp) #gráfico de pontos peso x embarcação

coplot(peso_total ~ c_embarcacao | localidade , data=df_pesca, rows=1)# outra possibilidade

plot(df_kg_emb$c_embarcacao, df_kg_emb$peso_total)

15 - Desafio - utilizando os comandos anteriores, explore o banco de dados criando novos recortes dos dados.