cybertools/knowledge/survey
2020-03-03 15:22:13 +01:00
..
__init__.py new knowledge.survey (questionnaire) package 2013-01-16 08:38:34 +01:00
interfaces.py separate attribute for texts in response object 2015-04-21 12:41:39 +02:00
questionnaire.py avoid zero division error when data are missing 2015-08-13 16:09:33 +02:00
README.txt give groups as parameters to team calculation to make evaluation independent of user data 2015-04-21 10:04:52 +02:00
tests.py fix tests/doctests according to current ZTK and BlueBream versions 2019-04-26 17:42:10 +02:00

==========================
Surveys and Questionnaires
==========================

Let's first set up a  questionaire.

  >>> from cybertools.knowledge.survey.questionnaire import Questionnaire, Question
  >>> quest = Questionnaire()

  >>> qu01 = Question(quest)
  >>> qu02 = Question(quest)
  >>> qu03 = Question(quest)
  >>> qu01.revertAnswerOptions = True


Question-related Feedback Items
===============================

We now assign result elements with the questions of this questionnaire.

  >>> from cybertools.knowledge.survey.questionnaire import FeedbackItem
  >>> fi01 = FeedbackItem('fi01')
  >>> fi02 = FeedbackItem('fi02')
  >>> fi03 = FeedbackItem('fi03')

  >>> qu01.feedbackItems = {fi01: 0.8, fi03: 0.2}
  >>> qu02.feedbackItems = {fi01: 0.3, fi02: 0.7, fi03: 0.1}
  >>> qu03.feedbackItems = {fi01: 0.2, fi03: 0.9}


Responses
---------

  >>> from cybertools.knowledge.survey.questionnaire import Response
  >>> resp01 = Response(quest, 'john')
  >>> resp01.values = {qu01: 2, qu02: 1, qu03: 4}

It's possible to leave some of the questions unanswered.

  >>> resp02 = Response(quest, 'john')
  >>> resp02.values = {qu01: 2, qu03: 4}


Evaluation
==========

Now let's calculate the result for resp01.

  >>> res = resp01.getResult()
  >>> for fi, score in res:
  ...     print fi.text, score
  fi03 4.1
  fi01 2.7
  fi02 0.7

  >>> res = resp02.getResult()
  >>> for fi, score in res:
  ...     print fi.text, score
  fi03 4.0
  fi01 2.4

Grouped feedback items
----------------------

  >>> from cybertools.knowledge.survey.questionnaire import QuestionGroup
  >>> qugroup = QuestionGroup(quest)
  >>> quest.questionGroups.append(qugroup)
  >>> qugroup.questions = [qu01, qu02, qu03]
  >>> qugroup.feedbackItems = [fi01, fi02, fi03]

  >>> res = resp01.getGroupedResult()
  >>> for r in res:
  ...     print r['feedback'].text, round(r['score'], 2), r['rank']
  fi02 0.58 1

  >>> res = resp02.getGroupedResult()
  >>> for r in res:
  ...     print r['feedback'].text, round(r['score'], 2), r['rank']
  fi03 0.75 1

Team evaluation
---------------

  >>> resp03 = Response(quest, 'mary')
  >>> resp03.values = {qu01: 1, qu02: 2, qu03: 4}

  >>> resp01.values[qugroup] = resp01.getGroupedResult()[0]['score']
  >>> resp03.values[qugroup] = resp03.getGroupedResult()[0]['score']

  >>> teamData = resp01.getTeamResult([qugroup], [resp01, resp03])
  >>> teamData
  [{'average': 0.6666...}]