Перейти к содержимому


Результат по количеству ОТВЕЧЕННЫХ вопросов


Сообщений в теме: 9

#1 cep 3epo

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 59 сообщений

Отправлено 21 Май 2018 - 10:29

Есть учебный тест – банк тренировочных вопросов. Ученику предоставлена возможность ответить на любое количество вопросов: он может пропускать вопросы, возвращаться к предыдущим и завершить тест, не отвечая на все вопросы.

1) Как посчитать количество правильных ответов, исходя не из общего количества вопросов (максимально возможных баллов), а из количества отвеченных вопросов (возможных баллов за отвеченные вопросы)? К примеру, 9 правильных ответов из 12 отвеченных вопросов при максимально возможных 45 должны выдать результат в 75%, а не в 20%.
(То, что это возможно средствами Indigo, даже не сомневаюсь. Хорошо было бы к переменной «Количество вопросов» добавить что-то вроде «Количество отвеченных вопросов».)

2) Пока не все понятно в составлении формул, подобных Вашим. Что, кроме логических операторов, используется в формуле – JavaScript (см. пример теста 2)? Подскажите, в каком направлении двигаться.

#2 Administrator

    Менеджер проекта

  • Администраторы
  • 1 339 сообщений

Отправлено 21 Май 2018 - 13:45

Здравствуйте!

Это можно сделать так:

Изображение

Функция:
function A(){$c=0;foreach($_SESSION['test']['objects'] as &$o){if($o['type']==1&&isset($o['an'])&&$o['an'])$c++;}return $c;}

A() вернет нужное значение. В конце выражения перед строкой функции нужно обязательно поставить точку с запятой ;

Если считать относительно количества баллов, то будет так Балл(Корневая_группа)/A();

Изображение

#3 cep 3epo

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 59 сообщений

Отправлено 21 Май 2018 - 16:07

Что-то пошло не так...

Вторая функция (относительно количества баллов) работает.

А вот с первой (относительно отвеченных вопросов) – непонятка. Результат не выводится (снимок1).

Если же использовать обе шкалы в подсчете, то вообще аномалия: "белое пятно" в результатах (снимок2) и несоответствие в журнале (снимок3).

Тест прилагается.

Прикрепленные изображения

  • Прикрепленное изображение: Снимок1.PNG
  • Прикрепленное изображение: Снимок2.PNG
  • Прикрепленное изображение: Снимок3.PNG

Прикрепленные файлы



#4 Administrator

    Менеджер проекта

  • Администраторы
  • 1 339 сообщений

Отправлено 21 Май 2018 - 16:27

Несколько ошибок.

1. Нельзя дублировать имя функции в нескольких шкал. У Вас одно и тоже имя A() в двух шкалах. Я во второй шкале заменил A() на B()
2. В шаблоне результатов, куда подставляются результаты, у Вас внутри области подстановки, где имя шкалы жирный шрифт, а за пределами скобок обычный. В подстановках не должно быть разрывов форматирования. Я вставил этот кусок текста в квадратных скобках [] в блокнот и из блокнота вставил обратно, чтобы строка была единая.
3. Мой просчет, что количество отвеченных вопросов может быть 0, и тогда мы получаем деление на 0. Предлагаю следующее решение проблемы:

Изображение

Функция RES() в качестве аргумента принимает количество баллов за тест, смотрит на сколько вопросов дан ответ, если не на 0, то возвращает количество баллов на тест деленное на количество вопросов, иначе возвращает 0.

function RES($score){$answered=B(); return $answered ? $score/$answered : 0;}

function B(){$c=0;foreach($_SESSION['test']['objects'] as &$o){if($o['type']==1&&isset($o['an'])&&$o['an'])$c++;}return $c;}

Исправленный тест https://yadi.sk/d/atTXTAsM3WJ2iN

#5 cep 3epo

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 59 сообщений

Отправлено 22 Май 2018 - 14:40

Здравствуйте!

Я просто в восторге от возможностей программы! :lol: :lol: :lol:
Кончено, и от оперативности и отзывчивости администратора. Спасибо!

Протестировали работоспособность формулы, немножко усовершенствовав ее: для лучшего восприятия результата добавлено round(RES(……….)*100).

Все замечательно для тестов с одним вариантом выбора. Для прочих тестов обязательным условием является общий балл за весь тест, что не совсем соответствует задаче. Если же выбрать опцию «За каждый вариант ответа свой балл», в результатах получим и 200%, и 400%, и даже 700 – в зависимости от того, сколько вариантов в тесте имеют свой балл (соответственно, 2, 4 или 7 из х). Такая картина свойственна и для множественных тестов, и для тестов на сопоставление. Чем-то помочь можно? В принципе, устроила бы даже не универсальная формула, а конкретно для тестов на сопоставление – они все равно будут собраны в отдельную группу.

А вот то, что ху́же, так это то, что разгораются аппетиты ;) . Хотелось бы в настройках теста возможность галочки для отображения не только правильных, но и неотвеченных вопросов (то есть возможность пропущенные тесты при просмотре ошибок не отображать).

#6 cep 3epo

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 59 сообщений

Отправлено 22 Май 2018 - 17:28

Оцените-ка, пожалуйста, со знанием дела, будет ли решением проблемы, если при составлении теста сразу распределить единицу между всеми вариантами, например, по 0,25 балла для 4 вариантов выбора?

#7 Administrator

    Менеджер проекта

  • Администраторы
  • 1 339 сообщений

Отправлено 23 Май 2018 - 00:21

Не совсем понял проблему. Вы хотите, чтобы для множественного выбора и установки соответствия данные пользователем ответы считались не за весь вопрос как +1 ответ, а каждый выбранный вариант ответа считался как +1 ответ? Т.е. если в вопросе 4 варианта ответа множественного выбора (галочки) и пользователь защелкнул 2 варианта ответа, то нужно считать +2 к количеству данных ответов за тест?

#8 cep 3epo

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 59 сообщений

Отправлено 24 Май 2018 - 12:39

Вообще-то, работу множественных тестов мы особо не проверяли. Они хороши тем, что шанс угадать просто мизерный, а метод исключения, отсеивания лишних вариантов не работает. Чтобы решить множественные тесты, нужно хоть что-то понимать. Это большущий плюс для дидактики. Но, вместе с тем, тесты сложны при оценивании. Особенно, если возникает необходимость дать балл за к а ж д ы й правильный вариант. Оптимального подхода я пока что не вижу. Пока склоняюсь к том, чтобы давать 1 бал за весь ответ. Поэтому такие тесты у нас востребованы меньше и рассматриваются в основном как учебные. В контексте же темы их оценивание не актуально. Тем более, что Ваша формула при условии 1 балл за весь ответ работает.

Тесты установки соответствия по своей сути равны нескольким тестам в одном (у нас – четырем). Согласитесь: у них условия вопроса различны, а варианты ответов общие. Поэтому возникает необходимость дать балл все же за к а ж д ы й правильный вариант. К тому же на нашем внешнем независимом оценивании (украинском аналоге ЕГЭ) так и считают. У нас за вопрос такого формата (4 варианта для выбора из 5) можно заработать от 0 до 4 баллов. Если мы присваиваем по 1 баллу за 4 правильных ответа из 5 возможных, то по предложенной Вами формуле в случае позитивного ответа выводится результат в 400% (с учетом нашей поправки). Если распределить 100% между четырьмя вариантами – по 0,25 балла – результат всегда в пределах 100%. Распределение единицы между прочими вариантами было бы, как кажется, решением, если бы не одно «но»: за частичный ответ (например, 3 ответа правильных из 4, 1 неотвеченный) ученик получает 0%. Да и ответов он дал, оказывается, тоже 0 (снимок1). Для решения проблемы целесообразно было бы считать вопрос отвеченным уже при одном варианте ответа. Или, возможно внедрить опцию в настройке тестов (в навигации) «Запретить завершение вопроса до выбора всех вариантов» (данное предложение только ради озвучивания идеи). Это во-первых.

Во-вторых. Ученик попробовал дать ответы на 3 вопроса, состоящих из 4 вариантов (итого должно быть 0-12 баллов). Первый вопрос – все ответы правильные (заработано 4 балла). Второй вопрос – 2 правильных, 2 неправильных (2 балла). Третий вопрос – 2 правильных ответа, 2 пропущенных (2 балла). Правильных ответов в сумме 8. Каков должен быть общий итог? А это смотря как считать: если 8 из 10 – 80%. Если 8 из 12 – 67%. Сказать, что оказывается на самом деле? 100%! Так как программа видит 2 ответа, а не 3 (см. снимок2-4).

Как можно исправить ошибку?

Спасибо.

Не забывайте отдыхать! Если загружены работой, не торопитесь с ответом. Берегите себя.

Прикрепленные изображения

  • Прикрепленное изображение: Снимок1.PNG
  • Прикрепленное изображение: Снимок2.PNG
  • Прикрепленное изображение: Снимок3.PNG
  • Прикрепленное изображение: Снимок4.PNG

Прикрепленные файлы



#9 Administrator

    Менеджер проекта

  • Администраторы
  • 1 339 сообщений

Отправлено 28 Май 2018 - 16:15

Т.е. Вам нужно, чтобы каждый выбор в установке соответствии считался как +1 балл в шкалу отвеченных? Эту задачу можно решить, но решение будет сложным. Это выходит за пределы обычной тех. поддержки, здесь уже нужно потратить кучу времени на то, чтобы решить эту задачу. Ответа сходу у меня на этот вопрос нет, но я уверен, что это можно сделать. Другой вариант это делать каждый вопрос на установку соответствия в виде отдельного вопроса на установку соответствия по 1 фиксированной строке (вместо одиночного выбора для компактности). И эти все вопросы разместить в отдельную группу и указать совместную выдачу в виде списка. Получится так:

Изображение

Выглядит немного странно, но это абсолютно простой и рабочий вариант, который будет давать правильные расчеты по приведенным ранее формулам, при этом вопросы можно будет пропускать. Текст вопроса можно вынести в отдельное сообщение, тогда все прямоугольники будет выглядеть одинаково (особенности в первом не будет относительно наличия текста вопроса).

#10 cep 3epo

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 59 сообщений

Отправлено 06 Июнь 2018 - 15:27

Простите за задержку с обратной связью.

Благодарим за идею группирования вопросов на соответствие с единичной фиксированной строкой.
Вы были правы. В таком формате Ваша формула работает превосходно! Правда, для этого внесли маленькую поправку: поскольку для нас четыре отдельных вопроса являются одним цельным тестом на соответствие, то количество отвеченных вопросов разделили на 4:

A()/4;

function A(){$c=0;foreach($_SESSION['test']['objects'] as &$o){if($o['type']==1&&isset($o['an'])&&$o['an'])$c++;}return $c;}


А вот внешний вид проиграл, особенно при просмотре ошибок: наш «цельный» вопрос программа, увы, рассматривает как 4 отдельных.

Зато есть появился плюс: пояснения можно давать в зависимости от выбранного ответа (в нашем случае – 4 пояснения вместо 1 общего).

Поскольку поставленная задача не решилась ординарными средствами, думаю, тему можно на некоторое время отложить.

Огромное спасибо.




Ответить



  

Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных