Desktop application for one-way ANOVA (Completely Randomized Design) calculations, built for students at Lilongwe University of Agriculture and Natural Resources (LUANAR), Malawi.
# LUANAR STATISTICS ANOVA
Desktop application for one-way ANOVA (Completely Randomized Design) calculations, built for students at Lilongwe University of Agriculture and Natural Resources (LUANAR), Malawi.
## Authors
- PETER BUTAWO
---
## Table of Contents
1. Tech Stack
2. ANOVA Algorithm
3. How Calculations Are Done
4. Project Structure
5. Data Flow
6. Usage Instructions
---
## Tech Stack
| Layer | Technology | Purpose |
|---|---|---|
| **UI Framework** | Svelte 3 | Reactive component-based UI |
| **Desktop Shell** | Electron | Cross-platform desktop wrapper |
| **Module Bundler** | Rollup | Compiles Svelte + JS into production bundle |
| **CSS Preprocessor** | Sass/SCSS | Styling with variables, nesting, mixins |
| **Routing** | svelte-spa-router | Client-side single-page routing |
| **Packaging** | electron-builder, electron-packager | Builds Windows/macOS/Linux distributables |
| **Language** | JavaScript (ES6+) | No TypeScript; no external statistics libraries |
All ANOVA computations are **hand-rolled JavaScript** — no external statistics or math libraries (e.g., no jStat, mathjs, or simple-statistics).
---
## ANOVA Algorithm
The application implements **One-Way ANOVA (Completely Randomized Design)** — a statistical technique for testing whether the means of three or more independent groups (treatments) differ significantly.
### Mathematical Model
$$x_{ij} = \mu + \tau_i + \varepsilon_{ij}$$
Where:
- \(x_{ij}\) = the \(j\)-th observation in the \(i\)-th treatment
- \(\mu\) = overall population mean
- \(\tau_i\) = effect of the \(i\)-th treatment
- \(\varepsilon_{ij}\) = random error (assumed ~ N(0, \(\sigma^2\)))
### Notation
| Symbol | Meaning | Calculation |
|---|---|---|
| \(k\) | Number of treatments | Count of groups |
| \(N\) | Total observations | Sum of all group sizes |
| \(T_i\) | Total of treatment \(i\) | \(\sum_{j=1}^{n_i} x_{ij}\) |
| \(G\) | Grand total | \(\sum_{i=1}^{k} T_i\) |
| \(n_i\) | Size of treatment \(i\) | Count of …