Russian Qt Forum
Ноябрь 22, 2024, 23:00 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2] 3 4   Вниз
  Печать  
Автор Тема: Расчёт процента правильных ответов  (Прочитано 41135 раз)
voral
Гость
« Ответ #15 : Апрель 08, 2011, 09:34 »

Да надо прикинуть на конкретных цифах....

Как вариант. Вычитать из процента правильных процент неправильных в рамках каждого отдельного вопроса. Это у нас получится процент правильности ответа. Потом эти значения от всех ответов сложить.

Т.е. в вашем примере получиться (лучше навеное не в%,а в коэффициентах):
1 вопрос 1/1 (павильно) - 0/1 (непавильно) = 1
2. вопрос 0/1 (павильно) - 1/1 (непавильно) = 0

Т.е. по итогам теста ((1+0)/2)  * 100% = 50


Если есть третрий вопрос имеющий 2 правильных и один неправильный варианта ответа: отметили 1 павильно и 1 непавильно
1 вопрос 1/1 (павильно) - 0/1 (непавильно) = 1
2. вопрос 0/1 (павильно) - 1/1 (непавильно) = 0
3. вопрос  1/2 (павильно) - 1/1 (непавильно) = -0.5 .... мда не то
Т.е. по итогам теста ((1+0-0.5)/3)  * 100% =

Надо покумекать хотя есть идея один момент...

« Последнее редактирование: Апрель 08, 2011, 09:41 от voral » Записан
voral
Гость
« Ответ #16 : Апрель 08, 2011, 10:06 »

Итак.
Для каждого отдельного вопроса считаем разность как я предлагал. (в скобках то же но в коэффициентах - что наверное более правильно)
если 1 то ответ решен на 100% (1)
если 0 то на 50% (0.5)
если -1 то на 0% (0)

Школьный кус математики и получаем

в%: y=(50*x+50)
в коэф: у=(0.5х+0.5)

где x - получившаяся разность, а y  - оценка ответа на вопрос

В итоге вернемся к нашим баранам

1 вопрос 1/1 (павильно) - 0/1 (непавильно) = 1      y=1
2. вопрос 0/1 (павильно) - 1/1 (непавильно) = 0     y=0
3. вопрос  1/2 (павильно) - 1/1 (непавильно) = -0.5 y=0.5*-0.5+0.5=0.25
Т.е. по итогам теста ((1+0+0.25)/3)  * 100% = 75%

Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #17 : Апрель 08, 2011, 12:04 »

с поправкой, что вариантов "ВСЕ верные", или "ВСЕ неверные" не будет Улыбающийся Как вы думаете?
Если и будут то их можно свести к "регулярным". Напр. добавить в каждый пункт 2 checkbox ("все верные" и "все неверные") - ну придется немного допилить UI. Тогда тестируемый вообще не сможет ничего не отметить - и это правильно.
Записан
Nimbus
Гость
« Ответ #18 : Апрель 09, 2011, 05:56 »

voral, спасибо Улыбающийся
Теперь буду думать как это реализовать средствами MySQL, так как вся бизнес-логика на нём именно
Записан
brankovic
Гость
« Ответ #19 : Апрель 09, 2011, 10:02 »

voral, спасибо Улыбающийся
Теперь буду думать как это реализовать средствами MySQL, так как вся бизнес-логика на нём именно

звучит пугающе.. Может проще считать число d отклонений от правильного ответа? Потом давать пользователю за ответ (n - d) / n баллов, где n это число чекбоксов (т.е. все правильные отмечены - 1, все неправильные отмечены - 0, ни один не отмечен - b / n, где b число неправильных). Это на sql просто реализовать, типа select (count (*) - sum (cb == correct_cb)) / count (*) from .. group by question_id
Записан
voral
Гость
« Ответ #20 : Апрель 10, 2011, 21:01 »

voral, спасибо Улыбающийся
Теперь буду думать как это реализовать средствами MySQL, так как вся бизнес-логика на нём именно

На вскидку неглядя на структуру можно через хранимые процедуры, если версия позволяет (правда я в мускуле ими не пользовался).

Записан
Denjs
Гость
« Ответ #21 : Апрель 11, 2011, 02:18 »

гм... можно вопрос...
а уважаемый пишет методику или пришет программу?

потому что вопрос относится к методике оценки корректности тестов, и однозначного ответат тут нет.
Этот вопрос надо задавать тому, кто разрабатыват тест, а не к тому кто думает как бизнес-логику реализовывать...

Если вы пишете универсалную программу - то реализуйте и предложите заказчику несоклько вариантов расчета.
я вижу как минимум 2 варианта для вопросовс ответами "многие из многих":

1) обычно делают так: Если отмечен хоть один не верный, или не отмечен верный - весь ответ считать не верным. т.е. "0"..
Если отмечены верные ответы и только они - то верный ответ = "1".

2) считать коэффициент верности ответа по воличеству верных и не вреных галочек галочек.
Вес верной галочки = "+1/good", где good - количество верных галочек среди и предложенных на выбор.
Вес ошибочной галочки = "-1/bad", где bad - количество ошибочных галочек среди и предложенных на выбор.
Верность ответа - сумма весовых коэффициентов отмесенных галочек. т.е. за верную галочку - дают чать былла, за ошибочную - снимают.

И что не мало важно - надо считать не процент "верных ответов", а "количество набранных баллов из максимально возможных".
Как только вы начинаете считать баллы, а не верные ответы - то все становится немного проще для понимания.

_____________
теперь прочитал топик) да, это почти то что предложил Voral, но скажем так - со штрафными санкциями при отметке ошибочных.
для второго варианта могу предложить автору заранее предрассчитывать для каждого вопроса веса каждой галочки и загонять в таблички. потом надо будет их умнодить на галочки и сложить. Возможно даже средствами SQL получится...

Но я бы все-таки предложил сделать поддержку 2-х вариантов расчета "правилности". Подмигивающий потому что бывают случаи, что когда человек не знает всех вариантов отчета четко - то он лучше бы он сразу признал чтоничего не знает.)))
« Последнее редактирование: Апрель 11, 2011, 02:32 от Denjs » Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #22 : Апрель 11, 2011, 11:12 »

т.е. за верную галочку - дают чать былла, за ошибочную - снимают.
(следует понимать "часть балла"). Единственное что неоднозначно в этой задаче - сколько снимать? Мне кажется что сумма всех неправильных должна быть -1 (так же как сумма всех правильных +1). Пусть это и не идеально: напр только 1 неправильный из 5, пометил - получил 0, может это и не совсем то что хотелось. Но др. варианты имеют больше минусов
Записан
Denjs
Гость
« Ответ #23 : Апрель 11, 2011, 13:12 »

Цитировать
(следует понимать "часть балла")
Смеющийся истинно так)

Единственное что неоднозначно в этой задаче - сколько снимать?
В первом приближении - все однозначно.
Цитировать
-1/bad
Сумма весов всех верных галочек в вариантах ответа на один вопрос = 1
Сумма весов всех не верных галочек в вариантах ответа на один вопрос = -1
Т.е. если испытыемый отметил все галочки что у него есть - он гарантированно получит "0", за этот ответ.
Вес каждой одной верной(или не верной) галочки (в общем случае) равен весу другой галочки в этой категории (верные или не верные).

Пример.
Цитировать
Укажите простые числа :
[ ] один
[ ] два
[ ] три
[ ] четыре
[ ] Пять

Верные галочки:
два, три, пять. Всего 3. "Весовой коэффициент" каждой галочки = 0.33333

Не верные галочки
один, четыре. Всего 2. "Вес" каждой галочки = -0.5
(считаем, что единица "формально" к простым числам не относится. Ни к простым, ни к составным. Потому что ряд простых чисел начинается вроде с двойки. поправьте если что...)

Итого: в общем виде так: отметив
Цитировать
[V] один
[V] два
[V] три
[ ] четыре
[ ] Пять
студент получит:
(-0.5)+(0.333)+(0.333)=0.166 балла.

Округлим до сотых в большую сторону: получи 0.12 балла. (ошибка в сотых балла - многоне сыграет, но позволит сохранить "точность" в десятых балла.

но по хорошему - я бы предложил реализовать режим, когда автор теста, при составлении теста сам указывает за какие галочки сколько именно начислять и сколько снимать. Логика тестирования можетбыть оччень разной. В идеале - надо дать возможность скриптовой обработки данных галочки )))).
« Последнее редактирование: Апрель 11, 2011, 13:21 от Denjs » Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #24 : Апрель 11, 2011, 14:00 »

Я уже говорил, что считаю постановку вопроса не правильной. Если подвопросы объеденены в один вопрос, то существует только одна правильная комбинация, все остальные, по логике нужно считать ошибочными. Ну да ладно, это моё имхо))

По сути вопроса:
Я бы рассуждал так. Пусть имеется N подвопросов (чекбоксов). Всего вариантов ответов (комбинаций) 2^N. Из них один правильный. Значит неправильных 2^N-1.

Любой вариант ответа можно однозначно представить в виде числа в двоичной форме.
Например, пусть N = 2. Тогда всего 4 варианта:
00
01
10
11
Пусть правильному ответу соответствует число 01 (1). Назовём его exactAnswer = 01.
Юзер выбирает комбинацию, пусть userAnswer = 11 (3).
Проверяем пересекается ли в userAnswer с правильным exactAnswer:
exist = userAnswer & exactAnswer;
Если не пересекается exist == 0 и соответствующий бал просто 0
Если пересекается, как в нашем случае, то exist = 01. (не ноль!)

Последний шаг: Какправильно поставить бал, в случае если exist != 0, используя только значения exist, userAnswer и exactAnswer?
     
 
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #25 : Апрель 11, 2011, 14:14 »

Т.е. если испытыемый отметил все галочки что у него есть - он гарантированно получит "0", за этот ответ.
Кроме случая  все ответы верны (обсуждалось выше). А вообще это правильно - если он наугад отметил все - должен получить 0

Я уже говорил, что считаю постановку вопроса не правильной. Если подвопросы объеденены в один вопрос, то существует только одна правильная комбинация, все остальные, по логике нужно считать ошибочными.
Ну так удобно/легко программисту - но не пользователю  Улыбающийся  На такой тест мало кто может ответить, поэтому он может быть неэффективен
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #26 : Апрель 11, 2011, 14:21 »

Цитировать
Ну так удобно/легко программисту - но не пользователю  Улыбающийся  На такой тест мало кто может ответить, поэтому он может быть неэффективен
Ну это не сложно вовсе реализовать:
Цитировать
Последний шаг: Какправильно поставить бал, в случае если exist != 0, используя только значения exist, userAnswer и exactAnswer?
Нужно просто проверить число совпадений и поделить на общее число N.
Как в примере:
exactAnswer = 01
userAnswer = 11
N = 2, число совпадений n = 1
Общий бал = 1/2
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #27 : Апрель 11, 2011, 14:32 »

Нужно просто проверить число совпадений и поделить на общее число N.
Как в примере:
exactAnswer = 01
userAnswer = 11
N = 2, число совпадений n = 1
Общий бал = 1/2
Значит потыкав наугад, (или просто пометив все) тестируемый почти всегда имеет какое-то положительное сальдо? Сомнительно
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #28 : Апрель 11, 2011, 15:20 »

Нужно просто проверить число совпадений и поделить на общее число N.
Как в примере:
exactAnswer = 01
userAnswer = 11
N = 2, число совпадений n = 1
Общий бал = 1/2
Значит потыкав наугад, (или просто пометив все) тестируемый почти всегда имеет какое-то положительное сальдо? Сомнительно
Именно) А откуда вы знаете, потыкал он наугад, или это был его обдуманный выбор? Каков критерий?
Поэтому я и говорю, что такая постановка не корректна. И если подвопросы объединяют в один вопрос, то это подразумевает, что правильный ответ должен быть всегда один.
В противном случае, их (подвопросы) с таким же успехом можно было бы оформить как независимые самодостаточные отдельные вопросы.
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #29 : Апрель 11, 2011, 17:52 »

Всё равно не понимаю смысла вводить отрицательные баллы и тому подобные сложности с весами..
Зачем?

Чем не устраивает вариант просто считать совпадения и окончательный балл расчитывать как отношение числа совпадений к общему числу подвопросов?
Пример:
Пусть N = 3, имеется 8 вариантов ответов:
000
001
010
011
100
101
110
111
Пусть правильный ответ 011. тогда каждому варианту ответа можно сопоставить свой балл:
000 балл = 1/3
001 балл = 2/3
010 балл = 2/3
011 балл = 1
100 балл = 0
101 балл = 1/3
110 балл = 1/3
111 балл = 2/3

Или я что то не так понимаю?
 

 
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Страниц: 1 [2] 3 4   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.057 секунд. Запросов: 23.