Inspiration

A lot of students run experiments, compare two groups, and see a difference, but that does not automatically mean the effect is real.

I wanted to build something that makes statistical significance visual and understandable instead of hiding everything behind formulas.

That became Null, a small computational research tool for testing whether an observed difference could reasonably happen by chance.

What it does

Null lets you enter measurements from two experimental groups and immediately analyzes the difference between them.

It calculates:

Mean and median Standard deviation Difference in means Welch's t-test p-value 95% confidence interval Cohen's d effect size An empirical permutation test

The main feature is the permutation test.

Null combines both groups, randomly reshuffles the observations thousands of times, splits them back into groups, and recalculates the difference each time.

This creates a simulated null distribution showing what differences we would expect if there were actually no effect.

The real observed result is then compared against that distribution.

Instead of just displaying a p-value, Null lets you actually see how unusual the result is.

How I built it

Null is built with Next.js, TypeScript, React, and Tailwind CSS.

The statistical engine is written directly in TypeScript and runs locally without requiring an external AI API or backend database.

The core pipeline is:

Experimental Data ↓ Observed Difference ↓ Combine Both Groups ↓ Thousands of Random Permutations ↓ Simulated Null Distribution ↓ Compare Observed Difference ↓ Empirical P-Value + Effect Size

I kept the statistics logic separate from the interface so the calculations can be tested and extended independently.

The app also generates a plain-English explanation from the calculated statistics so students can understand what the result actually means.

Challenges

The biggest challenge was making the permutation test both statistically useful and fast enough to feel instant in the browser.

I also wanted to avoid creating another tool that simply outputs a number with no explanation.

The visualization became an important part of the project because it turns an abstract concept like a null distribution into something users can immediately understand.

Another challenge was clearly separating statistical significance from effect size. A result can be statistically significant without being practically important, so Null displays both.

What I learned

Building Null made me understand permutation testing much more deeply.

Instead of only applying a formula, you can computationally simulate the world where the null hypothesis is true and directly measure how often chance produces something as extreme as your real experiment.

I also learned that statistical tools become much more useful when the methodology is visible instead of hidden.

What's next

I would like to expand Null with:

CSV dataset uploads Bootstrap confidence intervals ANOVA Regression analysis Statistical power analysis Larger dataset support More interactive visualizations Exportable research reports

Null is not meant to replace proper experimental design or expert statistical analysis. It is designed to make hypothesis testing easier to understand and explore.

Built With

Share this project:

Updates