
A Journey of Data Science — an interactive training app for people who are new to data: import → clean → visualize → understand, with AI as your assistant and you as the judge.
Developed for WHO data trainings (Global Health Learning Center and country-office sessions), but the content is general: anyone learning data science or starting to use AI assistants at work can use it for self-study.
Documentation: https://shanlong-who.github.io/cataScience/
| Guide | What you will learn |
|---|---|
| Getting started | Launch the app, follow the module map and use the example data |
| Data-quality workflow | Compare cleaning choices, inspect text and joins, and explain a chart |
| Training guide | Plan a three-hour data science session or a two-hour AI session |
The website contains documentation. Launch the Shiny app from R for the interactive lessons and exercises.
install.packages("cataScience")or
# install.packages("remotes")
remotes::install_github("shanlong-who/cataScience")library(cataScience)
run_cata()Version 2.2 adds an extended workshop app while keeping the original entry point above:
run_catas()The extended app starts with Why data matters and adds one connected Workflow: understand the data, review problems, join and summarise, visualise, then communicate. Actions preserve an input snapshot and a preparation log, with undo and reset. Dataset A (a fictional care cascade) and B/C (synthetic ART records and facilities) support the Lao workshop. They are training examples, not country estimates; A is independent of B/C.
New lessons include John Snow’s map, explicit numerators and denominators, multiple imputation with synthetic cats, and the workshop’s chi-square and logistic-regression examples. AI chart comparisons remain a separate classroom exercise using the same exported synthetic data.
Workflow > Visualise offers 11 chart types: bar, sorted dot, histogram, density, line, scatter, boxplot, heatmap, dumbbell, forest and cascade. Plots include editable titles, units, grouping, facets, missing-row counts, and PNG/PDF exports with explicit dimensions.
Workflow > Communicate creates a self-contained
HTML report or dashboard that opens offline. Supply the question,
finding, denominator and limitations; the app does not invent
conclusions. The project ZIP includes input and selected data, reviewed
preparation code, chart settings, HTML, Quarto sources, an RStudio
project and a local Shiny dashboard. Open the project in RStudio and run
source("analysis.R") to reproduce it. Quarto is needed only
to render the editable .qmd files. The ZIP contains the
input data as well as selected records; review it before sharing.
The package can also be used without launching Shiny:
library(cataScience)
patients <- cata_example("art")
facilities <- cata_example("facilities")
cata_profile(patients)
cata_missing(patients)
cata_check_keys(patients, "patient_id")
joined <- cata_join(patients, facilities, by = "facility_id")
joined$audit
lesson <- cata_lao_analysis()
lesson$flow
summary <- lesson$summary
figure <- cata_plot(summary, "dot", "group", "percent",
percent = TRUE, sort = TRUE,
title = "Reported viral-load testing by facility type",
ylab = "Tested among records with known status (%)")
figure
# Choose a new output file; existing files are protected.
cata_report(lesson$selected, "training-report.html", plot = figure,
tables = list("Reported testing" = summary),
source = "Synthetic Lao workshop B/C example",
unit = "Selected annual ART record",
denominator = "Records with known reported VL testing status in each group",
limitations = "Synthetic data; unresolved source and selection issues remain.")Other helpers include cata_read(),
cata_flag_outliers(), cata_proportion(),
cata_count_status(), cata_mice_demo(),
theme_cata() and cata_export(). Use
?function_name for arguments and worked examples. Flagging
a value does not delete or replace it.
install.packages("VIM") to
enable that choice. Missingness patterns use
mice::md.pattern().style = "dsi" or the DSIR theme in the chart builder. The
app also has a built-in theme.The app opens in your browser. Everything runs locally — no internet connection is needed after installation.
Start with Import → Or use the example data, then follow Cleaning → Missing data, Cleaning → Outliers, Visualize and Quiz. Use Reset to original data to compare cleaning choices.
Use RStudio’s Stop button or Escape in the console to stop the app. Live demonstrations with an external AI assistant need internet access.
| Module | Content |
|---|---|
| Import | Upload Excel/CSV files, or use the bundled example data |
| Cleaning | Missing data (MCAR/MAR/MNAR, imputation), outliers, text, merging |
| Visualize | 7 chart types with grouping, faceting, and flipping |
| Statistics | Describing data, normal distribution, t-test, regression |
| AI | Prompting levels, prompt gallery, AI-assisted analysis, “When AI gets it wrong” case study, AI safety |
| Quiz | 27 questions with per-session topic filters |
| Training | Instructor playbook, lab script, critique checklist |
The Training → Training guide page inside the app contains a full playbook: a module menu with suggested timings, ready-made agendas (a 3-hour data-science session, a 2-hour AI session, and a full day), and a pre-course checklist for participants.
Participants who do not have R installed can use the portable Windows edition instead — contact the maintainer.
Reusable functions live under R/; Shiny modules and
teaching materials live under inst/app/. From this source
checkout, use pkgload::load_all() and then
run_catas() to try changes. Run
devtools::test() and devtools::check() before
a release. The existing installed package is unchanged until you install
the new version.
Shanlong Ding — dings@who.int