Skip to main content
v2026.11,610 entries · CC-BY 4.0
Research Tools & Software

Statistical Software for Research

This sub-cluster covers the software researchers use to run the analyses described in the research-methods cluster: SPSS (menu-driven, widely taught, common in social science and health), R (free, open-source, the standard in biostatistics and increasingly elsewhere), Stata (strong in economics and epidemiology), SAS (entrenched in pharma and clinical trials), and the newer open-source GUI tools JASP and jamovi, which pair R's statistical engine with SPSS-style menus. Pages here are practical and comparative — which tool suits a given discipline or analysis, and how to move a specific procedure (e.g., a mixed model) from one package's syntax to another's.

Guides

Calculating Z-Scores in SPSS: Descriptives Checkbox vs. COMPUTE

How to standardize a variable in SPSS using the Descriptives “Save standardized values as variables” checkbox versus a manual COMPUTE formula, and how to interpret the resulting z-score.

Cluster Analysis in SPSS: Hierarchical vs. K-Means

When to use hierarchical clustering (exploratory, dendrogram, unknown cluster count) versus K-means clustering (specified cluster count, larger datasets) in SPSS, and how to read each procedure’s output.

MANOVA in SPSS: Setup, Assumptions, and Follow-Up

A practical walkthrough of running MANOVA in SPSS: GLM Multivariate setup, the Box’s M and multivariate-normality assumption checks, reading Pillai’s Trace, Wilks’ Lambda, Hotelling’s Trace and Roy’s Largest Root, and deciding how to follow up a significant multivariate effect with univariate tests.

Bar Charts in SPSS: Counts, Means, and Error Bars

Simple bar charts (counts) vs. bar-of-means charts in SPSS Chart Builder, plus the Element Properties setting for confidence-interval, standard-error, or standard-deviation error bars, and how to add it after the chart already exists.

Box Plots in Stata: graph box and over-Groups

How to build grouped box plots in Stata with graph box and graph hbox: the over() option for categorical breakdowns, and marker()/mlabel() for labeling outlier observations by case ID.

Scatterplots in SPSS: Simple, Grouped, and With a Fit Line

Building simple, grouped, and matrix scatterplots in SPSS Chart Builder, and adding a linear or Loess fit line in the Chart Editor.

Box Plots in SPSS: Creating and Interpreting Them

How to build a simple or clustered boxplot in SPSS from Chart Builder, Legacy Dialogs, or Explore, and how to read the whiskers plus the circle (outlier) and asterisk (extreme value) case-number flags.

Mann-Whitney (ranksum) Test in Stata

Stata’s ranksum command syntax for the Mann-Whitney test, reading the z statistic it reports instead of a U value, and the tie correction Stata applies to the variance automatically.

Propensity Score Matching in Stata: psmatch2 vs. teffects psmatch

Why psmatch2 (user-written) and teffects psmatch (official) are not interchangeable in Stata: syntax differences, the standard-error gap Abadie and Imbens flagged, balance diagnostics with pstest and tebalance, common support, and citation implications for reproducibility.

Recoding Variables in Stata: recode, replace, and generate

Stata offers three ways to create or change a variable: recode, replace, and generate. Here is the range-rule syntax recode uses, the specific way replace destroys original data, and when each command is the right one.

ANOVA in Stata: The anova Command and Postestimation

How to run one-way and factorial ANOVA with Stata’s anova command, read the ANOVA table, and follow up with margins and pwcompare for post hoc comparisons.

Stata Do-Files: Structure for a Reproducible Workflow

The do-file header, comment styles, and file-path conventions that make a Stata analysis reproducible: version, clear all, set more off, log using, and running the file the way a collaborator actually would.

Making a Histogram in SPSS With a Normal Curve Overlay

Three SPSS routes to a normal-curve histogram overlay, how to adjust bin width afterward, and what a visual match against the curve does and doesn’t tell you versus a formal normality test.

Running a t-Test in R: t.test() Syntax and Output

Base R’s t.test() function: formula vs. vector calling syntax, why var.equal defaults to Welch’s t-test instead of the pooled version, and extracting p-values, confidence intervals, and group means from the returned object for a report.

Standard Deviation in R: sd(), na.rm, and By-Group Calculation

A worked R guide to sd(): why it silently returns NA on any missing value without na.rm = TRUE, what the sample-vs-population formula means for your reported SD, and by-group standard deviation with both aggregate() and dplyr::group_by().

The reshape Command in Stata: Wide to Long and Back

How Stata’s reshape long and reshape wide commands convert data between wide and long layouts, the i() and j() options explained through a worked repeated-measures dataset, the stub-naming rules that cause most reshape errors, and when reshape fails versus when a different tool is the better choice.

Chi-Square Test in Stata: tabulate, chi2, and Fisher’s Exact

How to run a chi-square test of independence in Stata with tabulate …, chi2: reading the Pearson chi2 output, using the exact option (Fisher’s exact test) when expected cell counts are small, and tab2 for testing several variable pairs at once.

Mann-Whitney U Test in SPSS: Menus, Ranks, and Reporting

Both SPSS menu paths for the Mann-Whitney U test, how to read the mean-rank and test-statistic output each one produces, and when it beats an independent-samples t-test.

Levene’s Test in SPSS: Where It Appears and What to Do When It’s Significant

A named diagnostic embedded inside three different SPSS procedures, not a menu item of its own: automatic in the independent-samples t-test, opt-in via an Options checkbox in both one-way and two-way ANOVA, with a different row-switch or correction for each when it comes back significant.

Labeling Variables and Values in Stata

label variable names a column; label define plus label values name the numeric codes inside it as a separate, reusable object. This guide covers the syntax for both and why keeping them separate prevents unlabeled do-files from becoming unreadable once more than one person works on them.

Logistic Regression in Stata: logit vs. logistic

How Stata’s logit and logistic commands relate: logit prints coefficients on the log-odds scale, logistic prints odds ratios, and both share the same postestimation (margins, estat gof, lroc).

Recoding Variables in SPSS: Into Same vs Into Different Variables

SPSS offers two Recode commands that look alike but behave very differently. Here’s why Into Different Variables should be your default, how the Old and New Values dialog works, and the specific data-loss risk of recoding into the same variable.

SPSS Syntax: Writing Reproducible Analysis Files

How to use the Paste button to build a runnable .sps syntax file, comment it well, and run it from a clean, unmodified dataset so an SPSS analysis is actually reproducible.

Multiple Regression in SPSS: Entry Methods, Diagnostics, and Reporting

The Analyze > Regression > Linear menu, choosing Enter vs. Stepwise vs. Hierarchical entry by research question, requesting VIF/tolerance and residual plots, and reporting the full model.

Repeated-Measures ANOVA in SPSS: Setup and Corrections

How to define the within-subjects factor for repeated-measures ANOVA in SPSS, read Mauchly first, and pick the right sphericity correction.

Merging Datasets in Stata: 1:1, m:1, and _merge

How Stata’s merge command works by match type (1:1, m:1, 1:m, m:m), how to read the _merge result codes, and the duplicate-master-key and unmatched-observation errors that silently corrupt a join.

Running ANOVA in R: aov(), car::Anova(), and Type III Sums of Squares

A worked R walkthrough: why aov() always gives Type I sums of squares, why that silently misleads for unbalanced two-factor designs, and the exact car::Anova(type=3) plus contr.sum fix, with real numbers at every step.

Cronbach’s Alpha in SPSS: Reliability Analysis and Item-Total Statistics

Run SPSS Reliability Analysis, read the item-total statistics table, and use Alpha if Item Deleted to spot a weak item in your scale.

Binary Logistic Regression in SPSS: Procedure and Output

The Analyze > Regression > Binary Logistic menu path, and how to read the Omnibus test, Model Summary, Hosmer-Lemeshow, classification table, and Exp(B) as an odds ratio.

Descriptive Statistics in SPSS: Frequencies, Descriptives, and Explore

Frequencies, Descriptives, or Explore in SPSS? What each procedure computes, which variable type it suits, and when to reach for each one instead of defaulting to just one.

Pearson Correlation in SPSS: Procedure, Output, and Reporting

The Bivariate Correlations menu path, checking linearity and outliers first, reading the r/Sig./N output table, listwise vs. pairwise exclusion, matrix formatting and the multiple-comparisons caveat, and the APA reporting line.

The append Command in Stata: Stacking Datasets

How to use Stata’s append command to stack datasets by row: the append-vs-merge decision, the force option and the type conflicts it papers over, generate() for tagging source files, and the variable-mismatch pitfalls that cause silent data loss.

Two-Way ANOVA in SPSS: Main Effects, Interaction, and Simple Effects

Set up a two-way ANOVA via GLM Univariate, read the interaction row before the main effects, plot it, and run simple-effects follow-up tests when it’s significant.

Bar Charts in Stata: graph bar and graph hbar

How to build grouped and stacked bar charts in Stata with graph bar and graph hbar: the over() option for categorical breakdowns, asyvars for stacking, and value labels.

Regression in Stata: regress, Postestimation, and Reporting

How to run a regression in Stata: the regress command for simple and multiple OLS, robust and clustered standard errors, postestimation diagnostics (predict, estat hettest, estat vif, estat ovtest), and exporting publication-ready tables with outreg2 or esttab.

Testing Normality in SPSS: Shapiro-Wilk, K-S, and the Plots

Where SPSS runs the Shapiro-Wilk and Lilliefors-corrected K-S tests, why sample size flips which one you should trust, and how to read the Q-Q plots when a large sample ‘fails’ normality on a difference too small to matter.

Histograms in Stata: histogram and twoway histogram

How to build a histogram in Stata: bin() and width() control, density vs. frequency vs. percent scaling, the normal overlay, by-group panels, and when to switch to twoway histogram to combine a histogram with another plot type.

One-Way ANOVA in SPSS: Procedure, Post Hoc Tests, and Output

How to run a one-way ANOVA in SPSS, pick Tukey HSD or Games-Howell based on Levene’s test, and read the ANOVA table, post hoc comparisons, and means plot.

Scatterplots in Stata: twoway scatter and lfit Overlays

How to build a scatterplot in Stata with twoway scatter, add an lfit or qfit regression-line overlay, and combine multiple twoway elements in one graph command.

Mauchly’s Test of Sphericity in SPSS: Reading the Output and Choosing a Correction

Where SPSS prints Mauchly’s Test of Sphericity, what Mauchly’s W, Sig., and the epsilon columns mean, and how to choose the Greenhouse-Geisser or Huynh-Feldt correction and report the corrected degrees of freedom.

The collapse Command in Stata: Aggregating a Dataset by Group

collapse (stat) varlist, by(groupvars) replaces a Stata dataset in memory with one row per group. This guide covers the syntax for multiple statistics and by-groups, what collapse destroys, preserve/restore, and the frequency-weight gotcha, with a worked before/after example.

Running a t-Test in Stata: ttest and ttesti

How to run a t-test in Stata: the ttest command for raw data, the ttesti immediate form for summary statistics, the one-sample/two-sample/paired variants, the unequal and welch options, and how to read Stata’s output block.

How to Run a T-Test in SPSS and Read the Output

Menu paths for all three SPSS t-tests — including paired-variable pairing mechanics and the Paired Samples Correlations output — how to read Levene’s Test, and the exact APA reporting line.

Logistic Regression in R: glm(), Odds Ratios, and Diagnostics

A runnable R workflow for logistic regression: glm(family = binomial), exponentiating coefficients to odds ratios, why confint() profile intervals differ from Wald, pseudo-R-squared from logLik(), ROC/AUC with pROC, and how to spot separation. Every output block is real R 4.6.1 console output.

Referenced across the research world

University of Cambridge logoColumbia University logoCrossref logoUniversity of Edinburgh logoHarvard University logoUniversity of Oxford logoPrinceton University logoStanford School of Medicine logoUniversity College London logoORCID logoUniversity of Cambridge logoColumbia University logoCrossref logoUniversity of Edinburgh logoHarvard University logoUniversity of Oxford logoPrinceton University logoStanford School of Medicine logoUniversity College London logoORCID logo
  • University of Cambridge logo
  • Columbia University logo
  • Crossref logo
  • University of Edinburgh logo
  • Harvard University logo
  • University of Oxford logo
  • Princeton University logo
  • Stanford School of Medicine logo
  • University College London logo
  • ORCID logo

View CASRAI adoption →

Regulatory Radar

Stop finding out after the fact

$29/month, cancel anytime. Daily digest updates from our analysis, a dashboard holding the same items, and a cited assistant for everything they raise.

  • Federal Register, Federal Register+, Grants.gov, Regulations.gov, NSF News, UKRI, plus CASRAI’s own published content.
  • 44,322 indexed passages, and every answer cites the ones it drew on.