1

我创建了一个结合 mchoice 和 num 的完形填空题。但是我不能在 Moodle 中导入问题,因为它说 错误导入问题无效的嵌入式答案(完形填空)问题(其中一个答案的分数应该是 100%,所以这个问题有可能获得满分。)。 如果我把它变成一个单一的 mchoice 问题(删除 num 问题)或者我把它变成一个单一的 num chestion(删除 mchoice 部分),它就可以工作。我在 r-exams.org 上找不到这样的例子,这就是我转向这里的原因。

这是我的代码:

```{r data generation, echo = FALSE, results = "hide"}
library(exams)
Fragen=data.frame(
  Fragen=c(
    "Vergleich Schlachtgewicht (g) männlicher und weiblicher Hühner (Hähne/Hennen) der gleichen Linie.",
    "Untersuchung der Anzahl Insektenarten, welche auf unterschiedlichen Feldern vorkommen (Magerwiese, Klee, je 10 Felder).",
    "Untersuchung Sulfatgehalt (mg) bei Wasserproben aus der Limmat. Die Proben wurden an zwei unterschiedlichen Stellen entnommen (Limmatquai, Werdinsel, während 14 Tagen)",
    "Untersuchung Kürbisgewicht (kg) bei Düngung mit Gülle oder Kompost"),
  Stichprobe1=c("Hahn","Magerwiese","Limmatquai","Guelle"),
  Stichprobe2=c("Henne","Klee","Werdinsel","Kompost"),
  mean1=c(2500,50,250,10),
  mean2=c(2000,20,200,12),
  sd1=c(300,20,50,5),
  sd2=c(300,10,40,5),
  n=c(20,10,14,16)
)
n=sample(4,1)

## DATA
x1=abs(round(rnorm(Fragen$n[n],Fragen$mean1[n],Fragen$sd1[n])))
x2=abs(round(rnorm(Fragen$n[n],Fragen$mean2[n],Fragen$sd2[n])))
datadf=data.frame(x1,x2)
names(datadf)=c(as.character(Fragen$Stichprobe1[n]),as.character(Fragen$Stichprobe2[n]))
write.csv(datadf, "stichproben.csv", row.names = FALSE, quote = FALSE)

alpha=0.05
ps1=shapiro.test(x1)$p.value
ps2=shapiro.test(x2)$p.value
pf=var.test(x1,x2)$p.value
if (ps1 > alpha & ps2 > alpha) {
  if (pf > alpha) {
    p=t.test(x1,x2,var.equal = TRUE)$p.value
  }else{
    p=t.test(x1,x2,var.equal = FALSE)$p.value
  }
}else{
  p=wilcox.test(x1,x2)$p.value
}
p
msol=c(ps1>alpha & ps2>alpha, pf>alpha,TRUE)
msol
```

Question
========

`r Fragen$Fragen[n]`

Die Daten sind im File [stichproben.csv](stichproben.csv). 

Answerlist
----------
* Die Stichproben sind normalverteilt
* Die Varianzen sind homogen
* Die Stichproben sind unabhängig
* Führe den am besten geeigneten Test durch und kopiere den p-Wert ins Feld:

Solution
========

```{r solutionlist, echo = FALSE, results = "asis"}

```

Meta-information
================
exname: t-Test unabhaengig
extype: cloze
exsolution: `r mchoice2string(msol)`|`r format(p)`
exclozetype: mchoice|num
extol: `r format(0.01*p)`
4

1 回答 1

1

新答案(编辑:2020-06-07)

R-Forge (2.4-0) 上的当前 R/exams 开发版本已得到改进,以更好地支持问题中的mchoice元素cloze。在 Moodle 中运行你exams2moodle("stichproben.Rmd")会产生这样的练习:

Moodle 截图

警告:默认情况下,这使用 Moodle 的多项选择题评估规则,其中每个不正确的复选框都会消除一个正确的复选框。原则上,可以更改eval规则,exams2moodle()但这并不适用于所有设置。显然,如果 Moodle 百分比仅加起来大约为 100%,但不完全为 100%,则无法正确读取。我的阅读是这是 Moodle 中的一个错误。另见下文。

老答案 (2020-05-17)

在 Moodle 完形填空练习中,多个答案都正确的多项选择题有点棘手。我的理解是这些实际上在一定程度上是不允许的(参见https://moodle.org/mod/forum/discuss.php?d=213016上的讨论)。因此,我们只有包含单选元素但不包含多项选择元素的完形填空练习示例。

[注意:行话不是跨系统统一的。R/exams 中的“单选”在 Moodle 中被称为“多项选择,单选”。而 R/exams 中的“多项选择”在 Moodle 中被称为“多项选择,多项答案”。在这里,我使用 R/exams 使用的较短的行话。]

实际上,我认为 Moodle 仍然不支持选择题作为完形填空的元素。这也将与您收到的错误消息一致,即要求一个正确的答案产生 100%。

然而,事实证明,在某些条件下它确实有效。首先,您需要选择一个MULTIRESPONSE而不是MULTICHOICE输入exams2moodle()(即,这可以在 R/exams 端固定)。其次,正确答案的百分比需要加起来正好为100%。不幸的是,这与 Moodle 要求33.33333%作为 1/3 点的输入相冲突。我没有找到解决方案 - 除了避免恰好三个答案正确的情况。

例如,我将上面的代码复制到一个文件中stichproben.Rmd,然后运行:

set.seed(77)
exams2moodle("stichproben.Rmd", name = "stichproben", cloze = list(
  cloze_mchoice_display = "MULTIRESPONSE",
  eval = list(partial = TRUE, rule = "false2")
))

请注意,种子很重要,因为它导致选择题中只有三分之二是正确的。选择eval规则,如果选择不正确的项目,则减去 50% 的分数。这一切都在 Moodle 中按预期工作。

但是,使用set.seed(1)before 运行上面的代码会导致选择题中的所有三个项目都是正确的。然后我仍然收到您的问题中引用的错误消息,并且 - 如上所述 - 我不知道是否/如何避免这种情况。我没有找到解决办法。因此,就个人而言,我宁愿避免问题mchoice中的元素,而是cloze使用几个schoice元素。

于 2020-05-17T01:32:49.303 回答