Os efeitos da má qualidade do ar não são tão visíveis comparados a outros fatores mais fáceis de serem identificados. Contudo, vários estudos tem demonstrado, correlações entre a exposição aos poluentes atmosféricos e os efeitos de morbidade e mortalidade, causadas por problemas respiratórios (asma, bronquite, enfisema pulmonar e câncer de pulmão) e cardiovasculares, mesmo quando as concentrações dos poluentes na atmosfera não ultrapassam os padrões de qualidade do ar vigentes. As populações mais vulneráveis são as crianças, os idosos e as pessoas que já apresentam doenças respiratórias. A poluição atmosférica traz prejuízos não somente à saúde e à qualidade de vida das pessoas, mas também acarretam maiores gastos Públicos, decorrentes do aumento do número de atendimentos e internações hospitalares, além do uso de medicamentos, custos esses que poderiam ser evitados com a melhoria da qualidade do ar dos centros urbanos. Com isso, a gestão da qualidade do ar é imprecidivel para garantir que o desenvolvimento socioeconômico ocorra de forma sustentável e ambientalmente segura. Para tanto, se fazem necessárias ações de prevenção, combate e redução das emissões de poluentes e dos efeitos da degradação do ambiente atmosférico. Espera-se que através dessa análise dos dados da coleta sistemática de concentrações de poluentes e substancias químicas no Ar, realizada por sensores químicos possa servir de parâmetros e utiliza em qualquer região, com também possibilite traçar políticas públicas para minimizar ou eliminar a emissão dessas substancias, melhorando a qualidade de vida dos cidadãos e reduzindo os gastos públicos na área da saúde.
O Dataset descrito e analisado nesse documento é chamado de Air Quality e contém as respostas de um dispositivo multisensor de gás implantado numa cidade italiana. As médias de respostas por hora são registradas juntamente com referências de concentrações de gás de um analisador certificado.
O Dataset contem as respostas de um dispositivo multisensor de gás
implantado numa área significativamente poluída, ao nível da estrada,
dentro de uma cidade italiana.
O banco de dados contém 9471 com
9.358 instâncias de respostas médias horárias de uma série de 5 sensores
químicos de óxido metálico incorporados em um dispositivo multisensor
químico de qualidade do ar, apresentando 15 variáveis significativas.
Os dados contidos nesse Dataset foram registrados de março de 2004
a fevereiro de 2005 (um ano), representando as gravações mais longas
disponíveis gratuitamente de acordo com as respostas de sensores
químicos de qualidade do ar implantados em campo.
As concentrações
médias horárias do Ground Truth para CO, hidrocarbonetos não metanicos,
benzeno, óxidos de nitrogênio totais (NOx) e dióxido de nitrogênio (NO2)
foram fornecidas por um analisador.
Os pacotes a seguir são necessários para a execução do código.Sem eles, o código aqui demonstrado não será executado com sucesso.
| Pacote | Utilização |
|---|---|
| library(rmarkdown) | utilizado na conversão de arquivo em R em diversos formatos |
| rmdformats | customização do template gerado pelo rmarkdown |
| library(readr) | importar arquivos |
| library(knitr) | para geração de tabelas |
| library(dplyr) | para manipulação avançada dos DataFrames |
| jsonlite | manipulação de arquivos json |
| viridis | para seleção de paleta de cores utilizada nos gráficos |
| ggplot2 | para visualização de gráficos |
O conjunto de dados “Air Quality” disponível no repositório da UCI Machine Learning Repository tem o objetivo principal de monitorar e analisar a qualidade do ar em uma região específica da cidade de Milão, Itália. Os dados foram coletados de março de 2004 a fevereiro de 2005 e contêm medições horárias de várias variáveis relacionadas à poluição do ar e condições meteorológicas.
O Dataset inclui as seguintes variáveis:
Os dados podem ser utilizados para:
Esses dados são valiosos para cientistas ambientais, epidemiologistas, analistas de dados e agentes de políticas públicas que buscam melhorar a qualidade do ar e proteger a saúde da população.
library(readr)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
# Carregar o conjunto de dados
url <- "https://raw.githubusercontent.com/cleoguim/Dado/main/AirQualityUCI.csv"
dados <- read.csv2(url)
# Visualizar as primeiras linhas dos dados
head(dados)
## Date Time CO.GT. PT08.S1.CO. NMHC.GT. C6H6.GT. PT08.S2.NMHC.
## 1 10/03/2004 18.00.00 2.6 1360 150 11.9 1046
## 2 10/03/2004 19.00.00 2.0 1292 112 9.4 955
## 3 10/03/2004 20.00.00 2.2 1402 88 9.0 939
## 4 10/03/2004 21.00.00 2.2 1376 80 9.2 948
## 5 10/03/2004 22.00.00 1.6 1272 51 6.5 836
## 6 10/03/2004 23.00.00 1.2 1197 38 4.7 750
## NOx.GT. PT08.S3.NOx. NO2.GT. PT08.S4.NO2. PT08.S5.O3. T RH AH X X.1
## 1 166 1056 113 1692 1268 13.6 48.9 0.7578 NA NA
## 2 103 1174 92 1559 972 13.3 47.7 0.7255 NA NA
## 3 131 1140 114 1555 1074 11.9 54.0 0.7502 NA NA
## 4 172 1092 122 1584 1203 11.0 60.0 0.7867 NA NA
## 5 131 1205 116 1490 1110 11.2 59.6 0.7888 NA NA
## 6 89 1337 96 1393 949 11.2 59.2 0.7848 NA NA
# Identificar o tipo de dados de cada coluna
str(dados)
## 'data.frame': 9471 obs. of 17 variables:
## $ Date : chr "10/03/2004" "10/03/2004" "10/03/2004" "10/03/2004" ...
## $ Time : chr "18.00.00" "19.00.00" "20.00.00" "21.00.00" ...
## $ CO.GT. : num 2.6 2 2.2 2.2 1.6 1.2 1.2 1 0.9 0.6 ...
## $ PT08.S1.CO. : int 1360 1292 1402 1376 1272 1197 1185 1136 1094 1010 ...
## $ NMHC.GT. : int 150 112 88 80 51 38 31 31 24 19 ...
## $ C6H6.GT. : num 11.9 9.4 9 9.2 6.5 4.7 3.6 3.3 2.3 1.7 ...
## $ PT08.S2.NMHC.: int 1046 955 939 948 836 750 690 672 609 561 ...
## $ NOx.GT. : int 166 103 131 172 131 89 62 62 45 -200 ...
## $ PT08.S3.NOx. : int 1056 1174 1140 1092 1205 1337 1462 1453 1579 1705 ...
## $ NO2.GT. : int 113 92 114 122 116 96 77 76 60 -200 ...
## $ PT08.S4.NO2. : int 1692 1559 1555 1584 1490 1393 1333 1333 1276 1235 ...
## $ PT08.S5.O3. : int 1268 972 1074 1203 1110 949 733 730 620 501 ...
## $ T : num 13.6 13.3 11.9 11 11.2 11.2 11.3 10.7 10.7 10.3 ...
## $ RH : num 48.9 47.7 54 60 59.6 59.2 56.8 60 59.7 60.2 ...
## $ AH : num 0.758 0.726 0.75 0.787 0.789 ...
## $ X : logi NA NA NA NA NA NA ...
## $ X.1 : logi NA NA NA NA NA NA ...
#Visualizando em tabela (todas as entradas, separadas em páginas)
library(rmarkdown)
paged_table(dados)
Durante a análise dos dados, observou-se que as colunas referentes as variáveis X e X.1 não apresentam dados significativos, todos são do tipo NA- vazias, então foi decidido pela remoção delas,contudo, essa remoção não interfere na qualidade das análises realizadas e apresentadas nesse relatório.
na_count <- sum(is.na(dados$X))
na_count1 <- sum(is.na(dados$X.1))
novo_dados <- dados[, !(names(dados) %in% c("X", "X.1"))]
# Remover linhas com valores "NA" não está funcionando
#novo_dados <- novo_dados %>% drop_na()
paged_table(novo_dados)
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.1 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.1
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
# Converter as colunas de data e hora para um único datetime
novo_dados <- novo_dados %>%
mutate(DateTime = as.POSIXct(paste(Date, Time), format = "%d/%m/%Y %H.%M.%S")) %>%
select(DateTime, everything())