Parametrização

Ideia

As variantes, de uma “Questão aleatória”, podem ser obtidas por parametrização recorrendo ao R para cálculos parciais

Exemplo de variante parametrizada

Questão cloze A média amostral \(\bar x\) da amostra

```{r}
set.seed(90)
amostra <- round(rnorm(5,8,1), 1)
amostra
```

é: {:NUMERICAL:=r mean(amostra):0.01} (use 2 casas decimais).

Estilos de parametrização

Consideram-se três estilos de parametrização pensados para o rmdmoodle:

  • planeadas (ou pré-calculadas, ou vectorizadas): todas as variantes são guardadas em listas ou vectores.
  • aleatorizadas: não se calculam previamente todas as variantes.
  • Parametrização R Markdown (via params): usa-se o sistema de parametrização do R Markdown.
  • Parametrização externa: de algum modo as variantes são construídas fora do R.

Questões planeadas

O autor usa “code chunks” para produzir valores pré-preparados para serem usados nas questões. Estes valores são armazenados em vetores, arrays, listas, ou algo que permita um acesso por índice inteiro.

O objetivo, e vantagem principal, é que há um “controlo” de todas as situações que chegam aos estudantes num momento de avaliação.

Neste exemplo, o autor pretende controlar a criação de 6 variantes de uma mesma questão usando 6 vetores pre definidos e visualizados para um eventual objetivo:

# Questão sobre um Capítulo 1 - CLOZE

```{r}
set.seed(10) #controlo pelo autor
amostra <- list(
  caso1 = round(rnorm(5, 0, 3), 1),
  caso2 = round(rnorm(5, 0, 3), 1),
  caso3 = round(rnorm(5, 1, 3), 1),
  caso4 = round(rnorm(5, 1, 3), 1),
  caso5 = round(rnorm(5, 2, 3), 1),
  caso6 = round(rnorm(5, 2, 3, 1))
)
media <- lapply(amostra,mean)
```

## Variante (`r VAR<- 1`)

Considere a amostra: `r amostra[[VAR]]`.

A média é {:NUMERICAL:=`r media[[VAR]]:0.05} (1 casa decimal).

### Feedback

Consulte a matéria do Capítulo 1.


## Variante (`r VAR<- 2`)

Considere a amostra: `r amostra[[VAR]]`.

A média é {:NUMERICAL:=`r media[[VAR]]:0.05} (1 casa decimal).

### Feedback

Consulte a matéria do Capítulo 1.


ETC, para as restantes 6 variantes

Neste exemplo, o autor “copia e cola” cada ## Variante o que pode ser aborrecido.
Porém, se for usado o método na secção Base de Questões, essa duplicação é gerada automaticamente.

Questões aleatorizadas

Nesta modalidade, os valores, ou textos, a serem guardados são produzidos sem armazenamento, e usados no momento da sua geração.

A vantagem é que não há perda de tempo a codificar o método de armazenamento.

Vale a pena especificar um valor para a “seed”, como set.seed(10), para que as questões sejam reproduzíveis.

# Questão sobre um Capítulo 1 - CLOZE

```{r}
set.seed(10) #controlo pelo autor
```

## Variante 1

```{r}
amostra <- round(rnorm(5, 0, 3), 1)
```

Considere a amostra: `r  amostra`.

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

### Feedback

Consulte a matéria do Capítulo 1.


## Variante 2

```{r}
amostra <- round(rnorm(5, 0, 3), 1)
```

Considere a amostra: `r  amostra`.

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

### Feedback

Consulte a matéria do Capítulo 1.


ETC, copiando o número de questões desejadas para exportação para o Moodle.

Parametrização via params

Esta forma de parametrização usando o mecanismo params do R Markdown pode ser misturada com as demais abordagens acima. Ao fazer “knitr” podem-se passar parâmetros que vão ser substituídos e modelar o resultado final do ficheiro R Markdown.

Assim, no momento da construção do ficheiro XML Moodle, podem passar-se parâmetros e estes vão produzir diferentes variantes sendo que este mecanismo pode ser misturado com as “questões planeadas” ou com as “questões aleatorizadas”.

(Mais texto para breve.)

A sintaxe tem duas partes. A primeira é no ficheiro da questão colocar os parâmetros na zona yaml (------). No exemplo seguinte há dois parâmetros: “GDIM” e “GNum”:

---
title: "c4-anova"
author: "os autoress"
date: "2025/05/21"
output: html_document
params:
  GDIM: 5
  GNum: 3
---

e estes parâmetros vão influenciar a construção da questão. Por exemplo, fixando o número de grupos (“GNum”) ou fixando a dimensão dentro de cada grupo (“GDim”).

Mais tarde, para construir o teste com novos parâmetros usa-se uma instrução como:

pq("c4-anova.Rmd", 
   "id02", "concept01", "concl01", "tab02", 
  params = list(GDIM = 3, GNum = 4)
)  

em que se definem os parâmetros a gosto: params = list(GDIM = 3, GNum = 4), 4 grupos de dimensão 3. Recorda-se que pq(...) designa “Questão planeada” mas podia ser numa questão aleatória rq(...).

Parametrização externa

Os valores para os parâmetros podem ser criados com um mecanismo externo. Para a produção dos testes Moodle, tais valores podem ser colocados manualmente num ficheiro R Markdown seguindo o formato da secção Teste Moodle ou através de um mecanismo de templating para substituição programática.