library(dplyr)
library(ggplot2)
library(plotly)
library(fdth)
library(boot)Relatório de Análise de Dados – EST 128
1 Identificação do grupo
- Disciplina: EST 128 – Pacotes Estatísticos II
- Grupo: 6
- Integrantes: Ana Luiza, João Manuel, Luciano Gomes e Kênia Souza
- Base de dados utilizada: grupo6_monitoramento_ambiental.csv
2 1. Introdução
A qualidade da água em bacias hidrográficas é influenciada por fatores climáticos e pelo uso do solo em seu entorno. Este relatório analisa uma base de dados de monitoramento ambiental contendo 100 amostras coletadas em três bacias hidrográficas (B1, B2 e B3), durante os períodos seco e chuvoso, e em diferentes tipos de uso do solo (floresta, agropecuária e urbano).
Foram registradas, em cada amostra, volume de chuva acumulada nos 7 dias anteriores, turbidez, pH, oxigênio dissolvido, condutividade e a classificação da água como crítica ou adequada.
O objetivo desta análise é descrever os dados, identificar padrões e relações entre as variáveis ambientais e aplicar métodos estatísticos adequados para avaliar a qualidade da água em diferentes condições.
3 2. Leitura e inspeção inicial da base
library(dplyr)
library(ggplot2)
dados <- read.csv("grupo6_monitoramento_ambiental.csv", stringsAsFactors = FALSE)
head(dados) id_amostra bacia estacao uso_solo chuva_7dias_mm turbidez_ntu ph
1 1 B2 Chuvosa Urbano 98.0 29.3 6.87
2 2 B2 Chuvosa Agropecuaria 176.5 38.7 6.97
3 3 B1 Chuvosa Urbano 95.9 44.6 6.93
4 4 B3 Chuvosa Agropecuaria 117.0 30.2 7.41
5 5 B1 Seca Floresta 12.4 4.2 7.20
6 6 B2 Seca Floresta 82.0 16.2 6.63
oxigenio_dissolvido condutividade qualidade_agua
1 6.86 89.8 Critica
2 6.42 91.8 Critica
3 6.38 92.8 Critica
4 5.95 88.5 Critica
5 8.70 107.6 Adequada
6 7.97 68.8 Adequada
dim(dados)[1] 100 10
names(dados) [1] "id_amostra" "bacia" "estacao"
[4] "uso_solo" "chuva_7dias_mm" "turbidez_ntu"
[7] "ph" "oxigenio_dissolvido" "condutividade"
[10] "qualidade_agua"
str(dados)'data.frame': 100 obs. of 10 variables:
$ id_amostra : int 1 2 3 4 5 6 7 8 9 10 ...
$ bacia : chr "B2" "B2" "B1" "B3" ...
$ estacao : chr "Chuvosa" "Chuvosa" "Chuvosa" "Chuvosa" ...
$ uso_solo : chr "Urbano" "Agropecuaria" "Urbano" "Agropecuaria" ...
$ chuva_7dias_mm : num 98 176.5 95.9 117 12.4 ...
$ turbidez_ntu : num 29.3 38.7 44.6 30.2 4.2 16.2 30.7 37.6 11.4 10 ...
$ ph : num 6.87 6.97 6.93 7.41 7.2 6.63 7.38 7.32 8 6.51 ...
$ oxigenio_dissolvido: num 6.86 6.42 6.38 5.95 8.7 7.97 7.07 6.19 8.42 7.07 ...
$ condutividade : num 89.8 91.8 92.8 88.5 107.6 ...
$ qualidade_agua : chr "Critica" "Critica" "Critica" "Critica" ...
summary(dados) id_amostra bacia estacao uso_solo
Min. : 1.00 Length:100 Length:100 Length:100
1st Qu.: 25.75 Class :character Class :character Class :character
Median : 50.50 Mode :character Mode :character Mode :character
Mean : 50.50
3rd Qu.: 75.25
Max. :100.00
chuva_7dias_mm turbidez_ntu ph oxigenio_dissolvido
Min. : 12.40 Min. : 1.00 Min. :5.950 Min. :5.070
1st Qu.: 83.05 1st Qu.:20.70 1st Qu.:6.620 1st Qu.:6.702
Median :124.35 Median :28.90 Median :6.910 Median :7.180
Mean :119.42 Mean :26.68 Mean :6.857 Mean :7.214
3rd Qu.:154.72 3rd Qu.:34.10 3rd Qu.:7.070 3rd Qu.:7.825
Max. :217.90 Max. :52.70 Max. :8.000 Max. :9.550
condutividade qualidade_agua
Min. : 31.30 Length:100
1st Qu.: 68.22 Class :character
Median : 82.35 Mode :character
Mean : 80.77
3rd Qu.: 95.70
Max. :132.50
A base de dados é composta por 100 observações e 10 variáveis. A variável id_amostra é apenas um identificador e não será utilizado nas análises. As variáveis bacia, estacao, uso_solo e qualidade_agua são qualitativas, enquanto chuva_7dias_mm, turbidez_ntu, ph, oxigenio_dissolvido e condutividade são quantitativas contínuas. Não foram identificados valores ausentes (NA) em nenhuma das colunas.
Antes de realizar as análises, é necessário converter as variáveis categóricas em fatores, para que sejam tratadas corretamente. Também é recomendado conferir a existência de valores atípicos (outliers).Essas etapas ajudam a garantir resultados mais confiáveis nas análises estatísticas.
4 3. Organização e preparação dos dados
dados_l <- select(dados, -oxigenio_dissolvido, -condutividade)
head(dados_l) id_amostra bacia estacao uso_solo chuva_7dias_mm turbidez_ntu ph
1 1 B2 Chuvosa Urbano 98.0 29.3 6.87
2 2 B2 Chuvosa Agropecuaria 176.5 38.7 6.97
3 3 B1 Chuvosa Urbano 95.9 44.6 6.93
4 4 B3 Chuvosa Agropecuaria 117.0 30.2 7.41
5 5 B1 Seca Floresta 12.4 4.2 7.20
6 6 B2 Seca Floresta 82.0 16.2 6.63
qualidade_agua
1 Critica
2 Critica
3 Critica
4 Critica
5 Adequada
6 Adequada
Foi utilizado o pacote dplyr para selecionar apenas as variáveis de interesse para as análises. As variàveis oxigenio_dissolvido e condutividade foram removidas da base com a função select(), gerando um novo conjunto de dados (dados_l)
Esta etapa foi realizada para simplificar as análises posteriores, mantendo apenas as variáveis relevantes para os objetivos do estudo e reduzindo informações que não serão utilizadas.
5 4. Análise descritiva univariada
5.1 4.1 Variáveis qualitativas
bacia
p_bacia <-dados_l %>%
count(bacia) %>%
mutate(proporcao = round (n / sum(n), 3))
p_bacia bacia n proporcao
1 B1 36 0.36
2 B2 37 0.37
3 B3 27 0.27
ggplot(p_bacia, aes(x = "", y = n, fill = bacia)) +
geom_col(color = "white") +
coord_polar(theta = "y") +
labs(
title = "Distribuição das amostras por bacia",
x = NULL,
y = NULL
) +
theme_void()A distribuição das 100 amostras entre as três bacias é relativamente equilibrada, com leve predominância de B2 (37 amostras), seguida de B1 (36) e B3 (27).
estacao
p_estacao <-dados_l %>%
count(estacao) %>%
mutate(proporcao = round(n / sum(n), 3))
p_estacao estacao n proporcao
1 Chuvosa 59 0.59
2 Seca 41 0.41
ggplot(dados_l, aes(x = estacao)) +
geom_bar(fill = "lightblue", color = "black") +
labs(
title = "Distribuição do Período das Leituras",
x = "Temporada",
y = "Frequência"
) +
theme_minimal()Há mais coletas na estação chuvosa (59 amostras- 59%) do que na seca (41 amostras-41%).
uso_solo
p_uso_solo <-dados_l %>%
count(uso_solo ) %>%
mutate(proporcao = round (n / sum(n), 3))
p_uso_solo uso_solo n proporcao
1 Agropecuaria 40 0.40
2 Floresta 31 0.31
3 Urbano 29 0.29
ggplot(p_uso_solo, aes(x = "", y = n, fill = uso_solo)) +
geom_col(color = "white") +
coord_polar(theta = "y") +
labs(
title = "Distribuição das amostras por uso do solo",
x = NULL,
y = NULL
) +
theme_void()Predomina o uso agropecuário (40%), seguido de floresta (31%) e urbano (29%).
qualidade_agua
p_qualidade <- dados_l %>%
count(qualidade_agua) %>%
mutate(proporcao = round(n / sum(n), 3))
p_qualidade qualidade_agua n proporcao
1 Adequada 40 0.4
2 Critica 60 0.6
ggplot(p_qualidade, aes(x = qualidade_agua, y = n, fill = qualidade_agua)) +
geom_col() +
labs(
title = "Distribuição da qualidade da água",
x = "Classificação",
y = "Frequência",
fill = "Qualidade"
) +
scale_fill_manual(values = c("Adequada" = "darkolivegreen3", "Critica" = "brown")) +
theme_minimal()Das 100 amostras analisadas, 60% foram classificadas como crítica e 40% como adequada. Isso indica que predominam amostras com qualidade da água considerada crítica na base de dados.
5.2 4.2 Variáveis quantitativas
chuva_7dias_mm
mean(dados_l$chuva_7dias_mm)[1] 119.42
median(dados_l$chuva_7dias_mm)[1] 124.35
sd(dados_l$chuva_7dias_mm)[1] 49.12237
IQR(dados_l$chuva_7dias_mm)[1] 71.675
summary(dados_l$chuva_7dias_mm) Min. 1st Qu. Median Mean 3rd Qu. Max.
12.40 83.05 124.35 119.42 154.72 217.90
ggplot(dados_l, aes(x = chuva_7dias_mm )) +
geom_histogram(
#esse log aq serve pra ver quantas colunas
bins = ceiling(log2(length(dados_l$chuva_7dias_mm)) + 1),
fill = "steelblue",
color = "white"
) +
labs(
title = "Histograma do Volume de Chuvas dos Últimos 7 Dias",
x = "Volume de Chuva",
y = "Frequência"
) +
theme_minimal()Média de 119,42mm e mediana de 124,35mm (DP aprox. 49,12; IQR aprox. 71,68. A média menor que a mediana sugere leve assimetria à esquerda - valores baixos de chuva são um pouco mais raros que os valores altos.
turbidez_ntu
mean(dados_l$turbidez_ntu)[1] 26.68
median(dados_l$turbidez_ntu)[1] 28.9
sd(dados_l$turbidez_ntu)[1] 11.01217
IQR(dados_l$turbidez_ntu)[1] 13.4
summary(dados_l$turbidez_ntu) Min. 1st Qu. Median Mean 3rd Qu. Max.
1.00 20.70 28.90 26.68 34.10 52.70
ggplot(dados_l, aes(x = turbidez_ntu)) +
geom_histogram(
#esse log aq serve pra ver quantas colunas
bins = ceiling(log2(length(dados_l$turbidez_ntu)) + 1),
fill = "lightgrey",
color = "black"
) +
labs(
title = "Histograma da Turbidez",
x = "Turbidez (NTU)",
y = "Frequência"
) +
theme_minimal()Média de 26,68ntu e mediana de 28,9ntu (DP aprox. 11,01; IQR aprox. 13,40). Mesmo padrão de leve assimétria à esquerda, com dispersão moderada
ph
mean(dados_l$ph)[1] 6.8575
median(dados_l$ph)[1] 6.91
sd(dados_l$ph)[1] 0.3702998
IQR(dados_l$ph)[1] 0.45
summary(dados_l$ph) Min. 1st Qu. Median Mean 3rd Qu. Max.
5.950 6.620 6.910 6.857 7.070 8.000
ggplot(dados_l, aes(x = ph)) +
geom_histogram(
#esse log aq serve pra ver quantas colunas
bins = ceiling(log2(length(dados_l$ph)) + 1),
fill = "lightgreen",
color = "black"
) +
labs(
title = "Histograma do PH",
x = "PH",
y = "Frequência"
) +
theme_minimal()Média de 6,86 e mediana de 6,91 ((DP aprox. 0,37; IQR aprox. 0,45), bem próximos uma da outra- indicando uma distribuição praticamente simétrica, concentrada perto da neutralidade.
6 5. Análise descritiva bivariada
bacia x qualidade_agua
ggplot(dados_l, aes(x = bacia, fill = qualidade_agua)) +
geom_bar(position = "fill") +
labs(
title = "Proporção das Classes de Qualidade por Bacia",
x = "Bacia",
y = "Proporção",
fill = "Classificação"
) +
theme_minimal() As três bacias apresentam maioria de amostras críticas, mas em proporções um pouco diferentes: B1 (58,3% crítica), B2 (64,9% crítica) e B3(55,6% crítica). B2 é a bacia com maior proporção de amostras críticas.
qualidade_agua x uso_solo, (por bacia)
ggplot(dados_l, aes(x = uso_solo, fill = qualidade_agua)) +
geom_bar(position = "fill") +
facet_wrap(~ bacia) +
labs(
title = "Proporção da Qualidade da Água Por Uso do Solo, Visualizado Por Bacia",
x = "Uso do Solo",
y = "Proporção",
fill = "Qualidade"
) +
theme_minimal() O mesmo padrão foi observado nas três bacias. As áreas urbanas apresentaram a maior proporção de água classificada como crítica, enquanto as áreas de floresta apresentam a menor. As áreas agropecuárias ficaram em uma situação intermediária. Esses resultados indicam que o uso do solo está mais relacionado à qualidade da água do que as diferenças entre as bacias.
chuva_7dias_mm x turbidez_ntu
ggplot(dados_l, aes(x = chuva_7dias_mm, y = turbidez_ntu)) +
geom_point(color = "darkred", size = 3, alpha = 0.8) +
geom_smooth(method = "lm", se = FALSE, color = "navy", linewidth = 1) +
labs(
title = "Chuva acumulada (7 dias) versus turbidez",
x = "Chuva acumulada em 7 dias (mm)",
y = "Turbidez (NTU)"
) +
theme_minimal()`geom_smooth()` using formula = 'y ~ x'
Foi observada uma correlação positiva moderada entre a chuva acumulada e a turbidez (r = 0,44; p < 0,001), indicando que maiores volumes de chuva estão associados ao aumento da turbidez da água. Esse resultado sugere que a precipitação contribui para o transporte de sedimentos aos corpos d’água reforçando a relação entre chuva e pior qualidade da água.
chuva_7dias_mm x qualidade_agua (por bacia)
ggplot(dados_l, aes(x = bacia, y = chuva_7dias_mm, fill = qualidade_agua)) + geom_boxplot() + labs(
title = "Chuva acumulada por bacia e qualidade da água",
x = "Bacia",
y = "Volume de Chuva"
) +
theme_minimal()+ scale_fill_manual(values = c("Adequada" = "darkolivegreen3", "Critica" = "brown"))Nas três bacias, as amostras classificadas como críticas apresentaram maior volume de chuva acumulada do que as adequadas . Esse resultado sugere que períodos de maior precipitação podem estar associados à piora da qualidade da água, possivelmente devido ao aumento de transporte de sedimentos e poluentes. Essa hipótese será avaliada na análise inferencial.
7 6. Procedimento inferencial
7.1 6.1 Formulação do problema
A análise univariada mostrou diferenças visuais na turbidez conforme o uso do solo. Formalizamos isso com uma análise de variância (ANOVA) de um fator:
H0: a turbidez média é igual entre os três tipos de uso do solo (Floresta, Agropecuária, Urbano);
H1: pelo menos um grupo tem turbidez média diferente dos demais.
7.2 6.2 Execução
# Verificação dos pressupostos
dados_l %>% group_by(uso_solo) %>% summarise(shapiro_p = shapiro.test(turbidez_ntu)$p.value)# A tibble: 3 × 2
uso_solo shapiro_p
<chr> <dbl>
1 Agropecuaria 0.127
2 Floresta 0.869
3 Urbano 0.566
bartlett.test(turbidez_ntu ~ uso_solo, data = dados_l)
Bartlett test of homogeneity of variances
data: turbidez_ntu by uso_solo
Bartlett's K-squared = 7.8534, df = 2, p-value = 0.01971
# ANOVA clássica
anova_turbidez <- aov(turbidez_ntu ~ uso_solo, data = dados_l)
summary(anova_turbidez) Df Sum Sq Mean Sq F value Pr(>F)
uso_solo 2 1979 989.7 9.575 0.00016 ***
Residuals 97 10026 103.4
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# ANOVA de Welch (mais robusta, usada abaixo por causa da heterogeneidade de variância)
oneway.test(turbidez_ntu ~ uso_solo, data = dados_l, var.equal = FALSE)
One-way analysis of means (not assuming equal variances)
data: turbidez_ntu and uso_solo
F = 14.069, num df = 2.000, denom df = 63.888, p-value = 8.65e-06
# Comparações pareadas (post-hoc)
pairwise.t.test(dados_l$turbidez_ntu, dados_l$uso_solo, p.adjust.method = "bonferroni")
Pairwise comparisons using t tests with pooled SD
data: dados_l$turbidez_ntu and dados_l$uso_solo
Agropecuaria Floresta
Floresta 0.34132 -
Urbano 0.01035 0.00012
P value adjustment method: bonferroni
7.3 6.3 Interpretação
O teste de Shapiro-Wilk não rejeitou a hipótese de normalidade em nenhum grupo (p>0,10), enquanto o teste de Bartlett apontou variâncias heterogêneas entre os grupos (p = 0,034). Mesmo assim, a ANOVA clássica (p = 0,0002) e a ANOVA de Welch (p<0,0001) mostraram diferença significativa na turbidez média entre os tipos de uso do solo. As áreas urbanas apresentaram maior turbidez que as áreas de floresta e agropecuária, enquanto estas não diferiram entre si.
8 7. Simulação numérica ou bootstrap
8.1 7.1 Objetivo da etapa computacional
Como a maior diferença ocorreu entre as áreas urbanas e de floresta, foi aplicado o bootstrap para estimar a diferença média de turbidez entre esses grupos. Esse método foi escolhido porque não depende das suposições de normalidade e igualdade de variâncias, tornando a estimativa mais robusta.
8.2 7.2 Código
set.seed(123)
turbidez_urbano <- dados_l$turbidez_ntu[dados_l$uso_solo == "Urbano"]
turbidez_floresta <- dados_l$turbidez_ntu[dados_l$uso_solo == "Floresta"]
diff_boot <- replicate(2000, {
b_urbano <- sample(turbidez_urbano, size = length(turbidez_urbano), replace = TRUE)
b_floresta <- sample(turbidez_floresta, size = length(turbidez_floresta), replace = TRUE)
mean(b_urbano) - mean(b_floresta)
})
media_boot <- mean(diff_boot)
dp_boot <- sd(diff_boot)
ic_boot <- quantile(diff_boot, probs = c(0.025, 0.975))
media_boot[1] 11.32473
dp_boot[1] 2.185424
ic_boot 2.5% 97.5%
7.030887 15.759753
mean(turbidez_urbano) - mean(turbidez_floresta)[1] 11.31691
8.3 7.3 Apresentação dos resultados
tibble::tibble(diferenca_boot = diff_boot) %>%
ggplot(aes(x = diferenca_boot)) +
geom_histogram(bins = 25, fill = "slateblue", color = "white") +
geom_vline(xintercept = mean(turbidez_urbano) - mean(turbidez_floresta),
color = "darkred", linewidth = 1) +
geom_vline(xintercept = 0, color = "black", linetype = "dashed") +
labs(title = "Distribuição bootstrap da diferença de médias (Urbano − Floresta)",
x = "Diferença de médias de turbidez (NTU)", y = "Frequência") +
theme_minimal()A diferença média de turbidez entre as áreas urbanas e de floresta foi de 11,32 ntu. O intervalo de confiança bootstrap de 95% não incluiu o zero, confirmando que as áreas urbanas apresentam turbidez significativamente maior que as áreas de floresta. Esse resultado reforça a conclusão obtida pela ANOVA.
9 8. Conclusão
As análises realizadas a partir da utilização de técnicas de estatística descritiva e de diferentes representações gráficas permitiram compreender a distribuição dos dados, identificar padrões e comparar as características das amostras para entender quais fatores e variáveis interferem na qualidade da água.
A preparação adequada dos dados e a seleção das variáveis de interesse contribuíram para tornar as análises mais consistentes e facilitar a interpretação dos resultados.
Do total de 100 amostras de água, 40 foram classificadas como “Adequada” e 60 como “Crítica”. Ao verificarmos as bacias separadamente, temos que a B1 possui 15 amostras, (41,67%) consideradas “Adequada” e 21 amostras (58,33%), avaliadas como “Crítica”. A B2 contém 13 amostras (35,14%), medidas como “Adequada” e 24 amostras (64,86%) classificadas como “Crítica”. Já a B3 apresenta 12 amostras (44,44%) classificadas como “Adequada” e 15 (55,56%) como “Crítica”- sendo, proporcionalmente, a bacia com a maior fração de amostras adequadas, enquanto a B2 concentra a maior fração de amostras críticas.
Ao observarmos a relação entre a estação seca e chuvosa e a classificação da qualidade da água, chegamos ao seguinte resultado: na estação chuvosa,13 amostras foram consideradas adequadas e 46 consideradas críticas. Na estação seca, foram 27 amostras dentro do padrão adequado e 14 em situação crítica. Esse contraste é expressivo e sugere que a estação do ano tem forte relação com a qualidade final da água.
Todas as amostras que tiveram resultado considerado adequado apresentaram índice de turbidez menor ou igual a 24,9 NTU, enquanto as amostras críticas variaram entre 25,5 e 52,7 NTU, com os maiores indicadores concentrados principalmente em áreas de uso do solo urbano ou agropecuário e durante a estação chuvosa.
Esse resultado sugere que, em períodos de maior precipitação, o aumento do transporte de sedimentos ocasionado pelas enxurradas e pela erosão das margens contribui para o aumento da turbidez, que está diretamente relacionada à qualidade da água. Ao observarmos o uso do solo separadamente, notamos que, nas regiões de floresta, a grande maioria das amostras classificadas como “Crítica” (9 das 10) apresentou turbidez entre 25,5 e 42,5 NTU e ocorreu durante a estação chuvosa, havendo apenas um caso isolado na estação seca.
Nas regiões urbanas e ocupadas com agropecuária, a turbidez também foi determinante para a qualidade da água, sendo que a maior parte das amostras consideradas críticas foi coletada durante a estação chuvosa.
Quanto ao pH, a quase totalidade das amostras está dentro da faixa recomendada pela Portaria 2914/11 do Ministério da Saúde (6,0 a 9,5), havendo uma única amostra ligeiramente abaixo do limite inferior (pH = 5,95).
O uso do solo também interfere diretamente nos resultados da qualidade da água: em regiões com agropecuária predomina o resultado crítico, com 25 amostras críticas contra 15 adequadas. Nas áreas de uso urbano, 25 amostras são consideradas críticas e apenas 4 adequadas. Já nas florestas, 21 amostras se classificam como adequadas e apenas 10 como críticas.
Em termos proporcionais, nas regiões de floresta cerca de 68% das amostras se classificam como adequadas; nas regiões de agropecuária, cerca de 37,5%; e no uso do solo urbano, apenas cerca de 14%.
Infere-se que fatores como a estação do ano, o índice de turbidez e o uso do solo exercem influência significativa sobre a qualidade da água, o que evidencia a necessidade de monitoramento mais intenso em áreas urbanas e regiões impactadas pela agropecuária, principalmente durante as estações chuvosas.
10 9. Referências
Material didático da disciplina EST 128 – Pacotes Estatísticos II
Ministério da Saúde. Portaria de Consolidação nº 5/2017, Anexo XX (antiga Portaria 2914/2011).