Relatorio descrevendo a análise de dados do DataSet AirQuality referente a Vito (2016), pré requisito para a nota da 2Va da disciplina Computação para Análise de Dados- CPAD, curso de mestrado em informática Aplicada pela UFRPE>

1 Introdução

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.

1.1 Descrição do Dataset

O Dataset descrito e analisado nesse documento é chamado de Air Quality, disponível no site da archive 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.

1.2 Informações do Dataset

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.

2 Pacotes Requeridos

Os pacotes a seguir são necessários para a execução de todas as funcionalidades, analises, tabelas e gráficos apresentados neste relatório.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(tidyverse) pacote que consolida uma série de ferramentas 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

3 Detalhamentos do DataSet Air Quality

Nesta etapa será apresentando os objetivos do Dataset Air Quality, a estrutura dos dados, suas possíveis utilizações.

3.1 Objetivo principal

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.

3.2 Objetivos Específicos dos Dados

  1. Monitoramento da Qualidade do Ar:
    • Medir a concentração de diferentes poluentes atmosféricos, incluindo monóxido de carbono (CO), óxidos de nitrogênio (NOx e NO2), ozônio (O3), hidrocarbonetos não metânicos (NMHC), entre outros.
    • Registrar essas medições de forma contínua ao longo do tempo para capturar variações diárias e sazonais.
  2. Análise de Padrões e Tendências:
    • Identificar padrões temporais nos níveis de poluentes, como flutuações diurnas e sazonais.
    • Avaliar a correlação entre diferentes poluentes e condições meteorológicas, como temperatura, umidade e velocidade do vento.
  3. Pesquisa em Saúde Pública:
    • Fornecer dados para estudos epidemiológicos que investiguem a relação entre exposição a poluentes atmosféricos e efeitos adversos à saúde.
    • Auxiliar na compreensão dos impactos da poluição do ar na saúde da população local.
  4. Desenvolvimento e Validação de Modelos Preditivos:
    • Utilizar os dados para desenvolver modelos estatísticos e de machine learning que possam prever níveis futuros de poluição com base em variáveis observacionais.
    • Validar e comparar diferentes abordagens de modelagem preditiva usando um conjunto de dados realista e abrangente.
  5. Avaliação de Políticas Ambientais:
    • Analisar a eficácia das políticas de controle da poluição e regulamentações ambientais implementadas durante o período de coleta de dados.
    • Prover dados empíricos que podem ser usados para planejar novas medidas de mitigação da poluição do ar.

3.3 Estrutura do Conjunto de Dados

O Dataset inclui as seguintes variáveis:

  • Date: Data e hora da medição.
  • CO(GT): Concentração de monóxido de carbono em \(mg/m^3\) (medida pela estação de monitoramento).
  • PT08.S1(CO): Resposta do sensor para CO (umidade específica).
  • NMHC(GT): Concentração de hidrocarbonetos não metânicos em \(microg/m^3\).
  • C6H6(GT): Concentração de benzeno em \(microg/m^3\).
  • PT08.S2(NMHC): Resposta do sensor para NMHC (umidade específica).
  • NOx(GT): Concentração de óxidos de nitrogênio em ppb.
  • PT08.S3(NOx): Resposta do sensor para NOx (umidade específica).
  • NO2(GT): Concentração de dióxido de nitrogênio em \(microg/m^3\).
  • PT08.S4(NO2): Resposta do sensor para \(NO^2\) (umidade específica).
  • PT08.S5(O3): Resposta do sensor para ozônio (umidade específica).
  • T: Temperatura em graus Celsius.
  • RH: Umidade relativa em %.
  • AH: Umidade absoluta em \(gm/m^3\).

3.4 Utilização dos Dados

Os dados podem ser utilizados para:

  • Análise exploratória e visualização de dados.
  • Modelagem estatística e preditiva para prever níveis de poluição.
  • Estudos de correlação e regressão para entender a relação entre poluentes e fatores meteorológicos.
  • Desenvolvimento de algoritmos de machine learning para detecção de anomalias e previsão da qualidade do ar.
  • Pesquisa em políticas públicas para avaliar o impacto de diferentes políticas ambientais na qualidade do ar.

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.

4 Tratamento e exploração do Dataset

Nesta etapa estaremos apresentando a etapa de carregamento do DataSet Air Quality, idetificando os tipos dos dados apresentados,

4.1 Carregar o conjunto de dados

library(readr)
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ purrr     1.0.2
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.1     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.1
## ── 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
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
#Visualizando em tabela (todas as entradas, separadas em páginas)
library(rmarkdown)
paged_table(dados)

4.2 Limpando o Dataset e Remoção de Dados insastifatórios

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 dessas colunas. Contudo, essa remoção não interfere na qualidade das análises realizadas e apresentadas nesse relatório.

## Remoção de colunas sem valores
dados = dados[1:9357, 1:15]

As linhas que contém valores -200 também foram transformado em NA, já que esse valor negativo, na documentação do Dataset são registrados para designar dados não lidos.

# convertendo dados -200 em NA
dados[dados == -200] = NA

#visualizar dados após remoção de colunas
paged_table(dados)
#percentual de variaveis NA por coluna
NAS<- round(colSums(is.na(dados))*100/nrow(dados),2)
NAS[NAS>0]
##        CO.GT.   PT08.S1.CO.      NMHC.GT.      C6H6.GT. PT08.S2.NMHC. 
##         17.99          3.91         90.23          3.91          3.91 
##       NOx.GT.  PT08.S3.NOx.       NO2.GT.  PT08.S4.NO2.   PT08.S5.O3. 
##         17.52          3.91         17.55          3.91          3.91 
##             T            RH            AH 
##          3.91          3.91          3.91
#verificar quantos elementos são NA em cada variaveis
colSums(is.na(dados))
##          Date          Time        CO.GT.   PT08.S1.CO.      NMHC.GT. 
##             0             0          1683           366          8443 
##      C6H6.GT. PT08.S2.NMHC.       NOx.GT.  PT08.S3.NOx.       NO2.GT. 
##           366           366          1639           366          1642 
##  PT08.S4.NO2.   PT08.S5.O3.             T            RH            AH 
##           366           366           366           366           366

4.3 Reorganizando as colunas de acordo com a resposta verdadeira e direcionada do sensor dos poluentes

dados_columns = c('date', 'co', 'co_s', 'NMHC', 'NMHC_s', 'c6h6',
                    'nox', 'nox_s', 'no2', 'no2_s', 'o3_s','temp', 'RH', 'AH')
colnames(dados) = dados_columns

5 Análise exploratória dos dados

Agora iremos mostrar alguns dados estatísticos das variáveis apresentadas no Dataset Air Quality. Vale destacar que os cálculos e alguns códigos foram desenvolvidos analisando e estudando as orientações de wolviearun (n.d.) no seu GitHub.

5.1 Calculando os dados estatisticos da temperatura

library(psych)
## 
## Attaching package: 'psych'
## The following objects are masked from 'package:ggplot2':
## 
##     %+%, alpha
summary(dados$temp)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   221.0   731.5   963.0  1022.9  1273.5  2523.0     366
describe(dados$temp)
##    vars    n    mean     sd median trimmed    mad min  max range skew kurtosis
## X1    1 8991 1022.91 398.48    963  996.24 386.96 221 2523  2302 0.63     0.08
##     se
## X1 4.2

5.2 Calculando os dados estatisticos da Concentração de monóxido de carbono

Concentração de monóxido de carbono em \(mg/m^3\) (medida pela estação de monitoramento)

describe(dados$co_s)
##    vars    n mean   sd median trimmed  mad min  max range skew kurtosis   se
## X1    1 7674 2.15 1.45    1.8    1.97 1.19 0.1 11.9  11.8 1.37     2.66 0.02

6 Visualização dos dados

Análise dos níveis de poluição da cidade com características reais do terreno. Os dados coletados pelo sensor são indicados por ’_s’ após o poluente alvo no conjunto de dados para o gráfico de resumo acima. Ao considerar apenas os dados do sensor, pode haver uma anomalia no sensor, pois há valores faltantes em todos os dados coletados pelo sensor exatamente nos mesmos intervalos. Além disso, podemos observar no gráfico acima que faltam mais de 90% dos verdadeiros dados terrestres de poluentes NMHC. Também podemos observar a distribuição de cada poluente no lado direito do gráfico resumido com notação de histograma.

6.1 Gráfico 1:comparação entre a temperatura e a umidade do ar

A partir do gráfico abaixo, podemos comparar a relação entre a temperatura e a umidade relativa do ar.

library(ggplot2)

ggplot(dados) + 
  geom_point(mapping =  aes(x = temp, y = RH), color = "blue") 
## Warning: Removed 366 rows containing missing values or values outside the scale range
## (`geom_point()`).

  labs(title = "Relação entre Temperatura e Umidade Relativa", x = "Temperatura (°C)", y = "Umidade Relativa (%)")
## $x
## [1] "Temperatura (°C)"
## 
## $y
## [1] "Umidade Relativa (%)"
## 
## $title
## [1] "Relação entre Temperatura e Umidade Relativa"
## 
## attr(,"class")
## [1] "labels"

6.2 Gráfico 2: comparação entre monóxido de Carbono e a umidade absoluta

ggplot(dados) + 
  geom_point(mapping =  aes(x = co, y = AH), color = "green") 
## Warning: Removed 366 rows containing missing values or values outside the scale range
## (`geom_point()`).

  labs(title = "Relação entre Monóxido de Carbono e Umidade Absoluta", x = "monóxido de carbono em ($mg/m^3$)", y = "Umidade Absoluta($mg/m^3$)")
## $x
## [1] "monóxido de carbono em ($mg/m^3$)"
## 
## $y
## [1] "Umidade Absoluta($mg/m^3$)"
## 
## $title
## [1] "Relação entre Monóxido de Carbono e Umidade Absoluta"
## 
## attr(,"class")
## [1] "labels"

6.3 Gráfico 3: Histograma da temperatura

ggplot(dados, aes(x = temp)) +
  geom_histogram(binwidth = 10, fill = "skyblue", color = "blue", alpha = 0.7) +
  labs(title = "Distribuição de Temperatura", x = "Temperatura (°C)", y = "Frequência")
## Warning: Removed 366 rows containing non-finite outside the scale range
## (`stat_bin()`).

7 Conclusão

A realização de uma análise de dados é um processo multifacetado que começa com a definição clara dos objetivos, determinando o que se espera alcançar, como resolver um problema específico ou descobrir padrões e tendências. Desta forma é crucial identificar os dados relevantes, garantindo a qualidade dos dados coletados, que devem ser precisos, completos e livres de erros. O processamento que envolve a limpeza, remoção de duplicatas, correção de erros e padronização de formatos, bem como a transformação dos dados para um formato adequado para análise é a parte mais complexa e trabalhosa do processo de análise de dados.

A análise exploratória de dados (EDA) é fundamental para visualizar e entender os dados, utilizando para isso o uso de gráficos e tabelas que facilitam a identificação de padrões e anomalias, além de calcular estatísticas descritivas como médias e distribuições. Por fim, apresentar esses resultados de forma eficaz é essencial, pois irá facilitar a compreensão.

Cada uma dessas etapas desempenha um papel crucial na obtenção de uma análise de dados eficaz, adaptando-se em complexidade e profundidade conforme o contexto e os objetivos específicos da análise a qual queremos executar.

Referências

Vito, Saverio. 2016. Air Quality.” UCI Machine Learning Repository.
wolviearun. n.d. UCI-Air-Quality-Data.”