Histograma e box plot geral

## Grafico geral das notas
breaks <- 0:10
## table(cut(notas$S1, breaks = breaks,
##           right = FALSE, include.lowest = TRUE))
## Junta notas de todas as sabatinas em um único vetor
notas.all <- do.call(c, notas[, notas.col])
hist(notas.all, breaks = breaks, right = FALSE, include.lowest = TRUE,
     main = "Notas gerais", xlab = "Notas", ylab = "Frequência absoluta")
boxplot(notas.all, horizontal = TRUE, ylim = c(0, 10),
        col = "lightgray", add = TRUE)

Resumo dos cinco números, média, desvio-padrão, e número de provas não realizadas (NA):

statm <- function(x){
    res <- c(fivenum(x),
             mean(x, na.rm = TRUE),
             sd(x, na.rm = TRUE),
             sum(is.na(x)))
    names(res) <- c("Min", "Q1", "Q2", "Q3", "Max", "Média", "s", "NAs")
    return(res)
}
round(statm(notas.all), 2)
  Min    Q1    Q2    Q3   Max Média     s   NAs 
 0.00  4.90  7.00  8.90 10.00  6.46  2.53 58.00 

Resumos por prova

Box plot de cada prova

## Boxplots comparando as notas entre sabatinas
boxplot(notas[, notas.col], ylim = c(0, 10), ylab = "Notas")

Resumo dos cinco números, média, desvio-padrão, e número de provas não realizadas (NA):

round(apply(notas[, notas.col], 2, statm), 2)
         S1    S2    S3    S4    S5    S6
Min    3.00  0.20  0.80  0.00  1.00  3.00
Q1     7.50  3.50  4.50  2.50  5.50  6.00
Q2     8.50  5.50  6.00  5.00  7.00  7.50
Q3     9.00  8.00  7.00  7.50  9.00  9.00
Max   10.00 10.00 10.00  9.30 10.00 10.00
Média  8.07  5.78  5.69  5.08  6.61  7.29
s      1.62  2.78  2.33  2.77  2.34  2.09
NAs    5.00  9.00  8.00 14.00 11.00 11.00

Notas individuais

Aqui estão apenas as notas individuais de cada sabatina. Veja na seção abaixo as médias finais calculadas!

kable(notas[, c(1, notas.col)], align = "c")
Matricula S1 S2 S3 S4 S5 S6
20081784 6.0 NA 1.0 2.0 1.0 5.0
20095802 7.5 5.0 5.0 0.0 9.0 6.0
20102715 7.5 NA 2.0 NA 4.0 8.0
20104471 NA NA 1.5 0.0 6.0 9.0
20110014 8.5 3.5 5.5 2.5 NA 4.0
20111904 8.0 3.7 5.5 2.0 6.0 9.0
20112119 9.5 9.0 6.0 3.8 7.0 10.0
20113413 9.0 8.0 5.0 NA 8.0 6.0
20113699 10.0 10.0 6.0 5.0 9.0 5.0
20120643 4.5 0.2 3.5 NA NA NA
20122965 8.5 9.8 6.0 7.3 9.0 NA
20127158 NA 1.0 NA 1.5 7.0 6.0
20127164 7.0 2.5 5.5 NA 4.0 4.0
20127187 8.5 7.8 7.0 6.5 NA 6.0
20127188 10.0 8.7 6.0 5.0 5.0 9.0
20127193 7.0 3.5 5.5 1.5 7.0 10.0
20127195 3.0 3.2 3.5 2.0 3.0 9.0
20127199 7.5 5.5 4.0 2.5 9.0 9.0
20127335 9.0 NA 7.0 4.8 7.0 4.0
20130130 9.5 9.8 8.5 9.0 NA NA
20130438 9.0 6.5 8.0 9.0 9.0 6.0
20130617 9.0 5.5 NA NA NA NA
20130702 9.0 2.2 3.0 5.0 8.0 8.0
20130845 5.0 2.0 NA NA NA NA
20131405 8.8 7.5 8.0 8.0 9.0 10.0
20131728 9.0 3.7 0.8 4.5 5.0 5.0
20132175 9.0 7.5 NA 6.5 2.0 6.0
20132334 5.0 1.5 NA NA NA NA
20132674 NA NA NA NA NA NA
20133917 8.5 5.5 6.5 7.5 8.0 10.0
20134343 9.5 2.0 4.5 7.5 9.0 7.0
20134376 9.0 9.0 10.0 NA 7.0 4.0
20134627 8.5 4.0 4.5 6.5 4.5 7.0
20134720 6.0 7.5 6.0 NA NA 3.0
20134749 9.5 9.3 10.0 8.0 9.0 9.5
20135523 9.5 10.0 7.0 9.0 10.0 8.0
20135660 8.5 6.5 7.0 5.8 6.0 NA
20135661 9.0 3.0 8.0 NA 7.0 7.0
20135663 9.5 5.0 5.0 4.8 6.0 7.0
20135762 9.0 8.3 7.0 4.5 7.0 NA
20136482 8.5 NA 7.0 2.0 6.0 9.0
20136617 5.5 7.8 8.0 9.3 9.0 9.0
20137249 8.5 4.5 8.5 3.5 7.0 9.0
20137377 9.5 8.5 8.5 9.0 8.0 5.0
20137518 NA NA NA NA NA NA
20140179 NA NA NA NA NA NA
20140223 6.0 4.5 1.5 3.5 3.0 9.0
20142261 7.0 5.5 3.0 3.0 7.0 9.0
20142768 8.0 6.4 6.0 7.0 9.0 6.0
20143033 7.5 NA 4.5 NA 1.0 9.0
20160023 10.0 8.0 8.5 8.5 7.0 10.0

Resultados finais

Na tabela abaixo estão as notas consideradas para o cálculo da média final. Das 6 sabatinas, foram consideradas apenas as 4 com maiores notas (N1, N2, N3, N4). A frequência (F) é o percentual de presença.

A média (M) foi calculada com estas 4 notas, e já arredondada para cima nos seguintes casos:

Observação: a frequência só foi utilizada aqui para critério de arredondamento de nota. Mesmo que o aluno tenha frequência abaixo de 75%, é permitido fazer o exame.

A coluna de situação (S) indica se o aluno foi aprovado (Ap), ficou em exame (Ex), ou foi reprovado (Re).

##----------------------------------------------------------------------
## Tabela com as notas finais

## Ordena pelas maiores notas
notas2 <- apply(notas[, notas.col], 1, sort,
                decreasing = TRUE, na.last = TRUE)

## Numero de provas consideradas
np <- 4

## Tabela com as np maiores notas
notas2 <- t(notas2[1:np, ])

## Calcula a media
notas2 <- cbind(notas2,
                apply(notas2, 1, function(x) sum(x, na.rm = TRUE)/np))

## Insere o GRR
notas2 <- as.data.frame(cbind(notas$Matricula, notas2))
names(notas2) <- c("Matricula", paste0("N", 1:np), "Media")

## Insere a frequencia (Freq.rel2 de notas)
notas2$Freq.rel <- ceiling(notas$Freq.rel2*100)

## Arredonda a media para duas casa decimais
notas2$Media <- round(notas2$Media, 2)

## Regras para ser aprovado
## 1) Se 6.5 <= MF < 7.0 E Freq >= 75 entao SOMA difer

## Cria nova coluna e condicoes
notas2$Media2 <- notas2$Media
cond.nota1 <- notas2$Media >=6.5 & notas2$Media < 7
cond.nota2 <- notas2$Freq.rel >= 75

## Soma as diferencas
notas2$Media2[cond.nota1 & cond.nota2] <-
    notas2$Media2[cond.nota1 & cond.nota2] +
    difer(notas2$Media2[cond.nota1 & cond.nota2], 7)

## Regras para ir para exame
## 1) Se 3.5 <= MF < 4.0 E Freq >= 75 entao SOMA difer

## Cria condicoes
cond.exam1 <- notas2$Media >=3.5 & notas2$Media < 4

## Soma as diferencas
notas2$Media2[cond.exam1 & cond.nota2] <-
    notas2$Media2[cond.exam1 & cond.nota2] +
    difer(notas2$Media2[cond.exam1 & cond.nota2], 4)

##----------------------------------------------------------------------
## BONUS: aqui tem uma aluna que acertou uma questao bonus e ficou com
## uma prova com nota '12'. Portanto, deveria distribuir essa nota entre
## as outras provas dela. Como as outras tambem eram quase 10, vou
## atribuir 10 para todas as provas dela.
## grr <- 20154966
## notas2[notas2$Matricula == grr, ]
## Como ja esta com 10 nas 4 maiores nao precisa fazer isso.
##----------------------------------------------------------------------

##----------------------------------------------------------------------
## Tabela final
notas.fim <- notas2[, 1:5]
notas.fim$M <- notas2$Media2
notas.fim$F <- notas2$Freq.rel
##----------------------------------------------------------------------
## Antes do exame (Ex)

## Cria a coluna Situacao
notas.fim$S <- "Ap"
notas.fim$S[notas.fim$M >= 4 & notas.fim$M < 7] <- "Ex"
notas.fim$S[notas.fim$M < 4] <- "Re"

## Mostra tabela
## kable(notas.fim, align = "c")

Após o exame: as notas dos exames estão na coluna E. A média final (MF) é a mesma para quem não fez exame, e é a média entre a média final (M) e a nota do exame (E) para quem fez exame. A média final arredondada (MFA) é a nota que será lançada no sistema. A coluna SF mostra a situação final dos alunos após o exame.

##----------------------------------------------------------------------
## Após exame (Ex)

## Insere notas do exame
notas.fim$E <- notas$Ex

## Calcula média final (MF), que é média da nota final com a nota do
## exame (apenas para os que ficaram de exame)
notas.fim$MF <- notas.fim$M
notas.fim$MF[notas.fim$S == "Ex"] <- (notas.fim$M[notas.fim$S == "Ex"] +
    notas.fim$E[notas.fim$S == "Ex"])/2
notas.fim$MF <- round(notas.fim$MF, 2)

## Calcula a média final arredonadada (MFA), que é a média multiplicada por
## 10 e arredondada para cima (é como será lançada no sistema)
notas.fim$MFA <- ceiling(notas.fim$MF*10)

## Cria a coluna Situacao final (SF), que indica a situação após exame
notas.fim$SF <- "Ap"
notas.fim$SF[notas.fim$MFA < 50] <- "Re"

## Mostra tabela
kable(notas.fim, align = "c")
Matricula N1 N2 N3 N4 M F S E MF MFA SF
20081784 6.0 5.0 2.0 1.0 4.00 85 Ex 4.5 4.25 43 Re
20095802 9.0 7.5 6.0 5.0 7.00 85 Ap NA 7.00 70 Ap
20102715 8.0 7.5 4.0 2.0 5.38 69 Ex 1.5 3.44 35 Re
20104471 9.0 6.0 1.5 0.0 4.12 50 Ex 3.0 3.56 36 Re
20110014 8.5 5.5 4.0 3.5 5.38 92 Ex 5.0 5.19 52 Ap
20111904 9.0 8.0 6.0 5.5 7.12 100 Ap NA 7.12 72 Ap
20112119 10.0 9.5 9.0 7.0 8.88 85 Ap NA 8.88 89 Ap
20113413 9.0 8.0 8.0 6.0 7.75 92 Ap NA 7.75 78 Ap
20113699 10.0 10.0 9.0 6.0 8.75 96 Ap NA 8.75 88 Ap
20120643 4.5 3.5 0.2 NA 2.05 65 Re NA 2.05 21 Re
20122965 9.8 9.0 8.5 7.3 8.65 100 Ap NA 8.65 87 Ap
20127158 7.0 6.0 1.5 1.0 4.00 75 Ex 6.0 5.00 50 Ap
20127164 7.0 5.5 4.0 4.0 5.12 100 Ex 3.0 4.06 41 Re
20127187 8.5 7.8 7.0 6.5 7.45 96 Ap NA 7.45 75 Ap
20127188 10.0 9.0 8.7 6.0 8.43 96 Ap NA 8.43 85 Ap
20127193 10.0 7.0 7.0 5.5 7.38 69 Ap NA 7.38 74 Ap
20127195 9.0 3.5 3.2 3.0 4.67 88 Ex 3.5 4.08 41 Re
20127199 9.0 9.0 7.5 5.5 7.75 100 Ap NA 7.75 78 Ap
20127335 9.0 7.0 7.0 4.8 7.00 96 Ap NA 7.00 70 Ap
20130130 9.8 9.5 9.0 8.5 9.20 85 Ap NA 9.20 92 Ap
20130438 9.0 9.0 9.0 8.0 8.75 92 Ap NA 8.75 88 Ap
20130617 9.0 5.5 NA NA 3.62 46 Re NA 3.62 37 Re
20130702 9.0 8.0 8.0 5.0 7.50 96 Ap NA 7.50 75 Ap
20130845 5.0 2.0 NA NA 1.75 42 Re NA 1.75 18 Re
20131405 10.0 9.0 8.8 8.0 8.95 96 Ap NA 8.95 90 Ap
20131728 9.0 5.0 5.0 4.5 5.88 58 Ex 3.5 4.69 47 Re
20132175 9.0 7.5 6.5 6.0 7.25 65 Ap NA 7.25 73 Ap
20132334 5.0 1.5 NA NA 1.62 46 Re NA 1.62 17 Re
20132674 NA NA NA NA 0.00 0 Re NA 0.00 0 Re
20133917 10.0 8.5 8.0 7.5 8.50 100 Ap NA 8.50 85 Ap
20134343 9.5 9.0 7.5 7.0 8.25 88 Ap NA 8.25 83 Ap
20134376 10.0 9.0 9.0 7.0 8.75 77 Ap NA 8.75 88 Ap
20134627 8.5 7.0 6.5 4.5 7.00 96 Ap NA 7.00 70 Ap
20134720 7.5 6.0 6.0 3.0 5.62 77 Ex 3.0 4.31 44 Re
20134749 10.0 9.5 9.5 9.3 9.57 92 Ap NA 9.57 96 Ap
20135523 10.0 10.0 9.5 9.0 9.62 96 Ap NA 9.62 97 Ap
20135660 8.5 7.0 6.5 6.0 7.00 88 Ap NA 7.00 70 Ap
20135661 9.0 8.0 7.0 7.0 7.75 85 Ap NA 7.75 78 Ap
20135663 9.5 7.0 6.0 5.0 7.00 85 Ap NA 7.00 70 Ap
20135762 9.0 8.3 7.0 7.0 7.83 92 Ap NA 7.83 79 Ap
20136482 9.0 8.5 7.0 6.0 7.62 88 Ap NA 7.62 77 Ap
20136617 9.3 9.0 9.0 8.0 8.82 92 Ap NA 8.82 89 Ap
20137249 9.0 8.5 8.5 7.0 8.25 58 Ap NA 8.25 83 Ap
20137377 9.5 9.0 8.5 8.5 8.88 96 Ap NA 8.88 89 Ap
20137518 NA NA NA NA 0.00 0 Re NA 0.00 0 Re
20140179 NA NA NA NA 0.00 42 Re NA 0.00 0 Re
20140223 9.0 6.0 4.5 3.5 5.75 77 Ex 0.0 2.88 29 Re
20142261 9.0 7.0 7.0 5.5 7.12 92 Ap NA 7.12 72 Ap
20142768 9.0 8.0 7.0 6.4 7.60 96 Ap NA 7.60 76 Ap
20143033 9.0 7.5 4.5 1.0 5.50 77 Ex 4.5 5.00 50 Ap
20160023 10.0 10.0 8.5 8.5 9.25 96 Ap NA 9.25 93 Ap

Número de alunos em cada situação:

addmargins(table(notas.fim$S))

 Ap  Ex  Re Sum 
 33  11   7  51 
addmargins(table(notas.fim$SF))

 Ap  Re Sum 
 36  15  51 

Gráfico de barras com os percentuais por situação:

par(mfrow = c(1, 2))
barplot(prop.table(table(notas.fim$S))*100,
        xlab = "Situação", ylab = "Frequência (%)",
        main = "Antes do exame")
barplot(prop.table(table(notas.fim$SF))*100,
        xlab = "Situação", ylab = "Frequência (%)",
        main = "Após o exame")

par(mfrow = c(1, 1))

Licença Creative Commons 4.0

Este conteúdo está disponível por meio da Licença Creative Commons 4.0