Utilizando os dados do Open Food Facts database, um gratuito, aberto e colaborativo database sobre comida ao redor do mundo, foram feitas análises sobre a concetração de cafeina, proteína e sódio nos alimentos.

Nos dados iniciais temos uma tabela que contém as seguintes colunas:

Por se tratar de mais de 50M de dados, foi decidido que iriamos trabalhar apenas com as seguintes colunas:

library(dplyr)
library(ggplot2)
file <- read.csv("food_facts.csv", sep=";")

file$sodium_100g <- as.character(file$sodium_100g)
file$sodium_100g[is.na(file$sodium_100g)] <- 0
file$sodium_100g <- gsub(",", ".", file$sodium_100g)
file$sodium_100g <- as.numeric(file$sodium_100g)

file$caffeine_100g <- as.character(file$caffeine_100g)
file$caffeine_100g[is.na(file$caffeine_100g)] <- 0
file$caffeine_100g <- gsub(",", ".", file$caffeine_100g)
file$caffeine_100g <- as.numeric(file$caffeine_100g)

file$proteins_100g <- as.character(file$proteins_100g)
file$proteins_100g[is.na(file$proteins_100g)] <- 0
file$proteins_100g <- gsub(",", ".", file$proteins_100g)
file$proteins_100g <- as.numeric(file$proteins_100g)

file_sodium <- filter(file, sodium_100g != 0) 
file_caffeine <- filter(file, caffeine_100g != 0) 
file_proteins <- filter(file, proteins_100g != 0)

A nossa primeira curiosidade foi descobrir como que era a distribuição de Sódio, Proteína e Cafeina em todos os alimentos. Para uma melhor visualização da distribuição dos dados utilizamos os boxplot. Por se tratar de um banco de dados colaborativo, existe um grande número de valores em branco. Por causa disso, filtramos e retiramos os alimentos com valores NA para proteína, cafeina e sódio.

Para o sódio temos o seguinte boxplot:

ggplot(file_sodium, aes(1, sodium_100g)) + 
  geom_boxplot() + 
  theme_classic() +
  theme(axis.ticks = element_blank(),
         axis.text.x=element_blank(),
        axis.title.x=element_blank(),
        legend.position="none")

É possível notar que existe um grande número de outliers e que tanto a média, 1 e 3 quartil estão próximos a zero. Interessante observar que existe um alimento com mais da metade da concentração de sódio dos demais.

Para a cafeina temos o seguinte boxplot:

ggplot(file_caffeine, aes(1, caffeine_100g)) + 
  geom_boxplot() + 
  theme_classic() +
  theme(axis.ticks = element_blank(),
         axis.text.x = element_blank(),
        axis.title.x = element_blank())

A cafeina possui menos outliers que o sódio, porém a média, 1 e 3 quartil também se encontra perto de zero.

Para a proteína temos o segunite boxplot:

ggplot(file_proteins, aes(1, proteins_100g)) + 
  geom_boxplot() + 
  theme_classic() +
  theme(axis.ticks = element_blank(),
         axis.text.x=element_blank(),
        axis.title.x=element_blank(),
        legend.position="none")

A proteína, diferente das outras substâncias, possui um boxplot com 1 e 3 quartil com valores diferentes. Mostrando dessa forma que a proteína possui diversos alimentos com diferentes grau de concentração

A nossa segunda curiosidade foi descobrir qual das três substancias possui maior variância nos alimentos

df <- data.frame(tipo = c("sódio", "cafeina", "proteína"), 
                 variancia = c(var(file_sodium$sodium_100g), var(file_caffeine$caffeine_100g), var(file_proteins$proteins_100g)))

ggplot(df, aes(x = tipo, y = variancia)) + 
  geom_bar(stat = "identity") +
  theme_classic() + 
  theme(axis.title.x = element_blank())

É possível notar que a proteína é a substância que possui maior variância e o sódio menor variância de concentração nos alimentos

A nossa última curiosidade foi descobrir qual alimento possui a maior concentração de Sódio, Proteína e Cafeina

Para a cafeina temos o alimento:

file_caffeine <- file_caffeine[order(-file_caffeine$caffeine_100g),]
file_caffeine[1,]$product_name
## [1] Red Bull energy drink
## 50932 Levels:    알 \U0001f37a 통깨 짜왕 ゆず 미역 울무차 콩두유 ... 黑瓶眼药水

foto do alimento

O que não foi nenhuma surpresa, já que o RedBull é conhecido por ser um alimento que pode te proporcionar uma “energia extra”

Para a proteína temos:

file_proteins <- file_proteins[order(-file_proteins$proteins_100g),]
file_proteins[1,]$product_name
## [1] Blattgelatine weiss
## 50932 Levels:    알 \U0001f37a 통깨 짜왕 ゆず 미역 울무차 콩두유 ... 黑瓶眼药水
file_proteins[1,]$image_url
## [1] http://en.openfoodfacts.org/images/products/20153465/front.8.400.jpg
## 61200 Levels:  ...

foto do alimento

Uma especie de gelatina vendida na Alemanha

Para o sódio tivemos uma surpresa, pois o alimento cadastrado como tendo a maior concentração de sódio não possuía praticamente nenhum registro (nome, localidade, foto, etc). Por se tratar de um conjunto de dados aberto e colaborativo isso é considerado “normal”. Por essa razão resolvemos observar o alimento na segunda posição:

file_sodium <- file_sodium[order(-file_sodium$sodium_100g),]
file_sodium[2,]$product_name
## [1] Himalayan Pink Salt
## 50932 Levels:    알 \U0001f37a 통깨 짜왕 ゆず 미역 울무차 콩두유 ... 黑瓶眼药水

Foto do alimento

O alimento encontrado foi um sal vendido nos Estados Unidos

É falado constantemente que os americanos comem de uma maneira muito errada e que seus alimentos possuem altos níveis de sódio, açúcar e cafeina. Por essa razão, observamos a concentração de sódio da coca cola vendida nos Estados Unidos, Canada, Alemanha e Italia para saber se existe uma diferença na concentração de sódio na coca cola ao redor do mundo.

coca <- filter(file, grepl('coca cola|coke|coca-cola', product_name, ignore.case = TRUE)) %>%
  filter(grepl('United States|Canada|Germany|Italy', countries_en, ignore.case = FALSE))  %>%
  filter(sodium_100g > 0) 

coca$destaque <- coca$countries_en %in% c("United States", "Canada", "Germany", "Italy")
coca <- filter(coca, destaque == TRUE)

ggplot(coca, aes(x = reorder(countries_en, -sodium_100g), y = sodium_100g)) + 
  geom_bar(stat = "identity") +
  theme_classic() + 
  theme(axis.title.x = element_blank())

É possível perceber que, para os dados cadastrados, nos Estados Unidos temos uma concentração maior de sódio na coca cola em comparação com os outros países

Um concorrente direto do refrigerante da coca cola é a pepsi. Pensando nisso, tivemos a curiosidade de saber se em média a pepsi tinha mais concentração de sódio do que a coca cola

pepsi <- filter(file, grepl('pepsi', product_name, ignore.case = TRUE)) %>%
  filter(sodium_100g > 0)

toPlot <- data.frame(tipo = c("Coca-cola", "Pepsi"), media = c(mean(coca$sodium_100g), mean(pepsi$sodium_100g)))

ggplot(toPlot, aes(x = tipo, y = media)) + 
  geom_bar(stat = "identity") +
  theme_classic() + 
  theme(axis.title.x = element_blank())

Podemos observar que, para os dados cadastrados, a Pepsi possui em média maior concentração de sódio do que a coca cola