How we compute

We write R. Every analysis, every tier.

Not because it's fashionable — because R is the language statistics was built in. When you ask us a question, an agent writes real R, executes it against your data in a sandboxed container, and an independent verifier recomputes the answer before it reaches you. Then we hand you the source.

The methods live where they were born

Most statistical methods are published, peer-reviewed, and first implemented in R. Its libraries aren't ports or approximations — they're frequently written by the statisticians who developed the method, and scrutinized by the people who review it.

That matters when the answer has to hold up. A survival model, a mixed-effects fit, a Holm correction across a family of tests — in R these are one well-documented call with decades of literature behind them, and defaults chosen by people who argued about them in journals.

Hypothesis testing
t.test, aov, chisq.test — with the assumption checks and corrections built in, not bolted on.
Modeling
lm, glm, survival — diagnostics, confidence intervals, and residual analysis are first-class, not afterthoughts.
Multiplicity
p.adjust — Holm, BH, and friends, because testing twenty things and reporting the best one isn't analysis.
Structure
prcomp, kmeans, factanal — the reference implementations, with the conventions statisticians expect.

Code you can hand to a statistician

Every report ships with the exact R that produced it — not pseudocode, not a summary of the approach. The analysis code appendix renders the source in full, with the reasoning written into the comments.

#' COMPUTE — mean cost per usage row by model
#' Cost per row is the honest comparison here: totals would just
#' reflect how many rows each model happens to have logged.
  df <- df[!is.na(df$cost_usd), , drop = FALSE]   # drop=FALSE: 1-col frames stay frames
  model_avg <- tapply(df$cost_usd, df$model, mean, na.rm = TRUE)

From a real delivered report. Prose comments become documentation; the code stays executable.

Because it's ordinary R against ordinary data, your analyst can read it, disagree with it, adapt it, or run it themselves. That's a different relationship than "trust the black box."

Written once, verified independently, run the same way forever

An AI writing fresh code on every request gives you a different program each time — and a different answer. We do the opposite: the R is written once, checked, and becomes a durable analysis you own.

A separate verifying agent recomputes the headline numbers straight from your raw data — with its own code, never the build's — and sends the work back if anything disagrees.

Only after that independent recomputation agrees does the report reach you. Then it's fixed: same data in, same numbers out, this month and next year. More on reproducibility →

Sandboxed, seeded, and disposable

Your R executes in an isolated container with fixed random seeds and no network access. Nothing about your data leaves that box, and every stochastic step — a bootstrap, a clustering init, a train/test split — lands identically on re-run.

This is the part people underestimate: reproducibility isn't just about keeping the code. It's about pinning the environment and the randomness too.

See the R for yourself.

Run an analysis and open the code appendix — the whole script, yours to keep.

Start an analysis Browse real reports →