Este documento apresenta uma análise exploratória de dados e discussões acerca do acesso de estudantes de escolas públicas do Ceará à internet em suas respectivas instituições de ensino. Este trabalho é um requisito para aprovação na disciplina de Fundamentos de Estatística da Universidade de Fortaleza, no âmbito do curso de Inteligência Artificial.

Autor: Pedro Florencio de Almeida Neto | Cientista de Dados


Objetivo Geral:

Objetivos Específicos:

1. Bibliotecas

# install.packages("readxl")
# install.packages("leaflet")
# install.packages("echarts4r")
# install.packages("BAMMtools")
library(sf)
## Linking to GEOS 3.13.0, GDAL 3.8.5, PROJ 9.5.1; sf_use_s2() is TRUE
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
library(readxl)
library(scales)
library(leaflet)
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats   1.0.0     ✔ readr     2.1.5
## ✔ ggplot2   3.5.2     ✔ stringr   1.5.1
## ✔ lubridate 1.9.4     ✔ tibble    3.3.0
## ✔ purrr     1.1.0     ✔ tidyr     1.3.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ readr::col_factor() masks scales::col_factor()
## ✖ purrr::discard()    masks scales::discard()
## ✖ 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
library(echarts4r)
library(BAMMtools)
## Loading required package: ape
## 
## Attaching package: 'ape'
## 
## The following object is masked from 'package:dplyr':
## 
##     where
library(RColorBrewer)

2. Aquisição dos Dados

Os dados foram baixados do Diagnóstico da Conectividade na Educação (SIMET) e são oriundos do Censo Escolar 2024 (INEP). O script 01-filtra-base-ceara.R é responsável por filtrar os dados brutos para o estado do Ceará e salvar no diretório processed_data.

df <- read_excel('data/processed-data/base_ceara_validada.xlsx')
df <- df[!is.na(df$escolar_co_municipio), ]

head(df)
## # A tibble: 6 × 59
##   escolar_co_entidade escolar_nu_ano_censo escolar_no_entidade              
##                 <dbl>                <dbl> <chr>                            
## 1            23000465                 2024 JOAO LOURENCO PEREIRA ROCHA EEIEF
## 2            23000660                 2024 MARIA NAZARE VIANA EEIEF         
## 3            23000708                 2024 HIGINO DE SOUZA BRANDAO EEIEF    
## 4            23001119                 2024 RAIMUNDO ROSA DO NASCIMENTO EEIEF
## 5            23003014                 2024 MURILO ROCHA AGUIAR EEF DEP      
## 6            23003359                 2024 ANTONIO TEIXEIRA DE FRANCA EEF   
## # ℹ 56 more variables: escolar_tp_situacao_funcionamento <chr>,
## #   escolar_co_uf <dbl>, escolar_co_municipio <dbl>, escolar_co_distrito <dbl>,
## #   escolar_tp_dependencia <chr>, escolar_tp_localizacao <chr>,
## #   escolar_qt_desktop_aluno <dbl>, escolar_qt_comp_portatil_aluno <dbl>,
## #   escolar_qt_tablet_aluno <dbl>, escolar_in_laboratorio_informatica <chr>,
## #   escolar_in_internet <chr>, escolar_in_internet_alunos <chr>,
## #   escolar_in_internet_aprendizagem <chr>, escolar_tp_rede_local <chr>, …
gdf_ceara <- st_read('data/processed-data/limites_ceara.geojson')
## Reading layer `limites_ceara' from data source 
##   `/Users/pedroflorencio/Documents/conecta-ceara/data/processed-data/limites_ceara.geojson' 
##   using driver `GeoJSON'
## Simple feature collection with 184 features and 6 fields
## Geometry type: POLYGON
## Dimension:     XY
## Bounding box:  xmin: -41.42352 ymin: -7.858182 xmax: -37.25329 ymax: -2.784323
## Geodetic CRS:  WGS 84

3. Pré-Processamento dos Dados

3.1. Remoção de variáveis

# remocao das 28 ultimas colunas
df <- df[, 1:(ncol(df) - 28)]
# remocao de colunas especificas
cols_to_remove <- c('escolar_nu_ano_censo',
                    'escolar_co_uf',
                    'escolar_co_distrito',
                    'comparador_empresas',
                    'satelite_mec',
                    'recurso_recebido')

df <- df[, !(names(df) %in% cols_to_remove)]

3.2. Tratamento de dados ausentes

knitr::kable(data.frame('Faltantes' = colSums(is.na(df))))
Faltantes
escolar_co_entidade 0
escolar_no_entidade 0
escolar_tp_situacao_funcionamento 0
escolar_co_municipio 0
escolar_tp_dependencia 0
escolar_tp_localizacao 0
escolar_qt_desktop_aluno 0
escolar_qt_comp_portatil_aluno 0
escolar_qt_tablet_aluno 0
escolar_in_laboratorio_informatica 0
escolar_in_internet 0
escolar_in_internet_alunos 0
escolar_in_internet_aprendizagem 0
escolar_tp_rede_local 0
escolar_energia 0
escolar_qtematriculas 0
escolar_qtematriculas_maior_turno 12
escolar_num_turmas 39
latitude 0
longitude 0
nm_regiao 0
nm_estado 0
nm_municipio 0
porte_escola 0
escolar_tipo_tecnologia 6
df %>% 
  count(escolar_tipo_tecnologia, name='contagem', sort=TRUE)
## # A tibble: 7 × 2
##   escolar_tipo_tecnologia contagem
##   <chr>                      <int>
## 1 ADSL                        1756
## 2 sem informação              1706
## 3 Satélite                    1330
## 4 Fibra                        669
## 5 Rede Celular                 477
## 6 Rádio                         27
## 7 <NA>                           6

Para a variável escolar_tipo_tecnologia optou-se por preencher NA com o termo sem informação, conforme string contida nesta coluna.

df$escolar_tipo_tecnologia <- df$escolar_tipo_tecnologia %>% replace_na('sem informação')

3.3. Substituição de tipos de variáveis

df$escolar_co_municipio <- as.character(df$escolar_co_municipio)
# verificando se as colunas booleanas possuem mais formas de escrita de 'Sim'e 'Nao'

cols_booleanas <- c('escolar_in_laboratorio_informatica',
                    'escolar_in_internet',
                    'escolar_in_internet_alunos',
                    'escolar_in_internet_aprendizagem')

lapply(df[cols_booleanas], unique)
## $escolar_in_laboratorio_informatica
## [1] "Nao" "Sim"
## 
## $escolar_in_internet
## [1] "Sim" "Nao"
## 
## $escolar_in_internet_alunos
## [1] "Nao" "Sim"
## 
## $escolar_in_internet_aprendizagem
## [1] "Sim" "Nao"

As colunas booleanas não apresentam valores distintos de Sim e Nao. Portanto, é seguro realizar a troca para valores binários considerando apenas estas duas strings.

# substituindo colunas de 'Sim' e 'Nao' por variavel booleana
df <- df %>%
  mutate(across(all_of(cols_booleanas),
                ~ifelse(. == "Sim", 1, 0)))

4. Análise Exploratória dos Dados

4.1. Qual o percentual de escolas municipais e estaduais no Estado do Ceará?

# selecao das colunas necessarias
cols <- c("escolar_co_entidade", "escolar_no_entidade", "escolar_tp_dependencia")
df_dependencias <- df %>% select(all_of(cols))

# valores absolutos
df_freq <- as.data.frame(table(df_dependencias$escolar_tp_dependencia))
colnames(df_freq) <- c("TP_DEPENDENCIA","QUANTIDADE")

# percentual
df_freq$PERCENTUAL <- round(df_freq$QUANTIDADE/sum(df_freq$QUANTIDADE), 2)
# visualizacao
df_freq %>%
  e_charts(TP_DEPENDENCIA) %>%
  e_pie(
    QUANTIDADE,
    radius = c("45%", "75%"),
    label = list(
      show = TRUE,
      position = "outside",
      formatter = "{d}%",
      fontSize = 12,
      color = "black"
    )
  ) %>%
  e_legend(right = "25%") %>%
  e_title(
    text = "Gráfico 01: Dependência Administrativa das Escolas Públicas do Ceará",
    textStyle = list(
      color = "black",
      fontSize = 14
    )) %>% 
  e_theme("macarons")

Observa-se uma predominância da quantidade de escolas municipais, isto é, de educação básica no estado do Ceará. Pode-se ressaltar que o número total de instituições não reflete necessariamente um alta taxa de escolarização, necessitando portanto de uma análise do número de matriculados em cada dependência administrativa no Estado.

4.2. Qual o percentual de escolas rurais e urbanas no Estado do Ceará?

# colunas necessarias
cols_loc <- c('escolar_co_entidade',
                    'escolar_co_entidade',
                    'nm_municipio',
                    'escolar_tp_localizacao')

df_localizacao <- df %>% select(all_of(cols_loc))

head(df_localizacao)
## # A tibble: 6 × 3
##   escolar_co_entidade nm_municipio escolar_tp_localizacao
##                 <dbl> <chr>        <chr>                 
## 1            23000465 ACARAÚ       Rural                 
## 2            23000660 ACARAÚ       Rural                 
## 3            23000708 ACARAÚ       Urbana                
## 4            23001119 ACARAÚ       Rural                 
## 5            23003014 CAMOCIM      Urbana                
## 6            23003359 CAMOCIM      Rural
# valores absolutos
df_freq_loc <- as.data.frame(table(df_localizacao$escolar_tp_localizacao))
colnames(df_freq_loc) <- c("TP_LOCALIZACAO","QUANTIDADE")

df_freq_loc
##   TP_LOCALIZACAO QUANTIDADE
## 1          Rural       2509
## 2         Urbana       3462
df_freq_loc %>% 
  e_charts(TP_LOCALIZACAO) %>%  
  e_bar(QUANTIDADE, name = "") %>% 
  e_labels(show = TRUE) %>% 
  e_title(text='Gráfico 02: Localização das Escolas Cearenses',
          textStyle = list(color = "black", fontSize = 14)) %>% 
  e_theme('macarons')

Há uma predominância de escolas em zona urbana, embora, a quantidade de instituições em zonas rurais apresenta-se com um valor relevante.

4.3. Qual o panorama das escolas que tem laboratórios de informática no Ceará?

# agrupando por municipio e somando a quantidade de laboratorios de informatica
df_filtered_lab <- df %>%
  group_by(escolar_co_municipio) %>%
  summarise(
    quantidade_escolas_laboratorios = sum(escolar_in_laboratorio_informatica),
    quantidade_escolas = n())

Adicionando coluna com os valores relativos de escolas que contêm laboratórios de informática

df_filtered_lab <- mutate(df_filtered_lab,
                      percentual_laboratorio = quantidade_escolas_laboratorios / quantidade_escolas)

Adicionando a coluna geometry no dataframe df_filtered

df_join_lab <- gdf_ceara %>% 
  left_join(df_filtered_lab, by = c("codigo_ibge"="escolar_co_municipio"))

dim(df_join_lab)
## [1] 184  10

Mapa Coroplético do Percentual de Laboratórios nas Cearenses

A definição de quantidade de categorias seguiu-se a regra de Freedman-Diaconis1, em que:

\[ w = 2*IQR*n^{-\frac{1}{3}} \]

\[ k = \frac{max-min}{w} \]

Onde:

  • IQR: amplitude interquartil

  • n: número de observações

  • k: quantidade de categorias (bins)

Para escolha dos valores que limitam cada categoria, adotou-se o método Jenks-Caspall.

Q1 <- quantile(df_join_lab$percentual_laboratorio, probs = 0.25)
Q2 <- quantile(df_join_lab$percentual_laboratorio, probs = 0.50)
Q3 <- quantile(df_join_lab$percentual_laboratorio, probs = 0.75)

IQR <- (Q3-Q1)

IQR
##       75% 
## 0.1794872
n = nrow(df_join_lab)
n
## [1] 184
w = 2*IQR*(n**(-1/3))
w
##        75% 
## 0.06311377
min = min(df_join_lab$percentual_laboratorio)
max = max(df_join_lab$percentual_laboratorio)

k = (max - min)/w

k
##      75% 
## 15.01049

15 classes são recomendadas pelo cálculo do método, entretanto, por motivos de visualização e produção de um relatório em linguagem simples, optou-se por 5 categorias.

Visualização do mapa

# bins <- categories
bins <- 5 # Natural Breaks (Intervalos iguais)
pal <- colorRampPalette(brewer.pal(9, "YlOrRd"))(15)
pal_fun <- colorBin(
  palette = pal,
  domain = df_join_lab$percentual_laboratorio,
  bins = 5,
  na.color = "transparent"
)

labels <- sprintf(
  "<strong>%s</strong><br/>%.1f%%",
  df_join_lab$municipio, df_join_lab$percentual_laboratorio*100
) %>% lapply(htmltools::HTML)

m <- leaflet(df_join_lab) %>%
  setView(lng = -39.5, lat = -5.2, zoom = 6) %>%
  addProviderTiles(providers$CartoDB.Positron) %>% 
  addPolygons(
  fillColor = ~pal_fun(percentual_laboratorio),
  weight = 2,
  opacity = 1,
  color = "white",
  dashArray = "3",
  fillOpacity = 0.7,
   highlightOptions = highlightOptions(
    weight = 5,
    color = "#666",
    dashArray = "",
    fillOpacity = 0.7,
    bringToFront = TRUE),
  label = labels,
  labelOptions = labelOptions(
    style = list("font-weight" = "normal", padding = "3px 8px"),
    textsize = "15px",
    direction = "auto")) %>% 
  addLegend(pal = pal_fun, values = ~percentual_laboratorio, opacity = 0.7, title = "Percentuais", position = "bottomright")

m

Municípios com menor percentual de escolas com laboratórios

df_order <- df_join_lab %>% arrange(percentual_laboratorio)
head(select(as.data.frame(df_order),
                 municipio,
                 percentual_laboratorio,
                 quantidade_escolas_laboratorios,
                 quantidade_escolas),10)
##      municipio percentual_laboratorio quantidade_escolas_laboratorios
## 1        Graça             0.05263158                               1
## 2     Catarina             0.05882353                               1
## 3       Aurora             0.05882353                               1
## 4  Barroquinha             0.06250000                               1
## 5   Capistrano             0.06666667                               1
## 6      Quixelô             0.06666667                               1
## 7      Meruoca             0.07142857                               1
## 8     Ipueiras             0.07272727                               4
## 9    Paraipaba             0.07407407                               2
## 10      Croatá             0.07500000                               3
##    quantidade_escolas
## 1                  19
## 2                  17
## 3                  17
## 4                  16
## 5                  15
## 6                  15
## 7                  14
## 8                  55
## 9                  27
## 10                 40

Avaliação da disparidade entre os municípios

ggplot(data=df_join_lab) +
  geom_histogram(mapping = aes(x = percentual_laboratorio), 
                 bins = 15, 
                 binwidth = 0.063158,
                 fill = "steelblue", 
                 color = "white", 
                 alpha=0.8,
                 boundary=0) +
  scale_x_continuous(breaks = seq(0, 1, 0.063158),
                     labels = label_number(accuracy = 0.01)) +
  scale_y_continuous(breaks = seq(0, 40, 10)) +
  labs(x='Percentual de escolas com laboratório',y='') + 
  geom_text(
    stat = "bin",
    aes(
      x = percentual_laboratorio,
      y = after_stat(count),
      label = after_stat(count)
    ),
    binwidth = 0.063158,
    boundary = 0,
    vjust = -0.3,
    size=3
  )

4.4. Qual o panorama da disposição de internet nas escolas do Ceará?

df_contagem_internet <- df %>% 
  count(escolar_in_internet, name='contagem', sort=TRUE) %>% 
  mutate(percentual = contagem/sum(contagem))

df_contagem_internet
## # A tibble: 2 × 3
##   escolar_in_internet contagem percentual
##                 <dbl>    <int>      <dbl>
## 1                   1     5879     0.985 
## 2                   0       92     0.0154
df_contagem_internet$escolar_in_internet <- ifelse(df_contagem_internet$escolar_in_internet == 1,
                         "Com internet",
                         "Sem internet")
df_contagem_internet %>% 
  e_charts(escolar_in_internet) %>%  
  e_bar(contagem, name = "") %>% 
  e_labels(show = TRUE) %>% 
  e_title(text='Gráfico 03: Quantidade de Escolas Cearenses com Acesso à Internet',
          textStyle = list(color = "black", fontSize = 14)) %>% 
  e_theme('macarons')

Quase a totalidade das escolas no Ceará possuem conexão com internet (98,5%). Um panorama sobre os municípios é apresentado abaixo.

df_internet <- df %>% 
  group_by(escolar_co_municipio) %>% 
  summarise(quantidade_escolas=n(),
            quantidade_escolas_internet=sum(escolar_in_internet),
            percentual = quantidade_escolas_internet/quantidade_escolas)

head(df_internet)
## # A tibble: 6 × 4
##   escolar_co_municipio quantidade_escolas quantidade_escolas_internet percentual
##   <chr>                             <int>                       <dbl>      <dbl>
## 1 2300101                              16                          14      0.875
## 2 2300150                              11                          11      1    
## 3 2300200                              52                          52      1    
## 4 2300309                              39                          39      1    
## 5 2300408                              22                          19      0.864
## 6 2300507                              17                          17      1
df_join_net <- gdf_ceara %>% 
  left_join(df_internet, by = c("codigo_ibge"="escolar_co_municipio"))

dim(df_join_lab)
## [1] 184  10
bins <- 5 # Natural Breaks (Intervalos iguais)
pal_fun <- colorBin(
  palette = "YlOrRd",
  domain = df_join_net$percentual,
  bins = 5,
  na.color = "transparent"
)

labels <- sprintf(
  "<strong>%s</strong><br/>%.1f%%",
  df_join_net$municipio, df_join_net$percentual*100
) %>% lapply(htmltools::HTML)

m <- leaflet(df_join_net) %>%
  setView(lng = -39.5, lat = -5.2, zoom = 6) %>%
  addProviderTiles(providers$CartoDB.Positron) %>% 
  addPolygons(
  fillColor = ~pal_fun(percentual),
  weight = 2,
  opacity = 1,
  color = "white",
  dashArray = "3",
  fillOpacity = 0.7,
   highlightOptions = highlightOptions(
    weight = 5,
    color = "#666",
    dashArray = "",
    fillOpacity = 0.7,
    bringToFront = TRUE),
  label = labels,
  labelOptions = labelOptions(
    style = list("font-weight" = "normal", padding = "3px 8px"),
    textsize = "15px",
    direction = "auto")) %>% 
  addLegend(pal = pal_fun, values = ~percentual, opacity = 0.7, title = "Percentuais", position = "bottomright")

m

4.5. Quais os tipos de rede de internet nas escolas do Ceará?

df_contagem_rede <- df %>% 
  count(escolar_tp_rede_local, name='contagem', sort=TRUE) %>% 
  mutate(percentual = contagem/sum(contagem))

df_contagem_rede
## # A tibble: 5 × 3
##   escolar_tp_rede_local contagem percentual
##   <chr>                    <int>      <dbl>
## 1 Cabo e Wireless           2974     0.498 
## 2 Wireless                  1327     0.222 
## 3 Cabo                      1168     0.196 
## 4 Não informado              352     0.0590
## 5 Não há rede local          150     0.0251

Mais de 60% das escolas do Estado possui rede wifi.

df_contagem_rede %>% 
  e_charts(escolar_tp_rede_local) %>%  
  e_bar(contagem, name = "") %>% 
  e_labels(show = TRUE) %>% 
  e_title(text='Gráfico 04: Quantidade de Escolas Cearenses com Acesso à Internet por Tipo de Rede',
          textStyle = list(color = "black", fontSize = 14)) %>%
  e_x_axis(
    axisLabel = list(
      interval = 0,
      rotate = 45)) %>% 
  e_theme('macarons')

4.6. Quais os tipos de tecnologia de conexão à internet nas escolas do Ceará?

df_contagem_tecnologia <- df %>% 
  count(escolar_tipo_tecnologia, name='contagem', sort=TRUE) %>% 
  mutate(percentual = contagem/sum(contagem))

df_contagem_tecnologia
## # A tibble: 6 × 3
##   escolar_tipo_tecnologia contagem percentual
##   <chr>                      <int>      <dbl>
## 1 ADSL                        1756    0.294  
## 2 sem informação              1712    0.287  
## 3 Satélite                    1330    0.223  
## 4 Fibra                        669    0.112  
## 5 Rede Celular                 477    0.0799 
## 6 Rádio                         27    0.00452
df_contagem_tecnologia %>% 
  e_charts(escolar_tipo_tecnologia) %>%  
  e_bar(contagem, name = "") %>% 
  e_labels(show = TRUE) %>% 
  e_title(text='Gráfico 05: Quantidade de Escolas Cearenses com Acesso à Internet por Tipo de Tecnologia de Rede',
          textStyle = list(color = "black", fontSize = 14)) %>%
  e_x_axis(
    axisLabel = list(
      interval = 0,
      rotate = 45)) %>% 
  e_theme('macarons')

4.7. Qual a quantidade de estudantes que tem acesso a internet nas escolas?

df_contagem_internet_alunos <- df %>% 
  count(escolar_in_internet_alunos, name='contagem', sort=TRUE) %>% 
  mutate(percentual = contagem/sum(contagem))

df_contagem_internet_alunos
## # A tibble: 2 × 3
##   escolar_in_internet_alunos contagem percentual
##                        <dbl>    <int>      <dbl>
## 1                          0     3359      0.563
## 2                          1     2612      0.437
df_contagem_internet_alunos$escolar_in_internet_alunos <- ifelse(df_contagem_internet_alunos$escolar_in_internet_alunos == 1,
                         "Disponível",
                         "Indisponível")
df_contagem_internet_alunos %>% 
  e_charts(escolar_in_internet_alunos) %>%  
  e_bar(contagem, name = "") %>% 
  e_labels(show = TRUE) %>% 
  e_title(text='Gráfico 06: Disponibilidade de Internet para Estudantes nas Escolas Cearenses', textStyle = list(color = "black", fontSize = 14)) %>%
  e_theme('macarons')

4.8. As escolas cearenses possuem conexão com internet para uso pedagógico?

df_contagem_internet_pedagogico <- df %>% 
  count(escolar_in_internet_aprendizagem, name='contagem', sort=TRUE) %>% 
  mutate(percentual = contagem/sum(contagem))

df_contagem_internet_pedagogico
## # A tibble: 2 × 3
##   escolar_in_internet_aprendizagem contagem percentual
##                              <dbl>    <int>      <dbl>
## 1                                1     4406      0.738
## 2                                0     1565      0.262
df_contagem_internet_pedagogico$escolar_in_internet_aprendizagem <- ifelse(df_contagem_internet_pedagogico$escolar_in_internet_aprendizagem == 1,
                         "Disponível",
                         "Indisponível")
df_contagem_internet_pedagogico %>% 
  e_charts(escolar_in_internet_aprendizagem) %>%  
  e_bar(contagem, name = "") %>% 
  e_labels(show = TRUE) %>% 
  e_title(text='Gráfico 07: Disponibilidade de Internet para Uso Pedagógico Estudantes nas Escolas Cearenses', textStyle = list(color = "black", fontSize = 14)) %>%
  e_theme('macarons')

5. Estatística Descritiva

5.1. Quantidade de Matrículas nas Escolas

summary(df$escolar_qtematriculas)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     0.0   109.5   209.0   288.8   379.0  4891.0
print(paste("Variância: ", var(df$escolar_qtematriculas)))
## [1] "Variância:  77619.1385783941"
print(paste("Desvio Padrão: ", sd(df$escolar_qtematriculas)))
## [1] "Desvio Padrão:  278.602115172147"

5.2. Número de Turmas nas Escolas

summary(df$escolar_num_turmas)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##    1.00    7.00   10.00   12.21   15.00  189.00      39
print(paste("Variância: ", var(df$escolar_num_turmas, na.rm = TRUE)))
## [1] "Variância:  84.2223840063177"
print(paste("Desvio Padrão: ", sd(df$escolar_num_turmas, na.rm = TRUE)))
## [1] "Desvio Padrão:  9.17727541301435"

5.3. Número de Desktops por Aluno

summary(df$escolar_qt_desktop_aluno)
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
##     0.00     0.00     0.00    20.65     5.00 88888.00

Observa-se um valor discrepante na quantidade de computadores desktops por aluno, o que indica uma inconsistência presente nessa variável.

print(paste("Variância: ", var(df$escolar_qt_desktop_aluno)))
## [1] "Variância:  1323282.82369033"
print(paste("Desvio Padrão: ", sd(df$escolar_qt_desktop_aluno)))
## [1] "Desvio Padrão:  1150.34030777432"

5.4. Número de Computadores Portáteis (Laptops) por Aluno

summary(df$escolar_qt_comp_portatil_aluno)
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
##     0.00     0.00     1.00    17.89     3.00 88888.00
print(paste("Variância: ", var(df$escolar_qt_comp_portatil_aluno)))
## [1] "Variância:  1323217.51703412"
print(paste("Desvio Padrão: ", sd(df$escolar_qt_comp_portatil_aluno)))
## [1] "Desvio Padrão:  1150.31192162566"

5.5. Número de Tablets por Aluno

summary(df$escolar_qt_tablet_aluno)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.000   0.000   0.000   7.027   0.000 750.000
print(paste("Variância: ", var(df$escolar_qt_tablet_aluno)))
## [1] "Variância:  1174.64299143235"
print(paste("Desvio Padrão: ", sd(df$escolar_qt_tablet_aluno)))
## [1] "Desvio Padrão:  34.2730651012183"

  1. https://geographicdata.science/book/intro.html↩︎