Nesta etapa, vamos realizar um pré-processamento mais refinado dos dados, que inclui: visualização espacial dos pontos para identificar padrões geográficos e possíveis inconsistências de localização; Filtragem de Linhas e Variáveis e Seleção de observações e atributos relevantes para as próximas etapas da análise; Detecção de Inconsistências: Identificação de valores extremos ou incoerentes que podem comprometer a qualidade das análises futuras.
emissions_sources <- readr::read_rds("../data/emissions_sources.rds")
Após o tratamento, os dados foram analisados e comparados com as informações originais do site Climate TRACE, com o objetivo de verificar a consistência e a qualidade do processamento.
Ao buscar o município de “Jaboticabal” na plataforma, são apresentadas várias categorias de dados, referentes às emissões de gases de efeito estufa em diferentes níveis geográficos e fontes.
As principais categorias encontradas são:
Urban Area
, BR: Refere-se à
área urbana da cidade em questão, no caso, Jaboticabal e apresenta dados
de emissões provenientes das atividades dentro dessa zona, como
transporte, indústria e outros fatores urbanos.emissions_sources |>
dplyr::filter(
stringr::str_detect(source_name, "Jaboticabal") | muni == "Jaboticabal",
year == 2021,
source_type == "Urban Area",
# !subsector %in% c("forest-land-clearing",
# "forest-land-degradation",
# "forest-land-fires",
# "removals",
# "shrubgrass-fires",
# "wetland-fires"),
# sector != "forestry-and-land-use"
) |>
dplyr::summarise(
emissions_quantity_sum = sum(emissions_quantity, na.rm = TRUE)
) |>
dplyr::ungroup() |>
dplyr::mutate(
emissions_quantity_cumsum = cumsum(emissions_quantity_sum)
)
## # A tibble: 1 × 2
## emissions_quantity_sum emissions_quantity_cumsum
## <dbl> <dbl>
## 1 106788. 106788.
emissions_sources |>
dplyr::filter(
stringr::str_detect(source_name, "Jaboticabal") | muni == "Jaboticabal",
year == 2021,
source_type == "Municipality",
# !subsector %in% c("forest-land-clearing",
# "forest-land-degradation",
# "forest-land-fires",
# "removals",
# "shrubgrass-fires",
# "wetland-fires"),
# sector != "forestry-and-land-use"
) |>
dplyr::summarise(
emissions_quantity_sum = sum(emissions_quantity, na.rm = TRUE)
) |>
dplyr::ungroup() |>
dplyr::mutate(
emissions_quantity_cumsum = cumsum(emissions_quantity_sum)
)
## # A tibble: 1 × 2
## emissions_quantity_sum emissions_quantity_cumsum
## <dbl> <dbl>
## 1 1107669. 1107669.
emissions_sources |>
dplyr::filter(
stringr::str_detect(source_name, "Jaboticabal") | muni == "Jaboticabal",
year == 2021,
source_type != "Municipality",
source_type != "Urban Area",
# !subsector %in% c("forest-land-clearing",
# "forest-land-degradation",
# "forest-land-fires",
# "removals",
# "shrubgrass-fires",
# "wetland-fires"),
# sector != "forestry-and-land-use"
) |>
dplyr::group_by(source_name) |>
dplyr::summarise(
emissions_quantity_sum = sum(emissions_quantity, na.rm = TRUE)
) |>
dplyr::ungroup() |>
dplyr::mutate(
emissions_quantity_cumsum = cumsum(emissions_quantity_sum)
)
## # A tibble: 2 × 3
## source_name emissions_quantity_sum emissions_quantity_cumsum
## <chr> <dbl> <dbl>
## 1 ETE JABOTICABAL SP 6193. 6193.
## 2 Santa Adélia power station 0 6193.
emissions_sources |>
dplyr::filter(stringr::str_detect(source_name, "Urban Area")) |> View()
forestry-and-land-use
e
selecionando variáveis para a análise.emissions_sources_forestry <- emissions_sources |>
dplyr::filter(
gas == "co2e_100yr",
sector == "forestry-and-land-use"
) |>
dplyr::mutate(
source_name = stringr::str_to_title(source_name)
) |>
dplyr::select(
-c(source_id,iso3_country,created_date,modified_date,lat_lon,directory,native_source_id,
start_time,end_time,source_type,reporting_entity,sector_id,reporting_entity,geometry_ref)) |>
dplyr::relocate(year,month,lon,lat,source_name,muni,state,region)
Usa a função vis_miss()
do pacote {visdat}
para visualizar graficamente os dados faltantes (NAs).
Ele gera um gráfico de calor onde:
As células preenchidas mostram dados presentes.
As células em branco ou coloridas indicam dados ausentes.
emissions_sources_forestry[1:20] |>
dplyr::sample_n(3e4) |>
visdat::vis_miss()
Nesta etapa, vamos representar os dados no espaço geográfico, gerando mapas que permitem visualizar a distribuição dos pontos de interesse. A plotagem espacial é fundamental para identificar padrões, áreas de maior concentração e possíveis anomalias nos dados.
Vamos carregar os polígonos de interesse
country_br <- geobr::read_country(showProgress = FALSE)
conservation <- geobr::read_conservation_units(showProgress = FALSE)
indigenous <- geobr::read_indigenous_land(showProgress = FALSE)
Criando o mapa com sobreposição
Terras Indígenas reconhecidas
indigenous |>
ggplot2::ggplot() +
ggplot2::geom_sf(fill="white", color="black",
size=.15, show.legend = FALSE) +
ggplot2::geom_point(
data = emissions_sources_forestry |>
dplyr::filter(
year == 2021,
indigenous != "Other"),
ggplot2::aes(lon,lat)) +
ggplot2::theme_bw()
Áreas de conservação
conservation |>
ggplot2::ggplot() +
ggplot2::geom_sf(fill="white", color="black",
size=.15, show.legend = FALSE) +
ggplot2::geom_point(
data = emissions_sources_forestry |>
dplyr::filter(
year == 2021,
conservation != "Other"),
ggplot2::aes(lon,lat)) +
ggplot2::theme_bw()
Nesta seção, serão construídos histogramas e boxplots para avaliar a distribuição das variáveis numéricas disponíveis no conjunto de dados.
Histogramas ajudam a identificar o comportamento geral dos dados, como simetria, caudas longas ou concentrações anormais de valores.
Boxplots facilitam a visualização de outliers, assimetria e amplitude interquartil (IQR), sendo ferramentas rápidas para checagem da qualidade e integridade dos dados.
A combinação dos dois gráficos para cada variável permite uma análise exploratória robusta e auxilia na identificação de possíveis inconsistências ou necessidades de transformação dos dados para as etapas seguintes.
skim
do
pacote {skimr}
emissions_sources_forestry |>
skimr::skim()
Name | emissions_sources_forestr… |
Number of rows | 2608580 |
Number of columns | 45 |
_______________________ | |
Column type frequency: | |
character | 36 |
numeric | 9 |
________________________ | |
Group variables | None |
Variable type: character
skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
---|---|---|---|---|---|---|---|
source_name | 0 | 1.00 | 3 | 45 | 0 | 5789 | 0 |
muni | 0 | 1.00 | 3 | 32 | 0 | 5083 | 0 |
state | 0 | 1.00 | 2 | 5 | 0 | 28 | 0 |
region | 85574 | 0.97 | 3 | 12 | 0 | 5 | 0 |
source_name_trat | 0 | 1.00 | 3 | 32 | 0 | 5443 | 0 |
sector | 0 | 1.00 | 21 | 21 | 0 | 1 | 0 |
subsector | 0 | 1.00 | 8 | 23 | 0 | 10 | 0 |
gas | 0 | 1.00 | 10 | 10 | 0 | 1 | 0 |
temporal_granularity | 0 | 1.00 | 5 | 5 | 0 | 1 | 0 |
activity_units | 0 | 1.00 | 2 | 26 | 0 | 2 | 0 |
emissions_factor_units | 0 | 1.00 | 22 | 46 | 0 | 2 | 0 |
capacity_units | 0 | 1.00 | 2 | 33 | 0 | 2 | 0 |
other1 | 0 | 1.00 | 0 | 8 | 90086 | 33 | 0 |
other1_def | 0 | 1.00 | 16 | 49 | 0 | 2 | 0 |
other2 | 0 | 1.00 | 0 | 20 | 90086 | 5580 | 0 |
other2_def | 0 | 1.00 | 12 | 16 | 0 | 2 | 0 |
other3 | 10050 | 1.00 | 1 | 7 | 0 | 2 | 0 |
other3_def | 10050 | 1.00 | 16 | 16 | 0 | 1 | 0 |
other4 | 2608580 | 0.00 | NA | NA | 0 | 0 | 0 |
other4_def | 2608580 | 0.00 | NA | NA | 0 | 0 | 0 |
other5 | 2608580 | 0.00 | NA | NA | 0 | 0 | 0 |
other5_def | 2608580 | 0.00 | NA | NA | 0 | 0 | 0 |
other6 | 2608580 | 0.00 | NA | NA | 0 | 0 | 0 |
other6_def | 2608580 | 0.00 | NA | NA | 0 | 0 | 0 |
other7 | 2608580 | 0.00 | NA | NA | 0 | 0 | 0 |
other7_def | 2608580 | 0.00 | NA | NA | 0 | 0 | 0 |
other8 | 2517450 | 0.03 | 2 | 4 | 0 | 190 | 0 |
other8_def | 10050 | 1.00 | 8 | 8 | 0 | 1 | 0 |
other9 | 2517450 | 0.03 | 13 | 16 | 0 | 298 | 0 |
other9_def | 10050 | 1.00 | 19 | 19 | 0 | 1 | 0 |
other10 | 2608580 | 0.00 | NA | NA | 0 | 0 | 0 |
other10_def | 2608580 | 0.00 | NA | NA | 0 | 0 | 0 |
biome | 0 | 1.00 | 5 | 16 | 0 | 8 | 0 |
conservation | 0 | 1.00 | 5 | 100 | 0 | 194 | 0 |
indigenous | 0 | 1.00 | 3 | 26 | 0 | 61 | 0 |
biomes_sig | 0 | 1.00 | 2 | 5 | 0 | 7 | 0 |
Variable type: numeric
skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
---|---|---|---|---|---|---|---|---|---|---|
year | 0 | 1 | 2022.59 | 1.20 | 2021.00 | 2022.00 | 2023.00 | 2024.00 | 2025.00 | ▇▇▇▇▁ |
month | 0 | 1 | 6.30 | 3.52 | 1.00 | 3.00 | 6.00 | 9.00 | 12.00 | ▇▅▅▅▇ |
lon | 0 | 1 | -46.27 | 6.41 | -73.44 | -50.90 | -46.59 | -41.48 | -30.04 | ▁▁▇▇▃ |
lat | 0 | 1 | -16.52 | 8.26 | -33.65 | -22.84 | -18.25 | -8.61 | 4.68 | ▃▇▅▆▁ |
emissions_quantity | 0 | 1 | 318.12 | 93716.54 | -8079988.60 | 0.00 | 0.00 | 275.32 | 42903557.89 | ▇▁▁▁▁ |
activity | 0 | 1 | 1175989.39 | 22261880.44 | 0.00 | 74.56 | 5572.15 | 99351.01 | 2614960000.00 | ▇▁▁▁▁ |
emissions_factor | 0 | 1 | 0.15 | 1.58 | -0.73 | 0.00 | 0.00 | 0.15 | 1088.04 | ▇▁▁▁▁ |
capacity | 0 | 1 | 473529.22 | 21670241.90 | 0.00 | 86.46 | 130.73 | 176.58 | 2614960000.00 | ▇▁▁▁▁ |
capacity_factor | 0 | 1 | 2512.58 | 20609.01 | 0.00 | 0.57 | 50.57 | 878.12 | 1320784.13 | ▇▁▁▁▁ |
x <- emissions_sources_forestry |> dplyr::pull(emissions_quantity)
x <- na.omit(x)
q1 <- quantile(x,.25)
q3 <- quantile(x,.75)
iiq <- q3-q1
emissions_sources_forestry |>
dplyr::filter(emissions_quantity > q1-1.5*iiq, emissions_quantity<q3+1.5*iiq) |>
ggplot2::ggplot(ggplot2::aes(x =emissions_quantity, y=..density.., fill=biomes_sig)) +
ggplot2::geom_histogram(boundary=0, color="black",
bins = 100) +
ggplot2::facet_wrap(~biomes_sig)+
ggplot2::theme_bw()
x <- emissions_sources_forestry |> dplyr::pull(activity)
x <- na.omit(x)
q1 <- quantile(x,.25)
q3 <- quantile(x,.75)
iiq <- q3-q1
emissions_sources_forestry |>
dplyr::filter(activity > q1-0.5*iiq, activity<q3*.01) |>
ggplot2::ggplot(ggplot2::aes(x =activity, y=..density.., fill=biomes_sig)) +
ggplot2::geom_histogram(boundary=0, color="black",
bins = 50) +
ggplot2::facet_wrap(~biomes_sig)+
ggplot2::theme_bw()
x <- emissions_sources_forestry |> dplyr::pull(emissions_factor)
x <- na.omit(x)
q1 <- quantile(x,.25)
q3 <- quantile(x,.75)
iiq <- q3-q1
emissions_sources_forestry |>
dplyr::filter(emissions_factor > q1-0.5*iiq, emissions_factor<q3+0.5*iiq) |>
ggplot2::ggplot(ggplot2::aes(x =emissions_factor, y = ..density.. ,fill=biomes_sig)) +
ggplot2::geom_histogram(boundary=0, color="black",
bins = 50) +
ggplot2::facet_wrap(~biomes_sig)+
ggplot2::theme_bw()
x <- emissions_sources_forestry |> dplyr::pull(capacity)
x <- na.omit(x)
q1 <- quantile(x,.25)
q3 <- quantile(x,.75)
iiq <- q3-q1
emissions_sources_forestry |>
dplyr::filter(capacity > q1-3.5*iiq, capacity<q3+3.5*iiq) |>
ggplot2::ggplot(ggplot2::aes(x =capacity, y=..density.., fill=biomes_sig)) +
ggplot2::geom_histogram(boundary=0, color="black",
bins = 100) +
ggplot2::facet_wrap(~biomes_sig)+
ggplot2::theme_bw()
x <- emissions_sources_forestry |> dplyr::pull(capacity_factor)
x <- na.omit(x)
q1 <- quantile(x,.25)
q3 <- quantile(x,.75)
iiq <- q3-q1
emissions_sources_forestry |>
dplyr::filter(capacity_factor > q1-0.5*iiq, capacity_factor<q3*.001) |>
ggplot2::ggplot(ggplot2::aes(x =capacity_factor, y=..density..,fill=biomes_sig)) +
ggplot2::geom_histogram(boundary=0, color="black",
bins = 50) +
ggplot2::facet_wrap(~biomes_sig)+
ggplot2::theme_bw()