An interactive course, reference textbook, and real dataset — all built around one dissertation's worth of data. Learn hierarchical regression, PLS-SEM, multiple imputation, and more. Then reproduce every example yourself in R.
11 modules. Sliders, scatter plots, clickable regression blocks. Every concept animated with your dissertation's actual numbers.
10 chapters. Every technique explained with equations, worked examples from the UCA data, and the engineering analogies that make it click.
Synthetic n=167 dataset matching the dissertation's correlation structure. Step-by-step R guide: imputation, hierarchical regression, t-tests, visualisation.
This entire resource — course, textbook, data guide, dataset and R script — is open source. Fork it, adapt it for your own study or teaching. Swap in your own data. Change the colour scheme. Add modules. Build something better.
# Clone the repository $ git clone https://github.com/todd427/stats-course.git $ cd stats-course # Install dependencies $ npm install added 142 packages in 4s # Start local dev server $ npm run dev VITE v5.x ready in 312ms ➜ Local: http://localhost:5173/ ➜ Network: use --host to expose # Build for production $ npm run build dist/ ready — deploy to Cloudflare Pages, Netlify, or Vercel
src/App.jsx — the interactive coursepublic/book.html — the textbookpublic/data.html — data guidepublic/data/ — CSV + R scriptpublic/index.html — this page
App.jsx with your own. Each module's data is at the top of its component. Swap the CSV and update the R script. The colour theme is in CSS variables — one block to change everything.
npm run build, output dist. Done. Free tier handles any plausible academic traffic.
This resource grew out of a practical problem: the statistical methods used in a cyberpsychology dissertation — hierarchical regression, PLS-SEM, multiple imputation — are poorly served by existing introductory texts, which either assume too much mathematical background or too little domain context.
The approach here is different. Every concept is anchored to a real research question: does AI use predict cyber-aggression, above and beyond moral disengagement? The answer — a meaningful null — turns out to be a better teaching example than a clean positive result would have been.
The dataset is synthetic but statistically faithful. The R script is annotated to be read, not just run. The course is built to be felt, not just watched. Take what's useful. Improve what isn't. The repo is open.