Оцените экзамен в Moodle с индивидуальной схемой оценки - PullRequest
0 голосов
/ 07 января 2019

Я пытаюсь реализовать простую схему оценки, используя exams, но ни один из вариантов, кажется, не делает то, что я хотел:

Есть 5 вариантов ответа. Я хочу дать 0,2 балла за все отмеченные правильные ответы и все немаркированные неправильные ответы и ноль баллов за все немаркированные правильные ответы и отмеченные неправильные ответы. Таким образом, задание может дать 0, .2, .4, .6, .8 или 1 балл.

Я знаю, что эта схема оценки может иметь некоторые недостатки, но я уравновешиваю их другими способами.

Мне удалось реализовать это, когда я проводил отсканированные экзамены, потому что я мог использовать функцию расстояния между строками, чтобы определить, сколько символов различается в двух строках, которые кодируют ответы и решения. Но сейчас я хочу сделать это в Moodle, поэтому не могу контролировать оценку.

Вот несколько примеров, которые я пробовал:

ee <- exams_eval(partial = TRUE, rule = "all", negative = FALSE)
ee$pointsum("01111", "10000") # should be 0 and returns 0
ee$pointsum("01111", "10001") # should be .2 but returns 0
ee$pointsum("11111", "10001") # should be .4 and returns .4
ee$pointsum("00000", "11001") # should be .4 but returns 0
ee$pointsum("11011", "00011") # should be .6 but returns .5
ee$pointsum("11111", "10101") # should be .6 and returns .6
ee$pointsum("11001", "10001") # Should be .8 but returns .66
ee$pointsum("00000", "00001") # should be .8 but returns 0
ee$pointsum("11001", "11001") # Should be 1 and returns 1
ee$pointsum("00000", "00000") # Should be 1 but returns 0

Предыдущие примеры дают тот же результат при использовании rule = "false" или rule = "false2", или rule = "true". При использовании rule = "none" это единственное изменение:

ee$pointsum("01111", "10001") # should be .2 but returns 0.25

Есть ли способ реализовать вышеупомянутую схему оценки в Moodle?

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Пакет R / экзаменов в настоящее время не поддерживает желаемую схему оценки, потому что Moodle не поддерживает ее. Если посмотреть на документы Moodle по адресу https://docs.moodle.org/36/en/Moodle_XML_format#Multiple_choice, вы увидите, что схемы частичного кредитования всегда работают следующим образом:

  • Не отмечать / кликать <answer> не дает никаких очков.
  • Пометка / щелчок по варианту ответа дает определенное fraction от общего количества баллов.

Следовательно, R / экзамены справляются с этим, назначая дробь 1 / # правильно для пометки / щелчка правильного ответа. Аргумент rule только определяет, какая часть вычитается при пометке / щелчке неправильного ответа. По умолчанию используется правило "false2", которое по существу вычитает 1 / # неверно. Например, элемент с 2 правильными и 3 неправильными ответами обрабатывается с помощью:

ee2 <- exams_eval(partial = TRUE, rule = "false2", negative = FALSE)
ee2$pointvec("11000")
##        pos        neg 
##  0.5000000 -0.3333333 

Когда вы используете rule = "all", тогда 100% баллов удаляются, если отмечен / нажат неправильный ответ:

ee <- exams_eval(partial = TRUE, rule = "all", negative = FALSE)
ee$pointvec("11000")
##  pos  neg 
##  0.5 -1.0 

Существуют системы управления обучением, которые поддерживают более гибкие способы вычисления точек (например, в QTI это в принципе возможно), но я не думаю, что ваша конкретная схема может быть реализована в Moodle. (Если кто-то знает больше, чем документы Moodle выше, дайте мне знать!)

(Вы сказали, что знаете о недостатках вашей схемы оценки - что, конечно, достаточно справедливо. Однако, просто для протокола, если кто-то еще читает это: лично я не очень люблю схему, которую вы предлагаете. Даже если в среднем каждый вариант ответа является правильным с вероятностью 50%, учащиеся могут получить в среднем 50% баллов, либо всегда выбирая все варианты ответа, либо всегда выбирая ни один из вариантов ответа. может даже стать выше, если вероятность каждого варианта отклоняется от 50%. Следовательно, это создает странные стимулы для некоторых студентов ... по крайней мере, для студентов, изучающих бизнес и экономику, которых я обычно преподаю.)

0 голосов
/ 07 января 2019

Как ни странно, нет комбинации exams_eval параметров, которые бы дали желаемую схему. Это можно проверить, проверив все 20 комбинаций. Например,

combs <- expand.grid(partial = c(TRUE, FALSE), negative = c(TRUE, FALSE),
                     rule = c("false2", "false", "true", "all", "none"),
                     stringsAsFactors = FALSE)
sapply(1:nrow(combs), function(n) {
  ee <- exams_eval(partial = combs[n, 1], negative = combs[n, 2], rule = combs[n, 3])
  ee$pointsum("11001", "10001")
})
#  [1]  0.6666667 -1.0000000  0.6666667  0.0000000  0.6666667 -1.0000000  0.6666667  0.0000000
#  [9]  0.6666667 -1.0000000  0.6666667  0.0000000  0.6666667 -1.0000000  0.6666667  0.0000000
# [17]  0.6666667 -1.0000000  0.6666667  0.0000000

Это особенно странно, потому что схема довольно проста - подсчет совпадений, который мы можем реализовать следующим образом:

pointsum <- function(correct, answer) {
  correct <- as.numeric(strsplit(correct, "")[[1]])
  answer <- as.numeric(strsplit(answer, "")[[1]])
  mean(correct == answer)
}

pointsum("01111", "10000") # should be 0
# [1] 0
pointsum("01111", "10001") # should be .2
# [1] 0.2
pointsum("11111", "10001") # should be .4
# [1] 0.4
pointsum("00000", "11001") # should be .4
# [1] 0.4
pointsum("11011", "00011") # should be .6
# [1] 0.6
pointsum("11111", "10101") # should be .6
# [1] 0.6
pointsum("11001", "10001") # should be .8
# [1] 0.8
pointsum("00000", "00001") # should be .8
# [1] 0.8
pointsum("11001", "11001") # should be 1
# [1] 1
pointsum("00000", "00000") # should be 1
# [1] 1
...