A respostas abaixo detalham as abordagens metodológicas e os resultados obtidos nas atividades da disciplina de Análise Exploratória e Visualização de Dados. O foco central reside na aplicação prática de métodos estatísticos e ferramentas de visualização para informar a tomada de decisão no campo das políticas públicas. Optou-se pela linguagem de programação R, a fim de assegurar a reprodutibilidade das análises e a transparência do processo metodológico, com o auxílio de scripts devidamente comentados. Todo o trabalho, incluindo gráficos, cálculos e interpretações, foi gerado por código, e o arquivo final contém as respostas, os códigos utilizados e a indicação da linguagem escolhida, conforme os requisitos estabelecidos pelo professor.
Uma secretaria municipal de educação busca avaliar a existência de uma associação entre o turno escolar (matutino, vespertino ou noturno) e a percepção dos pais quanto à qualidade do ensino (boa, regular ou ruim), com o objetivo de orientar futuras ações de melhoria no sistema educacional. Para tal, foi conduzida uma pesquisa com uma amostra aleatória de 300 responsáveis por estudantes da rede pública. A tabela de contingência a seguir sintetiza os resultados obtidos:
| Turno / Percepção | Boa | Regular | Ruim | Total |
|---|---|---|---|---|
| Matutino | 50 | 30 | 20 | 100 |
| Vespertino | 40 | 35 | 25 | 100 |
| Noturno | 30 | 20 | 50 | 100 |
| Total | 120 | 85 | 95 | 300 |
A fim de investigar a existência de uma associação estatisticamente significativa entre “Turno Escolar” e “Percepção da Qualidade do Ensino”, ambas variáveis categóricas, procedeu-se à aplicação do teste do qui-quadrado de independência. Para esta análise, estabeleceu-se um nível de significância de 5% (\(\alpha = 0.05\)). Os dados foram coletados de uma amostra aleatória de 300 responsáveis por estudantes da rede pública. A tabela de contingência com os resultados obtidos é apresentada a seguir:
# 1. Criação da tabela de contingência com os dados observados
dados_contingencia <- matrix(c(50, 30, 20,
40, 35, 25,
30, 20, 50),
nrow = 3, byrow = TRUE,
dimnames = list(Turno = c("Matutino", "Vespertino", "Noturno"),
Percepcao = c("Boa", "Regular", "Ruim")))
cat("### Tabela de Contingência Observada:\n")
## ### Tabela de Contingência Observada:
print(dados_contingencia) # Exibe a tabela no relatório
## Percepcao
## Turno Boa Regular Ruim
## Matutino 50 30 20
## Vespertino 40 35 25
## Noturno 30 20 50
# 2. Realização do teste do qui-quadrado de independência
teste_chi_quadrado <- chisq.test(dados_contingencia)
cat("\n### Resultados do Teste Qui-Quadrado de Independência:\n")
##
## ### Resultados do Teste Qui-Quadrado de Independência:
print(teste_chi_quadrado) # Exibe os resultados completos do teste no relatório
##
## Pearson's Chi-squared test
##
## data: dados_contingencia
## X-squared = 25.433, df = 4, p-value = 4.116e-05
# 3. Interpretação do p-valor com base no nível de significância de 5%
alfa <- 0.05 # Nível de significância definido
if (teste_chi_quadrado$p.value < alfa) {
interpretacao_chi_q1 <- paste0("Com um nível de significância de ", alfa * 100, "%, rejeitamos a hipótese nula de independência. Há evidências estatisticamente significativas de associação entre o turno escolar e a percepção dos pais quanto à qualidade do ensino.")
} else {
interpretacao_chi_q1 <- paste0("Com um nível de significância de ", alfa * 100, "%, não rejeitamos a hipótese nula de independência. Não há evidências estatisticamente significativas de associação entre o turno escolar e a percepção dos pais quanto à qualidade do ensino.")
}
cat("\n**Interpretação da Significância Estatística:**\n")
##
## **Interpretação da Significância Estatística:**
cat(interpretacao_chi_q1, "\n")
## Com um nível de significância de 5%, rejeitamos a hipótese nula de independência. Há evidências estatisticamente significativas de associação entre o turno escolar e a percepção dos pais quanto à qualidade do ensino.
# Geração do gráfico de barras empilhadas para visualização das proporções
dados_plot_q1 <- as.data.frame(as.table(dados_contingencia)) %>%
group_by(Turno) %>%
mutate(Proporcao = Freq / sum(Freq))
ggplot(dados_plot_q1, aes(x = Turno, y = Proporcao, fill = Percepcao)) +
geom_bar(stat = "identity", position = "fill") +
labs(title = "Proporção da Percepção da Qualidade do Ensino por Turno Escolar",
x = "Turno Escolar",
y = "Proporção",
fill = "Percepção da Qualidade") +
theme_minimal() +
scale_y_continuous(labels = scales::percent_format())
Interpretação: O teste do qui-quadrado de independência
resultou em um p-valor de 0. Considerando que este p-valor se mostra
inferior ao nível de significância de 0.05, temos base para rejeitar a
hipótese nula de independência. Consequentemente, pode-se inferir que
existe associação estatisticamente significativa entre o turno escolar e
a percepção parental sobre a qualidade do ensino. Uma análise mais
detalhada das frequências observadas e esperadas (consultar
teste_chi_quadrado$expected no código) e dos resíduos
padronizados pode indicar quais categorias de turno e percepção
contribuem mais para essa associação (ou falta dela). O gráfico de
barras empilhadas também ilustra visualmente a distribuição das
percepções dentro de cada turno.
O coeficiente de contingência (C) foi apurado para quantificar a força da associação observada entre as variáveis.
# Cálculo do coeficiente de contingência (C)
valor_qui_quadrado_q1 <- teste_chi_quadrado$statistic
N_q1 <- sum(dados_contingencia) # N é o total de observações
coeficiente_contingencia_q1 <- sqrt(valor_qui_quadrado_q1 / (valor_qui_quadrado_q1 + N_q1))
cat("\n### Coeficiente de Contingência (C):\n")
##
## ### Coeficiente de Contingência (C):
cat("Valor de C:", round(coeficiente_contingencia_q1, 4), "\n")
## Valor de C: 0.2796
# Cálculo do C_max para uma tabela R x C (neste caso, 3x3)
num_linhas_q1 <- nrow(dados_contingencia)
num_colunas_q1 <- ncol(dados_contingencia)
C_max_q1 <- sqrt((min(num_linhas_q1, num_colunas_q1) - 1) / min(num_linhas_q1, num_colunas_q1))
cat("Coeficiente de Contingência Máximo (C_max para 3x3 tabela):", round(C_max_q1, 4), "\n")
## Coeficiente de Contingência Máximo (C_max para 3x3 tabela): 0.8165
# Interpretação dinâmica do coeficiente de contingência
if (coeficiente_contingencia_q1 > 0) {
interpretacao_coef_q1 <- paste0("Existe uma associação entre o turno escolar e a percepção dos pais. O valor do coeficiente de contingência (", round(coeficiente_contingencia_q1, 4), ") indica a força dessa associação.")
interpretacao_coef_q1 <- paste0(interpretacao_coef_q1, " Quanto mais próximo de ", round(C_max_q1, 4), ", que é o valor máximo possível para esta tabela, mais forte é a associação.")
} else {
interpretacao_coef_q1 <- "Não há associação entre o turno escolar e a percepção dos pais."
}
cat("\n**Interpretação da Força da Associação:**\n")
##
## **Interpretação da Força da Associação:**
cat(interpretacao_coef_q1, "\n")
## Existe uma associação entre o turno escolar e a percepção dos pais. O valor do coeficiente de contingência (0.2796) indica a força dessa associação. Quanto mais próximo de 0.8165, que é o valor máximo possível para esta tabela, mais forte é a associação.
Interpretação: O Coeficiente de Contingência (C) apurado foi de 0.2796. O valor máximo possível para o Coeficiente de Contingência em uma tabela 3x3 é de aproximadamente 0.8165. O valor de C de 0.2796 sugere uma associação fraca entre o turno escolar e a percepção da qualidade do ensino. Um C próximo de zero indicaria ausência de associação, enquanto um valor mais próximo do máximo indicaria uma associação mais robusta.
Os resultados desta análise podem oferecer insights valiosos para a formulação de políticas públicas destinadas à melhoria da qualidade do ensino nos diferentes turnos escolares.
Em ambos os cenários, a visualização dos dados (como o gráfico de barras empilhadas) é fundamental para comunicar de forma clara as distribuições e auxiliar na tomada de decisão estratégica.
Um departamento municipal de mobilidade urbana deseja investigar se há relação entre o número de ônibus disponíveis por habitante e o tempo médio de deslocamento diário da população (em minutos). O objetivo é avaliar se a oferta de transporte coletivo está relacionada à redução no tempo de deslocamento, de forma a subsidiar melhorias no sistema de transporte público. Os dados a seguir foram coletados em 10 cidades:
| Cidade | Ônibus por 1.000 Habitantes | Tempo Médio de Deslocamento (min) |
|---|---|---|
| A | 0.8 | 54 |
| B | 1.2 | 46 |
| C | 0.5 | 60 |
| D | 1.0 | 50 |
| E | 1.4 | 43 |
| F | 0.6 | 58 |
| G | 1.3 | 44 |
| H | 0.9 | 52 |
| I | 1.1 | 48 |
| J | 0.7 | 56 |
A fim de visualizar a inter-relação entre as duas variáveis quantitativas sob estudo, procedeu-se à construção de um gráfico de dispersão.
# 1. Criação do dataframe com os dados de mobilidade
dados_mobilidade <- data.frame(
Cidade = c("A", "B", "C", "D", "E", "F", "G", "H", "I", "J"),
Onibus_por_1000_Habitantes = c(0.8, 1.2, 0.5, 1.0, 1.4, 0.6, 1.3, 0.9, 1.1, 0.7),
Tempo_Medio_Deslocamento_min = c(54, 46, 60, 50, 43, 58, 44, 52, 48, 56)
)
cat("### Dados de Mobilidade:\n")
## ### Dados de Mobilidade:
print(dados_mobilidade)
## Cidade Onibus_por_1000_Habitantes Tempo_Medio_Deslocamento_min
## 1 A 0.8 54
## 2 B 1.2 46
## 3 C 0.5 60
## 4 D 1.0 50
## 5 E 1.4 43
## 6 F 0.6 58
## 7 G 1.3 44
## 8 H 0.9 52
## 9 I 1.1 48
## 10 J 0.7 56
# 2. Construção do gráfico de dispersão
ggplot(dados_mobilidade, aes(x = Onibus_por_1000_Habitantes, y = Tempo_Medio_Deslocamento_min)) +
geom_point(color = "blue", size = 3) + # Pontos azuis para cada cidade
labs(title = "Relação entre Ônibus por 1.000 Habitantes e Tempo Médio de Deslocamento",
x = "Ônibus por 1.000 Habitantes",
y = "Tempo Médio de Deslocamento (min)") +
theme_minimal() + # Tema minimalista para clareza
geom_smooth(method = "lm", se = FALSE, color = "red") # Adiciona linha de regressão para visualizar tendência
Tipo de Associação (Interpretação Visual): A inspeção
visual do gráfico de dispersão revela uma inclinação descendente dos
pontos. Isso sugere a existência de uma associação negativa entre o
número de ônibus por 1.000 habitantes e o tempo médio de deslocamento
diário. Em outras palavras, observa-se uma tendência de redução no tempo
médio de deslocamento à medida que a disponibilidade de transporte
coletivo aumenta.
Com o intuito de quantificar a magnitude e a direção dessa associação de natureza linear, calculou-se o coeficiente de correlação linear de Pearson (\(\rho\)).
# 1. Calcular o coeficiente de correlação de Pearson
# A função cor() calcula a correlação entre duas variáveis.
correlacao_pearson_q2 <- cor(dados_mobilidade$Onibus_por_1000_Habitantes,
dados_mobilidade$Tempo_Medio_Deslocamento_min,
method = "pearson")
cat("\n### Coeficiente de Correlação de Pearson:\n")
##
## ### Coeficiente de Correlação de Pearson:
cat("Valor de Pearson (r):", round(correlacao_pearson_q2, 4), "\n")
## Valor de Pearson (r): -0.999
# 2. Interpretação do valor obtido (direção e força da correlação)
if (correlacao_pearson_q2 > 0) {
direcao_q2 <- "positiva"
} else if (correlacao_pearson_q2 < 0) {
direcao_q2 <- "negativa"
} else {
direcao_q2 <- "inexistente (ou muito fraca)"
}
valor_absoluto_cor_q2 <- abs(correlacao_pearson_q2)
if (valor_absoluto_cor_q2 >= 0.7) {
forca_q2 <- "forte"
} else if (valor_absoluto_cor_q2 >= 0.5) {
forca_q2 <- "moderada"
} else if (valor_absoluto_cor_q2 >= 0.3) {
forca_q2 <- "fraca"
} else {
forca_q2 <- "muito fraca ou insignificante"
}
interpretacao_cor_q2 <- paste0("O coeficiente de correlação de Pearson de ", round(correlacao_pearson_q2, 4), " indica uma associação ", direcao_q2, " e ", forca_q2, " entre o número de ônibus por 1.000 habitantes e o tempo médio de deslocamento diário.")
if (direcao_q2 == "negativa") {
interpretacao_cor_q2 <- paste0(interpretacao_cor_q2, " Isso sugere que, à medida que o número de ônibus por habitante aumenta, o tempo médio de deslocamento tende a diminuir.")
} else if (direcao_q2 == "positiva") {
interpretacao_cor_q2 <- paste0(interpretacao_cor_q2, " Isso sugere que, à medida que o número de ônibus por habitante aumenta, o tempo médio de deslocamento também tende a aumentar.")
}
cat("\n**Interpretação da Correlação:**\n")
##
## **Interpretação da Correlação:**
cat(interpretacao_cor_q2, "\n")
## O coeficiente de correlação de Pearson de -0.999 indica uma associação negativa e forte entre o número de ônibus por 1.000 habitantes e o tempo médio de deslocamento diário. Isso sugere que, à medida que o número de ônibus por habitante aumenta, o tempo médio de deslocamento tende a diminuir.
Interpretação: O coeficiente de correlação linear de Pearson calculado foi de -0.999. Este valor indica uma correlação negativa de força forte entre o número de ônibus por 1.000 habitantes e o tempo médio de deslocamento. Um valor próximo a -1 (neste caso, espera-se um valor negativo significativo) confirma a observação do gráfico de dispersão: quanto maior a oferta de ônibus per capita, menor tende a ser o tempo que as pessoas levam para se deslocar.
Os resultados encontrados fornecem uma base empírica para orientar a formulação de políticas públicas no setor de mobilidade urbana.
Em conclusão, a análise da correlação entre a oferta de ônibus e o tempo de deslocamento é um subsídio crucial para que o departamento de mobilidade urbana possa alocar recursos de forma mais eficiente e desenvolver políticas que impactam positivamente a qualidade de vida da população.