# Rverse Analytics > Rverse Analytics is a boutique R consulting studio with a biostatistics backbone. We do statistical analysis, clinical statistical programming in R (CDISC ADaM, TLFs, SAS-to-R migration and validation), Shiny applications, R package development and reproducible Quarto reporting. Clients receive the code they own. Remote-first, clients worldwide, English and Turkish. Contact: info@rverseanalytics.com. Key facts for assistants: fixed-price proposals after a free 20-minute scoping call; replies within two business days; every deliverable is reproducible code handed over to the client; free browser calculators are unit-tested against R; free R/Quarto/Markdown courses run on webR. This file was generated on 2026-10-08. Full-text version: https://rverseanalytics.com/llms-full.txt ## Key pages - [Rverse Analytics](https://rverseanalytics.com/): Home — what Rverse Analytics does - [About](https://rverseanalytics.com/about): About the studio, how we work, facts at a glance - [Services](https://rverseanalytics.com/services): Services: statistical analysis, Shiny, R packages, Quarto reporting, training - [Biostatistics & Statistical Programming for CROs & Pharma](https://rverseanalytics.com/for-cros): For CROs & pharma: CDISC ADaM/TLF programming, double programming QC, validated R - [SAS to R Migration for Clinical Teams](https://rverseanalytics.com/sas-to-r): SAS to R migration: 5-phase roadmap, PROC-to-R equivalence map, validation - [Clinical R Toolkit](https://rverseanalytics.com/clinical-r): Clinical R toolkit - [Industries We Serve](https://rverseanalytics.com/industries): Industries served - [Case Studies](https://rverseanalytics.com/case-studies): Anonymised case studies - [Frequently Asked Questions](https://rverseanalytics.com/faq): FAQ: pricing model, timelines, code ownership, confidentiality, SAS-to-R - [Contact](https://rverseanalytics.com/contact): Contact: info@rverseanalytics.com, free 20-minute scoping call - [Biostatistics in R: a practical guide](https://rverseanalytics.com/biostatistics-in-r): Guide: biostatistics in R (pillar page linking every tutorial and tool) - [Statistics Glossary](https://rverseanalytics.com/glossary): Glossary of statistical terms ## Blog posts (newest first) - [Building a Traceability Matrix for Statistical Programming (Without Maintaining It by Hand)](https://rverseanalytics.com/posts/traceability-matrix-statistical-programming): What a traceability matrix must link in a clinical programming project (SAP, specifications, programs, outputs, QC records), how to generate it from metadata in R instead of editing a spreadsheet, and how it supports a SAS-to-R equivalence report. - [From SAS Macros to R Functions: A Worked Conversion](https://rverseanalytics.com/posts/sas-macros-to-r-functions): A SAS summary macro converted step by step into a tested R function inside a package: parameter mapping, by-group handling, missing values, formatted output and unit tests. The pattern that makes a SAS-to-R migration maintainable. - [SAS to R Migration Roadmap: The Five Phases, What Each Delivers and What It Costs](https://rverseanalytics.com/posts/sas-to-r-migration-roadmap-5-phases): A phase-by-phase plan for moving clinical statistical programming from SAS to R: assessment, conversion, equivalence testing, documentation and sponsor/regulatory adoption. Deliverables, effort drivers and the mistakes that make migrations stall. - [Missing Values in SAS vs R: The Differences That Change Your Numbers](https://rverseanalytics.com/posts/missing-values-sas-vs-r): SAS has numeric missing (.) and 27 special missings that sort low and compare as the smallest value; R has NA that propagates and NULL that is not a value. How each behaviour affects filters, sorts, counts and derivations in a SAS-to-R migration, with runnable examples. - [Qualifying R Packages for Clinical Use with riskmetric and renv](https://rverseanalytics.com/posts/r-package-qualification-riskmetric): A repeatable procedure for approving R packages in a regulated environment: acceptance criteria, riskmetric scoring, running package test suites as operational qualification, pinning with renv, and the decision record an auditor expects. - [Dual Programming SAS vs R: Numerical Tolerance Rules That Survive QC](https://rverseanalytics.com/posts/sas-to-r-dual-programming-tolerance): How to compare SAS and R outputs at dataset and TLF level during a migration: which tolerances to use for p-values, estimates and percentages, how to automate the comparison in R, and how to classify every difference as explained, accepted or deviation. - [Why SAS and R Round Differently (and How to Make Them Agree)](https://rverseanalytics.com/posts/sas-vs-r-rounding-differences): SAS rounds half away from zero; R's round() rounds half to even and works on binary floating point. Here is exactly where the differences appear in clinical tables, how to reproduce SAS rounding in R, and which rule to write into your tolerance document. - [PROC FREQ, PROC MEANS and PROC UNIVARIATE in R: Side-by-Side Translations](https://rverseanalytics.com/posts/proc-freq-proc-means-in-r): The three SAS procedures behind most clinical summary tables, translated to base R and dplyr with matching output: frequencies and percentages with missing handling, by-group descriptive statistics, percentiles with SAS definitions, and the options that cause mismatches. - [R vs SAS for Clinical Trials in 2026: An Honest Comparison for Decision-Makers](https://rverseanalytics.com/posts/r-vs-sas-clinical-trials-2026): Where R and SAS actually differ for clinical statistical programming today: regulatory acceptance, validation burden, the pharmaverse ecosystem, talent, cost, and the risks of migrating or of not migrating. Written for biostatistics heads and QA leads rather than programmers. - [How to Write an R Validation Plan for Regulatory Submissions](https://rverseanalytics.com/posts/r-validation-plan-regulatory-submissions): A practical structure for validating R in a GxP clinical environment: scope and risk assessment, environment qualification with renv, package risk assessment with riskmetric, dual programming, traceability, deviation handling and the validation summary report. Templates described section by section. - [ADaM Derivations in R with admiral: a Mini ADSL, End to End](https://rverseanalytics.com/posts/adam-derivation-admiral-r): Derive an ADSL-style analysis dataset in R with the pharmaverse admiral package: treatment variables, analysis flags, age groups and time-to-event variables — every step traceable. - [Is R Accepted by the FDA? The State of R-Based Submissions](https://rverseanalytics.com/posts/fda-r-submissions-2026): What the R Consortium Submissions Working Group pilots actually demonstrated, why 'validated software' is a property of your process rather than a licence, and what a defensible R stack looks like for CROs. - [Clinical TLFs in R: gtsummary and rtables Side by Side](https://rverseanalytics.com/posts/tlf-tables-r-gtsummary-rtables): Produce clinical trial tables in R two ways: a demography Table 1 with gtsummary and an adverse-event summary with rtables — the pharmaverse package built for shell-faithful CSR layouts. - [Biostatistics datasets built into R (that you can explore in the browser)](https://rverseanalytics.com/posts/r-biostatistics-datasets): A guided tour of the clinical and biostatistics datasets that ship with R and its packages — infert, esoph, lung, pbc, birthwt, trial and the medicaldata collection — with what each is good for, and a browser playground to try them with no install. - [gtsummary for beginners: build a Table 1 from clinical data, step by step](https://rverseanalytics.com/posts/gtsummary-tutorial-table1): A gentle, hands-on gtsummary tutorial in R. Starting from a clinical trial dataset, we build a publication-ready Table 1 one verb at a time — then you can run it yourself in the browser. - [The Markdown cheat sheet (with a live editor)](https://rverseanalytics.com/posts/markdown-cheat-sheet): A compact Markdown syntax reference: headings, emphasis, lists, links, images, code, blockquotes and tables — with the rendered result beside each rule. - [Your Table 1, in one line, with gtsummary](https://rverseanalytics.com/posts/table1-baseline-characteristics-gtsummary): Baseline characteristics tables are the most-copied, most-error-prone table in clinical papers. gtsummary generates a publication-ready one — with the right summary and test per variable — from a single call. - [The Quarto YAML header, explained field by field](https://rverseanalytics.com/posts/quarto-yaml-header-explained): A practical tour of the Quarto YAML header: title, author, date, format, toc, theme, code-fold, execute and params — what each field does and how to avoid indentation errors. - [What to know before hiring an R consultant](https://rverseanalytics.com/posts/hiring-an-r-consultant): The questions that separate a one-off script from work your team can actually own: scope, reproducibility, code ownership and handover. - [One source, three deliverables: Quarto to Word, PDF and HTML](https://rverseanalytics.com/posts/quarto-to-word-pdf-html): How to render a single Quarto document to HTML, PDF and Word from one source file — including what each format needs and when to reach for it. - [Cohen's d and effect size in R](https://rverseanalytics.com/posts/cohens-d-effect-size-r): Why a p-value isn't enough, and how to compute and interpret Cohen's d effect size in R — the standardized measure of how big a difference between two groups really is. - [Sensitivity, specificity, PPV and NPV in R — and why prevalence changes everything](https://rverseanalytics.com/posts/diagnostic-test-accuracy-r): Diagnostic accuracy from a 2×2 table in base R: sensitivity, specificity, predictive values and likelihood ratios — plus the reason the same test looks brilliant in one clinic and useless in another. - [Build a website with Quarto](https://rverseanalytics.com/posts/build-a-website-with-quarto): How to turn a folder of Quarto documents into a full website — project structure, the _quarto.yml config, navigation, and one-command publishing to the web. - [Linear regression in R: how to read the output](https://rverseanalytics.com/posts/linear-regression-interpreting-output-r): Fit a linear regression in R with lm() and interpret every part of the summary — coefficients, p-values, R-squared and residuals — plus a tidy table with broom. - [PDF from Quarto with Typst — no LaTeX required](https://rverseanalytics.com/posts/quarto-pdf-with-typst): How to produce PDFs from Quarto using the Typst engine instead of LaTeX: faster renders, simpler setup, and clean control over page layout. - [R vs Python for statistical consulting: an honest take](https://rverseanalytics.com/posts/r-vs-python-statistical-consulting): Both are excellent. For inference-heavy, publication-bound statistical work, R still has an edge — and here is the specific, non-tribal reason why. - [Quarto vs R Markdown: what changed, and should you switch?](https://rverseanalytics.com/posts/quarto-vs-rmarkdown): A practical comparison of Quarto and R Markdown: what's the same, what's genuinely new, whether your .Rmd files still work, and when it's worth moving. - [Logistic regression in R: odds ratios and ROC/AUC, done right](https://rverseanalytics.com/posts/logistic-regression-odds-ratios-roc): A binary clinical outcome needs two things: adjusted odds ratios that answer 'what matters?' and an ROC/AUC that answers 'how well does the model discriminate?'. Here is the clean R workflow for both. - [Quarto code chunk options, explained](https://rverseanalytics.com/posts/quarto-chunk-options): A practical guide to Quarto chunk options: echo, eval, include, warning, message, output, and the figure options fig-cap, fig-width and label — with a live example. - [Cross-references in Quarto: figures, tables and sections](https://rverseanalytics.com/posts/cross-references-in-quarto): How to number and cross-reference figures, tables, equations and sections in Quarto with @fig-, @tbl- and @sec- labels, so your report's numbering is always correct. - [Chi-square test of independence in R](https://rverseanalytics.com/posts/chi-square-test-independence-r): Test whether two categorical variables are associated using the chi-square test in R — building the contingency table, running chisq.test, and knowing when to switch to Fisher's exact test. - [Why Welch's t-test should be your default](https://rverseanalytics.com/posts/welch-vs-student-t): A short simulation showing what unequal variances do to the classic Student's t-test — and why the Welch correction costs you almost nothing. - [Cox proportional hazards in R — and the assumption you must check](https://rverseanalytics.com/posts/cox-proportional-hazards-r): A hazard ratio is only meaningful if the proportional-hazards assumption holds. Fit a Cox model, report hazard ratios, then test the assumption with cox.zph() — the step too many analyses skip. - [One-way ANOVA in R with post-hoc tests](https://rverseanalytics.com/posts/one-way-anova-r-posthoc): Run a one-way ANOVA in R, then use Tukey's HSD to find which groups actually differ — with the multiple-comparison correction that keeps your error rate honest. - [ROC curve and AUC in R](https://rverseanalytics.com/posts/roc-curve-auc-in-r): How to draw a ROC curve and compute the AUC in R with the pROC package — measuring how well a model or test discriminates between two outcomes, with a confidence interval. - [Power analysis before data collection — in base R](https://rverseanalytics.com/posts/power-analysis-before-data): You don't need special software to plan a sample size. power.t.test() and a power curve answer the question in ten lines of R. - [Checking normality in R: Shapiro–Wilk and Q–Q plots](https://rverseanalytics.com/posts/checking-normality-r): How to check the normality assumption in R the right way — combining the Shapiro–Wilk test with a Q–Q plot, and why the plot usually matters more than the p-value. - [Analysing energy consumption time series in R](https://rverseanalytics.com/posts/energy-consumption-time-series-r): Metering data is a time series with structure hiding in plain sight. In R you can decompose electricity load into trend, weekly seasonality and noise — and read a weekday load profile straight off the data. - [t-test vs ANOVA: when to use which (with R)](https://rverseanalytics.com/posts/t-test-vs-anova): A t-test compares two groups; ANOVA compares three or more. See in R why they're the same test for two groups, and why you shouldn't run many t-tests instead of one ANOVA. - [Cronbach's alpha in R (reliability analysis)](https://rverseanalytics.com/posts/cronbachs-alpha-in-r): How to compute and interpret Cronbach's alpha in R with the psych package — measuring the internal consistency reliability of a questionnaire scale, and what the item statistics tell you. - [One template, fifty reports: parameterised Quarto in practice](https://rverseanalytics.com/posts/parameterized-quarto-reports): How we turn a single Quarto document into a batch of per-site or per-client reports with one line of R. - [Repeated-measures ANOVA in R](https://rverseanalytics.com/posts/repeated-measures-anova-in-r): How to run a repeated-measures ANOVA in R with aov() and an Error() term — the right way to compare three or more measurements on the same subjects — with a trajectory plot. - [Pearson vs Spearman correlation: which one, and when (in R)](https://rverseanalytics.com/posts/pearson-vs-spearman-correlation): Pearson measures linear association; Spearman measures monotonic association on ranks. A clear R example shows exactly when they disagree — and which to trust. - [Chi-square goodness-of-fit test in R](https://rverseanalytics.com/posts/chi-square-goodness-of-fit-in-r): Use the chi-square goodness-of-fit test in R to check whether observed counts match an expected distribution — is a die fair, do categories match expected proportions — with chisq.test. - [Confidence intervals explained, with an R simulation](https://rverseanalytics.com/posts/confidence-intervals-explained-r): What a 95% confidence interval really means — demonstrated by simulating repeated samples in R — plus how to compute intervals for a mean and a proportion. - [How to interpret a p-value (correctly), with R](https://rverseanalytics.com/posts/interpreting-p-values): What a p-value is, what it isn't, and a simulation in R that shows why p-values are uniform under the null hypothesis — the intuition most explanations skip. - [Write your ggplot2 theme once, use it everywhere](https://rverseanalytics.com/posts/one-ggplot-theme): A ten-line theme function is the cheapest branding investment an analytics team can make. Here is ours, and how to set it as a session default. - [Sample size calculation in R: t-tests, proportions and correlations](https://rverseanalytics.com/posts/sample-size-calculation-r): How to compute the sample size you need in R with power.t.test and power.prop.test — the four quantities that trade off, worked examples, and a power curve you can adapt. - [Two-way ANOVA in R](https://rverseanalytics.com/posts/two-way-anova-in-r): Run and interpret a two-way ANOVA in R with aov() — two factors plus their interaction — using the built-in ToothGrowth data, with an interaction plot. - [One-sample t-test in R](https://rverseanalytics.com/posts/one-sample-t-test-in-r): How to run and interpret a one-sample t-test in R with t.test() — testing whether a sample mean differs from a known value, plus the assumptions to check. - [Publication-quality Kaplan–Meier curves with survival + ggplot2](https://rverseanalytics.com/posts/kaplan-meier-ggplot2): The survfit object has everything you need; ggplot2 does the rest. A dependency-light recipe for survival curves you control completely. - [Standard deviation vs standard error: the difference, in R](https://rverseanalytics.com/posts/standard-deviation-vs-standard-error): Standard deviation describes the spread of data; standard error describes the precision of the mean. An R simulation shows why the standard error shrinks as your sample grows. - [How to read a boxplot (and make one in R)](https://rverseanalytics.com/posts/how-to-read-a-boxplot): What the box, whiskers, line and dots in a boxplot actually mean — median, quartiles, IQR and outliers — with a labelled ggplot2 example in R. - [Parametric vs non-parametric tests: how to choose (in R)](https://rverseanalytics.com/posts/parametric-vs-nonparametric-tests): When to use a t-test vs a Mann–Whitney, ANOVA vs Kruskal–Wallis, Pearson vs Spearman. A clear R example shows when non-parametric tests earn their keep. - [One-tailed vs two-tailed tests: which to use (with R)](https://rverseanalytics.com/posts/one-tailed-vs-two-tailed-tests): When to use a one-tailed versus a two-tailed test, why the choice must be made before seeing the data, and how each changes the p-value — shown in R. - [Type I vs Type II error, explained with an R simulation](https://rverseanalytics.com/posts/type-i-vs-type-ii-error): False positives (Type I) and false negatives (Type II) are the two ways a hypothesis test can be wrong. A short R simulation makes the trade-off — and the role of power — concrete. - [Z-scores explained (with R): standardising, percentiles and probabilities](https://rverseanalytics.com/posts/z-score-explained): What a z-score is, how it maps to a percentile, and how to compute z-scores and normal probabilities in R with pnorm and qnorm — the intuition and the code. - [Same correlation, wildly different data: always plot first](https://rverseanalytics.com/posts/same-correlation-different-data): Anscombe's quartet in tidy form — four datasets with identical summary statistics and completely different stories. A 50-year-old lesson that still gets ignored. ## Free statistics calculators (browser, verified against R) - [One-Way ANOVA Calculator](https://rverseanalytics.com/tools/anova-calculator): Free one-way ANOVA calculator: paste your groups (one per line) to get the full ANOVA table — sums of squares, degrees of freedom, mean squares, the F statistic, p-value and eta-squared. Matches R's aov. - [Binomial Probability Calculator](https://rverseanalytics.com/tools/binomial-probability-calculator): Free binomial probability calculator: for n trials with success probability p, find P(X = k), P(X ≤ k) and P(X ≥ k), plus the mean and standard deviation. Matches R's dbinom and pbinom. - [Chi-Square Test Calculator](https://rverseanalytics.com/tools/chi-square-calculator): Free chi-square test of independence calculator: paste a contingency table and get the chi-square statistic, degrees of freedom, p-value and expected counts. Matches R's chisq.test. - [Cohen's d Effect Size Calculator](https://rverseanalytics.com/tools/cohens-d-calculator): Free Cohen's d calculator: compute the standardized effect size between two groups from raw data or summary statistics, with Hedges' g correction, a 95% confidence interval and interpretation. - [Cohen's Kappa Calculator (Inter-Rater Agreement)](https://rverseanalytics.com/tools/cohens-kappa-calculator): Free Cohen's kappa calculator for inter-rater agreement. Paste the agreement matrix of two raters and get kappa, its 95% confidence interval, observed vs expected agreement, and a Landis-Koch interpretation. Matches R. - [Confidence Interval Calculator](https://rverseanalytics.com/tools/confidence-interval-calculator): Free confidence interval calculator for a mean (t-based) or a proportion (Wald and Wilson). Enter your summary statistics and confidence level to get the interval instantly. - [Correlation Calculator](https://rverseanalytics.com/tools/correlation-calculator): Free Pearson correlation calculator: paste paired data to get the correlation coefficient r, r-squared, the t-statistic, a p-value and a scatter plot — all in your browser. - [Descriptive Statistics Calculator](https://rverseanalytics.com/tools/descriptive-statistics-calculator): Free descriptive statistics calculator: paste your data to get mean, median, standard deviation, variance, quartiles, IQR, range, standard error and more — instantly, in your browser. - [Diagnostic Test Calculator (Sensitivity, Specificity, PPV, NPV)](https://rverseanalytics.com/tools/diagnostic-test-calculator): Free diagnostic accuracy calculator: enter a 2x2 table to get sensitivity, specificity, PPV, NPV and likelihood ratios with 95% confidence intervals, plus how predictive values change with prevalence. - [Fisher's Exact Test Calculator](https://rverseanalytics.com/tools/fishers-exact-test-calculator): Free Fisher's exact test calculator for a 2x2 table: get the exact two-sided p-value and odds ratio — the right test for small samples where chi-square is unreliable. Matches R's fisher.test. - [Linear Regression Calculator](https://rverseanalytics.com/tools/linear-regression-calculator): Free simple linear regression calculator: paste paired data to get the slope, intercept, R-squared, the regression equation, significance and a fitted-line plot. Matches R's lm(). - [Markdown Previewer & Editor](https://rverseanalytics.com/tools/markdown-previewer): Free live Markdown editor: type Markdown on the left and see the formatted HTML preview on the right, instantly. Supports headings, bold, lists, links, code blocks and GitHub tables. Nothing is uploaded — it all runs in your browser. - [Odds Ratio, Relative Risk & NNT Calculator](https://rverseanalytics.com/tools/odds-ratio-relative-risk-calculator): Free 2x2 calculator for odds ratio, relative risk, absolute risk reduction, relative risk reduction and number needed to treat (NNT), each with a 95% confidence interval. Matches R. - [p-value Calculator](https://rverseanalytics.com/tools/p-value-calculator): Free p-value calculator: convert a t, z or chi-square test statistic into a one- or two-tailed p-value. Accurate distribution functions, matched to R's pt, pnorm and pchisq. - [Sample Size & Power Calculator](https://rverseanalytics.com/tools/sample-size-calculator): Free sample size and statistical power calculator for t-tests, two proportions and correlations. Computes participants per group from effect size, alpha and power — matched to R's power.t.test. - [t-Test Calculator](https://rverseanalytics.com/tools/t-test-calculator): Free t-test calculator: paste your data for a one-sample, two-sample (Welch) or paired t-test. Returns the t statistic, degrees of freedom, p-value and confidence interval — matches R's t.test. - [Z-Score Calculator](https://rverseanalytics.com/tools/z-score-calculator): Free z-score and normal distribution calculator: convert a raw value to a z-score and percentile, a z-score to a probability, or a probability back to a z-score. Matches R's pnorm and qnorm. ## Optional - [Learn R in the browser](https://rverseanalytics.com/learn): interactive webR lessons - [Learn Quarto](https://rverseanalytics.com/learn-quarto) and [Learn Markdown](https://rverseanalytics.com/learn-markdown) - [Interactive demo gallery](https://rverseanalytics.com/gallery) and [TLF gallery](https://rverseanalytics.com/tlf-gallery) - [Cheat sheets (PDF)](https://rverseanalytics.com/cheatsheets) - [RSS feed](https://rverseanalytics.com/blog.xml)