我创建了一个结合mchoice和num的完形填空问题。但是我不能将问题导入Moodle,因为它说 导入问题时出错嵌入的答案(无效)问题无效(答案之一的分数应为100%,因此可以对该问题获得满分。) 如果我将其转换为单个mchoice问题(删除num问题),或者将其转换为单个num百姓(删除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)`
答案 0 :(得分:1)
R-Forge(2.4-0)上的当前R / exams开发版本已得到改进,以更好地支持mchoice
问题中的cloze
个元素。运行您的exams2moodle("stichproben.Rmd")
会在Moodle中进行如下练习:
注意事项:默认情况下,此选项将Moodle的评估规则用于多项选择题,其中每个不正确的复选框都会消除一个正确的复选框。原则上,可以在eval
中更改exams2moodle()
规则,但这不适用于所有设置。显然,如果Moodle百分比仅相加但不完全等于100%,则无法正确读取它们。我的读物是这是Moodle中的错误。另请参见。
在Moodle完形填空练习中,多项选择正确的多项选择题有些棘手。我的理解是,在一定程度上实际上是不允许这样做的(请参见https://moodle.org/mod/forum/discuss.php?d=213016上的讨论)。因此,我们仅提供包含单项选择元素而不是多选元素的完形填空练习的示例。
[注意:行话在各个系统之间不是统一的。 R / exams中的“单选”在Moodle中称为“单选,单答案”。 R / exams中的“多项选择”在Moodle中称为“多项选择,多项答案”。在这里,我使用R / exams使用的较短术语。]
实际上,我认为Moodle仍然不支持选择题作为完形填空练习的要素。这也将与您收到的错误消息保持一致,该错误消息恰好要求一个正确答案,产生100%的结果。
但是,事实证明,在某些条件下它实际上可以工作。首先,您需要在MULTIRESPONSE
中选择MULTICHOICE
而不是exams2moodle()
类型(即,可以将其固定在R /考试侧)。其次,正确答案的百分比总和必须精确到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)
运行上面的代码会导致多项选择题中的所有三个项目都是正确的。然后,我仍然收到您的问题中引用的错误消息,并且-如上所述,我不知道是否/如何避免这种情况。我没有找到解决方案。因此,就我个人而言,我宁愿避免在mchoice
个问题中使用cloze
个元素,而要使用多个schoice
个元素。