Skip to content
Learnomy

Quiz Statistics Report

The quiz statistics report gives instructors and admins the headline numbers for a quiz: how many times it has been taken, the average score, and the pass rate. It also exposes per-question numbers so you can see which questions are hardest.

What you can do

  • See how many graded attempts a quiz has had, right in the Quizzes list.
  • Read a quiz's average score and pass rate to judge whether it is too easy or too hard.
  • Drill into a single question to see how many times it was answered and its average score.
  • Spot questions that separate strong students from weak ones using a discrimination number (once a question has enough answers).
  • Pull the same numbers over the REST API to feed your own dashboard or an AI assistant.

Quiz statistics first view

How to use it

  1. Go to Learnomy > Quizzes. The list table shows one row per quiz with its Attempts count and its Passing score.

  2. Let students take and finish the quiz. Statistics are built only from attempts that have been graded, so an in-progress or ungraded (for example essay-pending) attempt is not counted yet.

  3. Read the Attempts column to see the total number of graded attempts for each quiz.

  4. For the full figures - attempt count, average score, and pass rate - request the quiz statistics endpoint (see For developers). These are the three numbers the report is built from.

  5. To find your hardest questions, request the per-question statistics for a question. A lower average score means the question is harder. Once a question has at least 10 graded answers, you also get a discrimination number that shows how well it separates strong students from weak ones.

Settings & options

There is nothing to switch on. The report is read-only and is computed live from quiz attempts, so it is always available once a quiz has graded attempts.

What the numbers mean and where they come from:

  • Attempts - the count of attempts on the quiz whose status is graded. In-progress and ungraded attempts are excluded.
  • Average score - the average of each graded attempt's percentage, rounded to two decimals.
  • Pass rate - the share of graded attempts that passed, as a percentage. An attempt passes when its score meets the quiz's Passing score (passing_score on the quiz), so changing the passing score changes the pass rate.
  • Per-question times answered / average score - counted from every response to that question across all attempts. Average score is shown as a percentage of the marks available.
  • Discrimination - a point-biserial value that only appears once a question has 10 or more graded responses, below which it is not statistically meaningful.

For developers

  • Quiz statistics: GET /learnomy/v1/quizzes/{id}/statistics. Returns quiz_id, attempt_count, avg_score, and pass_rate. Gated by the can_manage permission (instructor/admin).
  • The quiz numbers are computed in QuizAttempt::get_statistics( $quiz_id ), a single aggregate query over the attempts table filtered to status = 'graded' (COUNT(*) for attempts, AVG(percentage) for average score, SUM(passed) for the pass count).
  • Per-question statistics: GET /learnomy/v1/questions/{id}/statistics. Returns question_id, times_answered, avg_score_pct, and discrimination (null until 10+ responses). Gated by can_read.
  • The per-question numbers are computed in QuestionResponse::get_statistics( $question_id ); the discrimination value is calculated in the questions controller's calculate_discrimination().
  • The same data is exposed as an ability, learnomy/get-quiz-analytics (category learnomy-reporting), described as per-quiz attempt/pass statistics plus per-question difficulty. It takes a quiz_id and is permission-checked against manage access on that quiz.

Related