Base de Questões

Ideia

Usufruir de uma base de questões, com alíneas, para criar um novo teste, escolhendo questões e que alíneas vão estar no teste.

Duas maneiras de pensar na aleatoriedade :

Uma questão planeada

Numa “questão planeada” todas as variantes são pré-calculadas, são pensadas no momento de criação do teste e, como tal, em número finito sendo este sempre indicado na variável VARCOUNT <- 6 (neste exemplo, podem ser produzidas 6 variantes). Uma questão planeada obriga ao uso de listas ou vetores onde se armazenam valores e textos necessários a cada variante. Por hábito, usa-se esta variável VAR <- 1 para especificar qual é a variante a ser produzida quando se faz o “knitr”.

O R Mardkown seguinte é um modelo de questão planeada.

---
title: "c1-descritiva-planeada"
author: "rmdmoodle"
date: "2024/05/21"
output: html_document
---

Objetivo de avaliação: Capítulo 1 - Estatística Descritiva

Questão de variantes planeadas: predefinem-se
todos os casos a serem sorteados pelos estudantes 
no momento do teste.


# código


"""{r echo=FALSE, results=FALSE}

# Obrigatório no método de variantes planeadas
VAR         = 1  # Faz knitr com a variante escolhida em VAR
VARCOUNT    = 3  # Total de variantes

# Avoid scientific notation in all document
options(scipen = 999)

# No geral, não mostra "code chunks"
knitr::opts_chunk$set(echo = FALSE) 

# Fixar as variantes produzidas
set.seed(11)

# Dimensão das amostras (quantidade em VARCOUNT)
dimX <- c(4, 5, 6)

# Inventa amostras (quantidade em VARCOUNT)
amostra <- list(
  round(rnorm(dimX[1], 8, 2),1),
  round(rnorm(dimX[2], 10, 2),1),
  round(rnorm(dimX[3], 12, 2),1)
)


# Tabelas e matrizes bem expostas no Moodle
library(kableExtra)


# Produz uma "R matrix" para ficar bem no Moodle
create_matrix <- function(v) {
  # "v" é a variante 1, 2, 3, 
  
  matriz_linha <- matrix(amostra[[v]], ncol = dimX[v])
  
  rownames(matriz_linha) <- "volume (em m3)"
  
  # Não é necessário
  #colnames(matriz_linha) <- as.character(seq(1,dimX[v]))
  
  return(matriz_linha)
}
"""



# enredo 


Considere a seguinte variável aleatória:

**X** : Volume (em \(m^3\)) ocupado por uma acácia com 50cm de altura

e a amostra

"""{r echo=F}
create_matrix(VAR) %>%
  kbl() %>%
  kable_styling() %>%
  kable_paper(full_width = FALSE)
"""


# Pedir a média (Variante `r VAR`) - "média"

A média amostra é: {:NUMERICAL:=`r mean(amostra[[VAR]])`:0.1} (1 casa decimal)



# Pedir o desvio-padrão (Variante `r VAR`) - "desvio-padrão"

O desvio padrão corrigido é: {:NUMERICAL:=`r sd(amostra[[VAR]])`:0.1} (1 casa decimal)



# Pedir a dimensão da amostra  (Variante `r VAR`) - "dimensão"

A dimnensão da amostra é: {:NUMERICAL:=`r dimX[[VAR]]`:0}


# "conceito1"

A média amostral é uma medida de {:MULTICHOICE_S:=localização central\~%-25%dispersão central\~%-25%localização relativa\~%-25%dispersão relativa} (desconta 25% do valor se errar).

Uma questão aleatória

Numa “questão aleatória” não ocorre pré-calculo. Cada nova variante pedida, em número ilimitado, tem um gerador aleatório a produzir valores.

O R Mardkown seguinte é um modelo de questão aleatória.

---
title: "c1-descritiva-aleatoria"
author: "rmdmoodle"
date: "2024/05/21"
output: html_document
---

Objetivo de avaliação: Capítulo 1 - Estatística Descritiva

Questão de variantes aleatórias.


# código


"""{r echo=FALSE, results=FALSE}

# Avoid scientific notation in all document
options(scipen = 999)

# No geral, não mostra "code chunks"
knitr::opts_chunk$set(echo = FALSE) 

# Fixar as variantes produzidas
# em número infinito.
set.seed(11)

# Dimensão das amostras (quantidade em VARCOUNT)
dimX <- sample(x = c(4, 5, 6), size = 1)

# Inventa amostras (quantidade em VARCOUNT)
amostra <- round(rnorm(dimX, 8, 2), 1)

# Tabelas e matrizes bem expostas no Moodle
library(kableExtra)

# Produz uma "R matrix" para ficar bem no Moodle
create_matrix <- function() {

  matriz_linha <- matrix(amostra, ncol = dimX)
  
  rownames(matriz_linha) <- "volume (em m3)"
  
  # Não é necessário
  #colnames(matriz_linha) <- as.character(seq(1,dimX))
  
  return(matriz_linha)
}
"""



# enredo 


Considere a seguinte variável aleatória:

**X** : Volume (em \(m^3\)) ocupado por uma acácia com 50cm de altura

e a amostra

"""{r echo=F}
create_matrix() %>%
  kbl() %>%
  kable_styling() %>%
  kable_paper(full_width = FALSE)
"""


# Pedir a média - "média"

A média amostra é: {:NUMERICAL:=`r mean(amostra)`:0.1} (1 casa decimal)



# Pedir o desvio-padrão - "desvio-padrão"

O desvio padrão corrigido é: {:NUMERICAL:=`r sd(amostra)`:0.1} (1 casa decimal)



# Pedir a dimensão da amostra  - "dimensão"

A dimnensão da amostra é: {:NUMERICAL:=`r dimX`:0}


# "conceito1"

A média amostral é uma medida de {:MULTICHOICE_S:=localização central\~%-25%dispersão central\~%-25%localização relativa\~%-25%dispersão relativa} (desconta 25% do valor se errar).

Organização

É frequente uma questão ser composta de um enredo e alíneas sobre esse enredo. Esta base de questões segue esse esquema com uma condição: as alíneas serem independentes, ou de algum modo, grupos de alíneas serem independentes entre si.

A estrutura de ficheiros, que segue a ideia da imagem, baseia-se numa pasta raiz e subpastas com questões por capítulos:

em que

  1. Cada ficheiro R Markdown, por exemplo “c4-anova-1fator-com-dados.Rmd”, tem uma questão definida por um enredo e alíneas.
  2. Cada alínea tem um nome que a identifica. No caso de questão mencionada, o RSTudio mostra as alíneas no “outline” do ficheiro Rmd:

Pode ser usado um sistema de controlo de versões (por exemplo, github) tornando a gestão acessível aos autores.

Criar um teste

Num pasta de testes procede-se assim:

#install.packages("rmdmoodle")

library(rmdmoodle)

# Indica onde está a base de questões com alíneas
set_exercise_root( "~/banco_de_questoes")

# Create an exam from exercises.
rmdexam("exame-para-amanha.Rmd",
        pq("cap3/c3-estimativa.Rmd", "alinea01", "alinea04"),
        pq("cap4/c4-anova-1fator-com-dados.Rmd", "id01", "concept01") )

Neste código o novo teste, desigando por exame-de-amanha.Rmd, contém duas questões. Uma sobre estimativa e outra sobre anova, e respectivas alíneas selecionadas.

  • pq(...) designa “planned question” (ver )