Fábulas Computacionais - Experimento

1. Base de questionário

Neste experimento, primeiramente utilizamos o questionário Bebras Brasil, composto por 12 questões. Em seguida, os participantes foram submetidos ao jogo Fábulas Computacionais. Ambos, o Bebras e o jogo, tiveram um tempo estabelecido de 1 hora para a realização das atividades propostas. O estudo foi conduzido com 46 alunos do ensino fundamental, abrangendo estudantes do quinto ao oitavo ano.

#carregando base geral
dados <- read_csv2("datasets/experimento.csv")

#binarizando acertos bebras, abaixo e acima da média
dados <- dados |> mutate(media_bebras = ifelse(perc_acertos_bebras > 36.78, "Acima da Média (36,78)", "Abaixo da Média (36,78)"))

#binarizando acertos game, abaixo e acima da média
dados <- dados |> mutate(media_game = ifelse(perc_acertos_game > 73.55, "Acima da Média (73,55)", "Abaixo da Média (73,55)"))

#Mostrando a tabela
paged_table(dados)

2. Tabela descritiva

Bebras

dados |> 
  select(sexo, serie, media_bebras) |> 
  tbl_summary(by = media_bebras) |> 
  #add_p() |> 
  add_overall() |> 
  bold_levels()
Characteristic Overall, N = 461 Abaixo da Média (36,78), N = 261 Acima da Média (36,78), N = 201
sexo


    Feminino 20 (43%) 11 (42%) 9 (45%)
    Masculino 26 (57%) 15 (58%) 11 (55%)
serie


    5ª Série 17 (37%) 11 (42%) 6 (30%)
    6ª Série 11 (24%) 6 (23%) 5 (25%)
    7ª Série 9 (20%) 4 (15%) 5 (25%)
    8ª Série 9 (20%) 5 (19%) 4 (20%)
1 n (%)

Game

dados |> 
  select(sexo, serie, media_game) |> 
  tbl_summary(by = media_game) |> 
  #add_p() |> 
  add_overall() |> 
  bold_levels()
Characteristic Overall, N = 461 Abaixo da Média (73,55), N = 191 Acima da Média (73,55), N = 271
sexo


    Feminino 20 (43%) 10 (53%) 10 (37%)
    Masculino 26 (57%) 9 (47%) 17 (63%)
serie


    5ª Série 17 (37%) 7 (37%) 10 (37%)
    6ª Série 11 (24%) 7 (37%) 4 (15%)
    7ª Série 9 (20%) 1 (5.3%) 8 (30%)
    8ª Série 9 (20%) 4 (21%) 5 (19%)
1 n (%)

2. Relação de acertos por série

Bebras (Gráfico)

#boxplot de serie por acertos no bebras
my_comparisons <- list( c("5ª Série", "6ª Série"), c("5ª Série", "7ª Série"), c("5ª Série", "8ª Série"),c("6ª Série", "7ª Série") ,c("6ª Série", "8ª Série"),c("7ª Série", "8ª Série"))
ggboxplot(dados, x = "serie", y = "perc_acertos_bebras",
          color = "serie", palette = "jco")+ 
  stat_compare_means(comparisons = my_comparisons)+ 
  stat_compare_means(label.y = 11)

Bebras (Descritiva)

#descritiva perc_acertos_bebras por serie
dados |> 
  select(perc_acertos_bebras, serie) |> 
  group_by(serie) |> 
  summarise(media = mean(perc_acertos_bebras), 
            mediana = median(perc_acertos_bebras),
            desvio = sd(perc_acertos_bebras),
            minimo = min(perc_acertos_bebras),
            maximo = max(perc_acertos_bebras)) |> 
  paged_table()

Game

#boxplot de serie por acertos no bebras
my_comparisons <- list( c("5ª Série", "6ª Série"), c("5ª Série", "7ª Série"), c("5ª Série", "8ª Série"),c("6ª Série", "7ª Série") ,c("6ª Série", "8ª Série"),c("7ª Série", "8ª Série"))
ggboxplot(dados, x = "serie", y = "perc_acertos_game",
          color = "serie", palette = "jco")+ 
  stat_compare_means(comparisons = my_comparisons)+ 
  stat_compare_means(label.y = 11)

Game (Descritiva)

#descritiva perc_acertos_bebras por serie
dados |> 
  select(perc_acertos_game, serie) |> 
  group_by(serie) |> 
  summarise(media = mean(perc_acertos_game), 
            mediana = median(perc_acertos_game),
            desvio = sd(perc_acertos_game),
            minimo = min(perc_acertos_game),
            maximo = max(perc_acertos_game)) |> 
  paged_table()

3. Médias de acertos por habilidade no game

3.1 Tabelas

Tipos de Dados

dados |> 
  select(perc_acertos_game_td, serie) |> 
  group_by(serie) |> 
  summarise(media = mean(perc_acertos_game_td), 
            mediana = median(perc_acertos_game_td),
            desvio = sd(perc_acertos_game_td),
            minimo = min(perc_acertos_game_td),
            maximo = max(perc_acertos_game_td)) |> 
  paged_table()

Linguagem de Programação

dados |> 
  select(perc_acertos_game_lp, serie) |> 
  group_by(serie) |> 
  summarise(media = mean(perc_acertos_game_lp), 
            mediana = median(perc_acertos_game_lp),
            desvio = sd(perc_acertos_game_lp),
            minimo = min(perc_acertos_game_lp),
            maximo = max(perc_acertos_game_lp)) |> 
  paged_table()

Decomposição

dados |> 
  select(perc_acertos_game_d, serie) |> 
  group_by(serie) |> 
  summarise(media = mean(perc_acertos_game_d), 
            mediana = median(perc_acertos_game_d),
            desvio = sd(perc_acertos_game_d),
            minimo = min(perc_acertos_game_d),
            maximo = max(perc_acertos_game_d)) |> 
  paged_table()

Generalização

dados |> 
  select(perc_acertos_game_g, serie) |> 
  group_by(serie) |> 
  summarise(media = mean(perc_acertos_game_g), 
            mediana = median(perc_acertos_game_g),
            desvio = sd(perc_acertos_game_g),
            minimo = min(perc_acertos_game_g),
            maximo = max(perc_acertos_game_g)) |> 
  paged_table()

3.2 Gráficos

Barras

grafico <- dados |> 
  select(serie, perc_acertos_game_td, perc_acertos_game_lp, perc_acertos_game_d, perc_acertos_game_g) |> 
  gather(key = "habilidade", value = "perc_acertos_game", -serie) |>
  group_by(serie, habilidade) |> 
  summarise(media = mean(perc_acertos_game), 
            desvio = sd(perc_acertos_game)) 

# Mapeamento dos novos rótulos para as habilidades
novos_rotulos <- c(
  "perc_acertos_game_d" = "Decomposição",
  "perc_acertos_game_g" = "Generalização",
  "perc_acertos_game_lp" = "Linguagem de Programação",
  "perc_acertos_game_td" = "Tipos de Dados"
)

# Criar o gráfico de barras com médias e desvios
ggplot(grafico, aes(x = habilidade, y = media, fill = serie)) +
  geom_bar(stat = "identity", position = "dodge", width = 0.7, alpha = 0.6) +
  geom_errorbar(aes(ymin = media - desvio, ymax = media + desvio),
                width = 0.3, position = position_dodge(width = 0.7)) +
  labs(x = "", y = "Médias no game", color = "Série",
       title = "Médias e Desvios por Habilidade e Série") +
  scale_x_discrete(labels = novos_rotulos) +  # Alteração dos rótulos no eixo x
  theme_minimal() 

Linhas

# Criar o gráfico de linhas com médias e valores nos pontos
ggplot(grafico, aes(x = habilidade, y = media, color = serie, group = serie)) +
  geom_line(size = 1) +
  geom_point(size = 3) +
  geom_text(aes(label = round(media, 2)), vjust = -0.5, size = 3, show.legend = FALSE) +
  labs(x = "", y = "Médias no game", color = "Série",
       title = "Médias por Habilidade e Série") +
  scale_x_discrete(labels = novos_rotulos) +  # Alteração dos rótulos no eixo x
  theme_minimal()

4. Correlação entre bebras e game por série

Todos

plot(cor_test(dados, "perc_acertos_bebras", "perc_acertos_game"))

5º ano

dados_filtrado_serie <- dados |> filter(serie == "5ª Série")
plot(cor_test(dados_filtrado_serie, "perc_acertos_bebras", "perc_acertos_game"))

6º ano

dados_filtrado_serie <- dados |> filter(serie == "6ª Série")
plot(cor_test(dados_filtrado_serie, "perc_acertos_bebras", "perc_acertos_game"))

7º ano

dados_filtrado_serie <- dados |> filter(serie == "7ª Série")
plot(cor_test(dados_filtrado_serie, "perc_acertos_bebras", "perc_acertos_game"))

8º ano

dados_filtrado_serie <- dados |> filter(serie == "8ª Série")
plot(cor_test(dados_filtrado_serie, "perc_acertos_bebras", "perc_acertos_game"))

5. Modelo de regressao

Tipos de Dados (TD)

dados_cor <- dados |> select(tent_td1, tent_td2, tent_td3, tent_td)

#plot(correlation(dados_cor, partial = TRUE)) +
#  scale_edge_color_continuous(low = "#000004FF", high = "#FCFDBFFF")

Linguagem Programação (LP)

dados_cor <- dados |> select(tent_lp1, tent_lp2, tent_lp3, tent_lp, conq_lp1, conq_lp2, conq_lp3)

plot(correlation(dados_cor, partial = TRUE)) +
  scale_edge_color_continuous(low = "#000004FF", high = "#FCFDBFFF")