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.








