如何手动给考试/问题评分?

时间:2020-11-02 13:42:20

标签: r r-exams

我想做什么:

我想在以下过程中使用r-exams

  1. 为学生提供pdf格式的电子考试(使用exams2pdf(..)
  2. 让学生上传带有答案的excel文件
  3. 使用(使用eval_nops(...))对答案进行评分

我的问题:

调用函数eval_nops()是在r-exams中手动评分问题的首选方法吗?

如果不是,则首选哪种方式?

我尝试过的事情:

我知道exam2nops()函数,并且它会返回一个.RDS文件,其中存储了正确的答案。因此,我基本上有了我需要的东西。但是,我发现该过程并不是很简单,因为正确的答案被深深地埋在RDS文件中。

1 个答案:

答案 0 :(得分:5)

概述

您是正确的,除了Moodle或Canvas等标准学习管理系统(LMS)之外,没有其他可用于管理考试/评分的系统。R/ exams确实为评分提供了一些基础exams_eval()。这可以通过Google表单等工具进行补充。下面我以关于exams_eval()的“事实”开始,尽管这有点技术性。但随后我也提供了有关此类方法的一些评论。

使用exams_eval()

让我们考虑一个具体的例子

eval <- exams_eval(partial = TRUE, negative = FALSE, rule = "false2")

表示您希望部分选择功劳能够获得部分学分,但每个项目的总分不得为负。正确打勾的框产生1 /#正确点,而错误打勾的框1 /#false。唯一的例外是,只有一个错误的项目(然后会取消所有所有分),然后使用1/2。

结果对象eval是具有输入参数(partialnegativerule)和三个功能checkanswer(),{{1}的列表},pointvec()。想象一下您有正确的答案模式

pointsum()

正确和错误打勾的相关点为:

cor <- "10100"

因此,对于以下答案模式,您将得到:

eval$pointvec(cor)
## pos neg
## 0.5000000 -0.3333333

仍然需要将后者乘以分配给该练习的总分。对于数字答案,您只能获得100%或0%:

ans <- "11100"
eval$checkanswer(cor, ans)
## [1] 1 -1 1 0 0
eval$pointsum(cor, ans)
## [1] 0.6666667

类似地,字符串答案是正确还是错误:

eval$pointsum(1.23, 1.25, tolerance = 0.05)
## [1] 1
eval$pointsum(1.23, 1.25, tolerance = 0.01)
## [1] 0

锻炼元信息

要获取给定练习的相关信息,您可以从所有eval$pointsum("foo", "foo") ## [1] 1 eval$pointsum("foo", "bar") ## [1] 0 接口返回的嵌套列表中访问元信息:

exams2xyz()

例如,您可以为第x <- exams2xyz(...) 个练习的第metainfo个随机复制提取i,如下:

j

其中包含正确的x[[i]][[j]]$metainfo $solution以及$type等。当然,这有点长且不方便交互键入,但应足够容易以编程方式循环浏览。例如,$tolerance就是基于nops_eval()文件的,该文件完全包含.rds中的信息。

在没有完整的LMS的情况下管理考试

在这里,我通常的建议是尝试利用您大学的服务(如果有的话)。是的,带宽/稳定性等可能存在问题。但是,如果您正在运行自己的系统,则可以完全相同(在此完成)。具体来说,可以在此处找到有关Moodle与PDF考试的讨论:

如果我要在LMS之外进行考试,我会使用HTML,而不使用PDF。与HTML相比,在HTML中嵌入其他信息(数据,链接等)要容易得多。此外,可以在移动设备上更轻松地查看HTML。

要收集答案,某些R /考试用户使用Google表格,请参见: https://R-Forge.R-project.org/forum/forum.php?thread_id=34076&forum_id=4377&group_id=1337。其他人对此感兴趣使用xlearnrhttp://www.R-exams.org/general/distancelearning/#going-forward

但是,关于隐私,如果其中任何一项比使用大学的LMS更好,我将感到非常惊讶。