Skip to content

kqc-real/SUS

Repository files navigation

SUS Analysis

This directory contains a Jupyter Notebook for calculating and interpreting the System Usability Scale (SUS).

Brief Overview

  • SUS-Analyse.ipynb — Main notebook: loads a Google Forms CSV export (or a synthetic CSV), maps columns to Q1..Q10, normalizes the items, calculates per-participant SUS scores (0–100), outputs interpretations, and generates an interpretive distribution diagram.
  • sus_google_forms_export.csv — Example/sample data, may be generated or read by the notebook.
  • sus_score_distribution_interpreted.png — Interpretation plot generated by the notebook (histogram + interpretation bands).

Essentials

  • Normalization: Positive items (Q1, Q3, Q5, Q7, Q9): normalized value = response - 1; Negative items (Q2, Q4, Q6, Q8, Q10): normalized value = 5 - response. Result: 10 values 0–4 → sum 0–40 → ×2.5 → SUS 0–100.
  • Interpretation (conventional thresholds, Sauro & Lewis):
    • < 51: Unacceptable (F)
    • 51–67.99: Marginal (D)
    • 68–73.99: OK (C)
    • 74–80.29: Good (B)
    • ≥ 80.3: Excellent (A)

How to use the notebook (locally)

  1. Open the notebook in JupyterLab / Jupyter Notebook or Visual Studio Code (with Jupyter extension).
  2. If using real Google Forms data: export the responses as CSV and save as sus_google_forms_export.csv in the same folder as the notebook. The notebook automatically attempts to map columns (robust mapping fallback is implemented).
  3. Alternatively: run the cell that calls generate_synthetic_sus_csv(n=..., mean=..., sd=...) to generate a synthetic test file.
  4. Execute the cells sequentially (imports → generator/CSV → mapping → calculation → plot). The key cells are commented.

Short terminal commands (optional)

  • Run notebook automatically and save results (requires jupyter):
jupyter nbconvert --to notebook --execute SUS-Analyse.ipynb --inplace --ExecutePreprocessor.timeout=600

Dependencies

  • Python 3.10+ recommended
  • Required packages (imported in notebook): pandas, numpy, seaborn, matplotlib, pathlib, re.
  • In the provided notebook kernel environment, many packages are already installed. Use a virtual environment if needed and install missing packages with pip/conda.

Output / Artifacts

  • sus_google_forms_export.csv — Input/sample data (can be overwritten by generator)
  • sus_score_distribution_interpreted.png — Visualization with interpretation bands

Further / Notes

  • By default, rows with missing responses in Q1..Q10 are removed (dropna). Alternatively, "imputation" is possible — briefly: missing item values are replaced with plausibly estimated substitute values (e.g., Pro-Rating: scaling up the answered items to 10 items; or Multiple Imputation to account for uncertainty).
  • Examples/Recommendation:
    • Few missing items (e.g., ≤1 per participant): Pro-Rating (fast, practical).
    • Multiple missing items or many affected cases: Multiple/Iterative Imputation (e.g., MICE) or data quality measure.
    • The specific method should be documented; the notebook does not implement imputation automatically.
  • The notebook includes a robust map_column_names() function that attempts to map long Google Forms question texts to Q1..Q10. Adjustments are possible if your formulations differ significantly.

Contact

  • For questions or change requests: briefly describe what output or behavior you want to change.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published