Skip to main content
v2026.11,858 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

R Presentations: Make Slides from R with Quarto, R Markdown or officer

How to make R presentations with Quarto, R Markdown or officer: heading-to-slide rules, PowerPoint templates, speaker notes and troubleshooting.

Reading CSV Into R: read.csv vs read_csv

How to read a CSV file in R with base read.csv or readr read_csv, how their defaults differ, and how to fix encoding, delimiter and type problems.

Solve in R: solve(), qr.solve() and uniroot() Explained

How to solve in R: solve(a, b) for linear systems and inverses, qr.solve() for least squares, uniroot() for f(x) = 0, with checks you can do by hand.

How to Load Data into R: CSV, Excel, SPSS, Stata and SAS Files

Load data into R with read.csv, read_excel and haven: the right function per file type, documented defaults, and fixes for separator, encoding and NA errors.

NumPy log: np.log, log10, log2 and log1p

np.log returns the natural log element-wise. Learn log10, log2, log1p, the zero and negative cases, and how to log data with zeros safely.

Matrix Multiplication in NumPy: matmul, @ and np.dot

Multiply matrices in NumPy with np.matmul and @, tell them from element-wise multiply, and invert a matrix with np.linalg.inv.

NumPy Transpose: np.transpose, .T and Axes Explained

How to transpose a NumPy array or matrix with np.transpose and .T, read the axes argument, invert it, and handle 1-D arrays and stacks of matrices.

NumPy argmax: np.argmax() Syntax, axis, keepdims and NaN

np.argmax returns the index of the maximum value. See axis and keepdims output shapes, tie handling, getting values back, and the NaN trap.

NumPy Append: np.append() Syntax, axis and Shape Errors

np.append() returns a new array and flattens without axis. Syntax, axis=0 and axis=1 rules, the ValueError, a dtype trap and np.concatenate.

fitted() in R: Extract Fitted Values from lm and glm

How fitted() in R extracts fitted values from lm and glm, how it differs from predict(), and how missing values and the link scale change the result.

cbind in R: Combine Columns in Vectors, Matrices and Data Frames

cbind in R combines columns by position and returns a matrix or data frame. Steps, naming, recycling warnings, and when bind_cols or a join is safer.

NumPy Fourier Transform: np.fft.fft, Frequencies and norm

How to run a NumPy Fourier transform with np.fft.fft, label frequencies with fftfreq, and pick the right norm, with a checkable four-point example.

What Is Unit Testing? Examples in Python and R

Unit testing explained with runnable pytest, unittest and testthat examples, exact commands, and how to read a failing test report.

Lower Case in R: tolower(), casefold() and str_to_lower()

How to convert text to lower case in R with tolower(), casefold() and str_to_lower(), including the locale and encoding behaviour the docs describe.

NumPy sqrt: np.sqrt() Syntax, Negatives and Arrays

np.sqrt takes element-wise square roots. See what it returns for negatives (nan, complex or ValueError) and how to use where= and out=.

Colorbar in Matplotlib: Add, Place, Label and Share It

How to add, place and label a colorbar in Matplotlib: ax vs cax, location, extend for out-of-range values, shared bars and common errors.

Numpy Unique: Syntax, Counts, Unique Rows and Order

How numpy unique works: counts, unique rows, NaN handling across versions, and keeping first-appearance order, from the NumPy manual.

What Is Web Scraping? A Researcher’s Guide

What web scraping is, when to use an API instead, and how to scrape a page in R with rvest or in Python with Requests and Beautiful Soup.

Chi-Square Test in R: chisq.test() Arguments, Output and Small-Count Options

How to run a chi-squared test in R with chisq.test(): arguments by mode, what the output holds, and simulate.p.value or fisher.test() for small counts.

Heatmap in Seaborn: sns.heatmap() Step by Step

Draw a heatmap in seaborn with sns.heatmap(): annotate cells, centre the colour scale, mask half a correlation matrix and read the result correctly.

Legend in Matplotlib: Location, Position and Placing It Outside the Plot

Legend in Matplotlib: set loc, move the legend outside the plot with bbox_to_anchor or constrained layout, and fix missing entries.

NumPy argsort: np.argsort() Syntax, Descending Order and Examples

How np.argsort returns sorting indices: axis, kind, descending order on any NumPy version, take_along_axis for 2-D, and multi-key sorting.

What Is Continuous Integration? How CI Works and Why Research Code Needs It

Continuous integration explained for research code: how a CI run works, what to check, and how GitHub Actions and GitLab CI/CD describe the same ideas.

R Uppercase: Convert Text to Upper Case with toupper() and stringr

How to convert text to upper case in R with toupper(), casefold() and stringr, including the locale behaviour that changes the result.

NumPy NaN: How to Detect, Ignore and Replace np.nan

How to detect, ignore and replace NaN in NumPy, with a worked example showing how nanmean and nan_to_num give different results from the same data.

NumPy Repeat: np.repeat() Syntax, axis and Per-Element Counts

How np.repeat works: axis, per-element repeat counts, the flatten default, and how it differs from np.tile, with outputs checked on NumPy 2.5.1.

map() in R: purrr map, Map() and the Typed Variants

How map() in R works: purrr map, typed map_dbl and map_chr, base Map(), what each returns, and how to fix list, length and constant-argument errors.

How to Make a Frequency Table: By Hand, in Excel and in R

Build a frequency table by hand, with an Excel PivotTable or FREQUENCY, and with R table(), then add relative and cumulative columns and check the total.

numpy.linalg.norm: Syntax, ord Values and Axis Examples

How numpy.linalg.norm works: the full ord table for vectors and matrices, axis and keepdims, and the 2-D trap, plus vector_norm, lstsq and inv.

What Is Data Normalization? Three Meanings Explained

Data normalization can mean rescaling variables, standardizing them, or organizing database tables. Learn which is which, with scikit-learn and R steps.

R If Statement: Syntax, Conditions and Else

How the R if statement works: syntax, valid conditions, else if chains, the else line-break rule, and when to use ifelse() or switch() instead.

NumPy clip: np.clip() Syntax, Bounds, and Examples

How numpy.clip limits array values to a lower and upper bound, with one-sided and array bounds, in-place out, and the a_min greater than a_max trap.

qnorm in R: Syntax, lower.tail and Worked Examples

How to use qnorm in R: syntax, lower.tail and log.p, vectorised calls, edge cases and a pnorm round-trip check, with worked critical-value examples.

Discard Local Changes in Git: restore, reset hard, clean and stash

Discard local changes in Git with restore, reset hard, clean, stash or revert: pick the command by state, preview first, keep work you may need.

What Is a TSV File? Format, Rules, and How to Open It in Excel, R and Python

A TSV file is a plain-text table with one record per line and tab-separated fields. Learn its rules and how to open it in Excel, R and Python.

Seaborn Color Palettes: Choose, Set and Report Them

Seaborn color palettes: a table that matches data type to palette class, the exact commands, fixes for repeated colors, and how to report the palette.

What Is a SNP? Single Nucleotide Polymorphisms Explained for Researchers

What a SNP (single nucleotide polymorphism) is, how common SNPs are, what researchers use them for, and how to look one up by rsID in dbSNP.

numpy random choice: Syntax, Weights, and Reproducible Sampling

How numpy random choice works: Generator.choice vs legacy, replace=False, weights, seeds for reproducible sampling, and fixes for common ValueErrors.

Fork Git: What a Fork Is and How to Make One

Git has no fork command: forking is a GitHub feature. Fork, clone, add upstream, sync and send changes back, plus git branch vs fork explained.

SQL Database Types: Data Types in MySQL, PostgreSQL, SQL Server and SQLite

Column data types in PostgreSQL 18, MySQL 8.4, SQL Server and SQLite side by side, which types are standard SQL, and how SQLite type affinity works.

NumPy Zeros: np.zeros() Syntax and Examples

np.zeros() creates an array of zeros: shape, dtype and order explained, with tested examples and how it differs from np.empty, ones and full.

NGS DNA Sequencing: Workflow, Outputs and Public Data

NGS DNA sequencing explained: the four-stage workflow, how to read FASTQ, BAM and VCF output, and how to reuse public reads from the NCBI SRA.

3D Plots in R: scatterplot3d, rgl and persp

How to make 3D plots in R with scatterplot3d, rgl and persp: which to choose, CRAN install, working code, fitted planes and how to read the angles.

ggplot Color Palettes: Brewer, Viridis and Manual Scales

Choose ggplot color palettes by variable type: Brewer, viridis and manual scales, documented palette names, and why unnamed manual colours go wrong.

NumPy Array: Create from a List, Convert Back and Read Shape

Create a NumPy array from a list with np.array, convert it back with tolist, and read shape, ndim, size and dtype, with the list() versus tolist() difference.

F-Test in Excel: F.TEST Function and Data Analysis Two-Sample Test

How to run an F-test for two variances in Excel with F.TEST or the Analysis ToolPak, compute the F statistic, and read the two-tailed p-value.

Train Test Split in Python: scikit-learn train_test_split Explained

Train test split in Python with scikit-learn: the train_test_split signature, how test_size, shuffle and stratify interact, and split-first rules.

PROC CONTENTS in SAS: Syntax, Options and Output

PROC CONTENTS in SAS: syntax, the DATA=, OUT=, VARNUM and NODS options, and how it differs from the CONTENTS statement in PROC DATASETS.

ggplots in R: Build, Style and Save Plots with ggplot2

ggplots in R explained: install ggplot2, build a first plot with aesthetics and facets, pick a theme and export with ggsave() at the right size and dpi.

MATLAB Normal Distribution: normpdf, normcdf, normrnd

How to use MATLAB normpdf, normcdf, normrnd and normfit as one workflow, with documented outputs, tail-precision and sigma pitfalls.

bptest() in R: Running and Reading the Breusch-Pagan Test with lmtest

Run bptest() from lmtest on an lm object, set varformula and studentize, read the htest output, and fix common errors, with free alternatives.

Factorials in R: factorial(), gamma(x+1), prod() and cumprod()

How to calculate factorials in R with factorial(), gamma(x+1), prod() and cumprod(), plus the NaN and zero cases, all checked against the R manual.

Generalised Additive Models in R: Fitting and Checking GAMs with mgcv

How to fit a generalised additive model in R with mgcv, read edf and approximate p-values, and use gam.check() to test the basis dimension k.

Calibration Graph in Excel: Build a Calibration Curve

How to make a calibration curve in Excel: scatter chart and trendline, slope, intercept and r² from LINEST and RSQ, and back-calculating unknowns.

MATLAB Moving Average: movmean, smoothdata and filter

Compute a MATLAB moving average with movmean, and see how smoothdata and filter differ on endpoints, NaN values and window alignment.

Binomial Distribution in Excel: BINOM.DIST, BINOM.INV and BINOM.DIST.RANGE

Use BINOM.DIST, BINOM.DIST.RANGE and BINOM.INV for binomial probabilities in Excel, with a question-to-formula table and error fixes.

PROC COMPARE in SAS: Compare Two Datasets

How to run PROC COMPARE in SAS: BASE=, COMPARE=, ID, VAR/WITH, how to read the reports, and SYSINFO return codes for automated checks.

PROC TRANSPOSE in SAS: Syntax, Options and Output Explained

How PROC TRANSPOSE in SAS works: syntax, BY/ID/VAR roles, default names, data-type rules and duplicate-ID behaviour, with a documented example.

How to Calculate Probability in Excel: PROB, COUNTIF and NORM.DIST

Calculate probability in Excel with PROB, COUNTIF/COUNT, BINOM.DIST and NORM.DIST: which function fits which question, worked examples and error fixes.

How to Make a Box Plot in Google Sheets

Make a box plot in Google Sheets with the native Box and whisker chart: data layout, steps, options and how to read the whiskers.

ifelse in R: Syntax, NA Handling and Pitfalls

How ifelse() works in R, how it treats NA, why it strips Dates and factors, and when to use if_else() or case_when() instead.

Data Analysis Tool in Python: pandas and SciPy Guide

Install pandas and SciPy from official sources, run load, describe, groupby and a t-test, and learn how to read each output, including equal_var.

NumPy where: Syntax, Multiple Conditions and np.select

How np.where(condition, x, y) works, how to combine multiple conditions, and when np.select or nonzero is the better NumPy tool.

TREND Formula in Excel: Syntax, Worked Example and Errors

How the TREND formula in Excel works: syntax, a hand-checked five-point example, const = FALSE, array entry, #SPILL! fixes and when to use FORECAST.LINEAR.

How to Normalize Data in Excel: Min-Max and Z-Score

Normalize data in Excel with a min-max formula or STANDARDIZE z-scores, choose STDEV.S or STDEV.P, and fix #NUM! and #DIV/0! errors.

Plotly in R: Interactive Charts with plot_ly() and ggplotly()

Install plotly from CRAN, build charts with plot_ly(), convert ggplot2 figures with ggplotly(), and save to HTML, using the official commands.

Survival Analysis in R: survival Package Guide

Run Kaplan-Meier, log-rank and Cox analyses in R with the survival package, read the output, and avoid event-coding and ties mistakes.

Plotting a Line in R: plot(type = “l”), lines() and geom_line()

How to plot a line in R with plot(type = “l”), lines() and geom_line(), and how to fix zigzag lines, NA gaps and missing groups.

How to Compute a Ratio in Excel: GCD Formula, A:B and Decimal Ratios

How to compute a ratio in Excel: the GCD formula for A:B form, decimal and percentage versions, ROUND, and fixes for #VALUE! and #NUM!.

For Loops in R: Syntax, break/next, and When to Use lapply

How for loops work in R, per the R reference: syntax, seq_along, break and next, why results must be stored, and when lapply, sapply or vapply fits better.

Averages in Google Sheets: AVERAGE, AVERAGEA and AVERAGEIF

Calculate averages in Google Sheets with AVERAGE, AVERAGEA, AVERAGEIF and AVERAGEIFS, with a worked example of how text cells change the mean.

RStudio on the Cloud: Posit Cloud vs RStudio Server for Research

How to run RStudio on the cloud for research: Posit Cloud vs RStudio Server, the steps to start a project, and the limits that decide whether it fits.

Summary Statistics in R: summary(), skimr and psych::describe()

Run summary statistics in R with summary(), skimr and psych::describe(): exact calls, how to read the output, missing values and by-group results.

transform() in R: Syntax, Examples and When Not to Use It

How the R transform() function adds and replaces data frame columns, with the manual’s examples and a table comparing within(), mutate() and $ assignment.

Random Forests in R: randomForest and ranger, Step by Step

Fit random forests in R with randomForest and ranger, read out-of-bag error and variable importance, and see where the two packages’ defaults differ.

AVERAGEIF Function in Excel: Syntax, Examples and AVERAGEIFS

How to use the AVERAGEIF function in Excel, how AVERAGEIFS differs, and what causes #DIV/0!, with examples you can recompute by hand.

AVERAGEIFS in Excel: Syntax, Multiple Criteria and Examples

How the AVERAGEIFS function in Excel averages a range on several conditions: syntax, a hand-checkable example, #DIV/0! causes and AVERAGEIF differences.

Coefficient of Variance in Excel: Formula, Steps and Pitfalls

Calculate the coefficient of variance in Excel with STDEV.S and AVERAGE, a worked example, the sample vs population choice, and troubleshooting.

Monte Carlo Forecasting in Excel: RAND, NORM.INV and FORECAST.LINEAR

Build a Monte Carlo forecast in Excel with FORECAST.LINEAR, RAND and NORM.INV, then read the 5th-95th percentile range from a worked example.

How to Add a Trendline in Google Sheets

Add a trendline in Google Sheets: Customize > Series > Trendline, which chart types support it, the six types, and why R squared needs a legend.

Random Number Generation in R: set.seed, rnorm, runif, sample

How to generate random numbers in R with runif, rnorm and sample, and make them reproducible with set.seed, RNGkind and the R 3.6.0 sampling change.

How to Calculate Range in Excel (MAX Minus MIN)

Calculate the range in Excel with MAX minus MIN, the AutoSum route, and the traps that make it return 0 or an error.

How to Make a Histogram in Google Sheets: Steps, Bucket Size and Reading It

Make a histogram in Google Sheets with Insert > Chart and the Histogram type, adjust bucket size, and report the figure so it can be reproduced.

DNA Sequencing: Methods, Accuracy, and Turnaround

What DNA sequencing is, how the methods differ, how accurate base calls are (Q scores) and how long a run really takes, with NHGRI-sourced history.

Clustering Analysis in R: kmeans() and hclust()

Clustering analysis in R with base stats functions: scale, dist, kmeans, hclust and cutree, with the defaults and traps that change the clusters.

How to Find a Slope in Excel: SLOPE, LINEST and Trendline

Find a slope in Excel with SLOPE, LINEST or a chart trendline, with a worked example, the intercept formula and fixes for #N/A and #DIV/0!.

How to Calculate CAGR in Excel (RRI and Formula)

Calculate compound annual growth rate in Excel with RRI or the caret formula, check both agree, and avoid the common period-count and averaging mistakes.

Barplot in R: barplot(), geom_bar(), geom_col()

How to make a barplot in R with barplot(), geom_bar() or geom_col(): choose by data shape, group and stack bars, read the output, and fix common problems.

How to Calculate the IQR in Excel (QUARTILE.INC vs EXC)

Calculate the IQR in Excel with =QUARTILE.INC(range,3)-QUARTILE.INC(range,1); see why QUARTILE.EXC gives a different answer, with worked examples.

How to Calculate SEM in Excel: Formula, Steps and Error Bars

How to calculate SEM in Excel with STDEV.S, COUNT and SQRT, a checkable worked example, and the menu path for custom mean ± SEM error bars.

How to Add Error Bars in Excel: Standard, Custom and Per-Point

Add error bars in Excel via Chart Elements, then use Custom with STDEV.S values so each bar shows exactly the statistic your figure legend states.

Collapse in R: collapse(), fct_collapse() and paste()

Collapse in R means four things: paste(collapse=), forcats::fct_collapse(), dplyr::collapse() and the collapse package. Syntax and examples from the docs.

Rename Columns in a Pandas DataFrame

Rename columns in a pandas DataFrame with rename, set_axis or add_prefix, plus the pandas 3.1 inplace deprecation and the errors=”raise” check.

How to Do a Pivot Table in Excel: Step by Step for Research Data

Build an Excel PivotTable from research data: source prep, Insert > PivotTable, Sum vs Count, grouping, refresh, and troubleshooting.

NumPy linspace: Syntax, Parameters and Examples

numpy linspace builds a fixed number of evenly spaced values. Learn num, endpoint, retstep and dtype, and when to use arange instead.

GitHub Tutorial for Beginners: A Researcher’s First Repository

A GitHub tutorial for beginners framed for researchers: first repository, branch, pull request, a GitHub Actions workflow, and a DOI via Zenodo.

How to Create Histograms in Excel

Step-by-step histograms in Excel: the built-in chart, bin width and overflow settings, the Analysis ToolPak and FREQUENCY, with a hand-checked example.

Excel Statistics Functions: Which to Use and When

Excel statistics functions grouped by research task, with the STDEV.S versus STDEV.P choice worked through and how text and blanks are treated.

ANOVA in Excel: One-Way ANOVA With the Data Analysis ToolPak

Run a one-way ANOVA in Excel with the Analysis ToolPak, check the p-value with F.DIST.RT, and add the post hoc and effect size it omits.

Excel Generate Random Number: RAND, RANDBETWEEN, RANDARRAY

How to generate random numbers in Excel with RAND, RANDBETWEEN and RANDARRAY, which Excel versions support each, and how to freeze the results.

How to Install GitHub CLI (gh) and Set Up SSH Keys

Install GitHub CLI on macOS, Windows or Linux, then run gh auth login to sign in and set up the SSH key GitHub needs, including headless token use.

How to Calculate Mode in Excel: MODE.SNGL, MODE.MULT and Ties

Calculate the mode in Excel with MODE.SNGL, list tied modes with MODE.MULT, and learn why a column with no repeated values returns #N/A.

LaTeX New Line in Equation: split, multline, align

How to add a new line in a LaTeX equation with split, multline, align and gather, and how equation numbering and labels work.

How Do You Make a Scatter Plot in Excel? Steps and Trendline

Step-by-step guide to making a scatter plot (scatter graph or scattergram) in Excel, with axis titles, a trendline and fixes for common mistakes.

How to Calculate the Median in Excel: MEDIAN Formula and Pitfalls

Use =MEDIAN(range) to find the median in Excel. See what it ignores and counts, and how AGGREGATE gives a median that skips errors or hidden rows.

End of Proof Symbol in LaTeX: qed and qedhere

Add, change or place the end-of-proof (QED) symbol in LaTeX with amsthm: qedsymbol, qed and qedhere, plus fixes for common placement problems.

ANOVA in SAS: PROC ANOVA vs PROC GLM, Step by Step

How to run ANOVA in SAS: SAS’s own rule for choosing PROC ANOVA or PROC GLM, a documented CLASS/MODEL example and how to read the output.

Crosstabs in Excel: Build a Cross-Tabulation With a PivotTable

How to build a crosstab in Excel with a PivotTable, fix Sum versus Count, and test the table with CHISQ.TEST using expected counts and the 5-per-cell rule.

MANOVA in R: manova(), summary() and Reading the Output

How to run and read a MANOVA in R with manova() and summary(), choose between Pillai, Wilks, Hotelling-Lawley and Roy, and check assumptions.

Normality Test in Excel: What Excel Can and Cannot Test

Excel has no built-in normality test. Use SKEW, KURT and a Q-Q plot built with NORM.S.INV as descriptive checks, then run Shapiro-Wilk in R or SciPy.

Outliers in R: Find, Flag and Remove Them (boxplot.stats, IQR, dplyr)

How to find and remove outliers in R with boxplot.stats(), IQR fences and dplyr, including the NA trap and when not to remove a point.

Crosstabs in R: table(), xtabs(), CrossTable() and tabyl()

How to make a crosstab in R four ways, with percentages, missing-value settings, an SPSS-style layout and a chi-square test on the result.

Power Analysis in R: pwr Package Functions and Worked Examples

Run power analysis in R with pwr and base R: a design-to-function table, worked sample size calls for t tests, ANOVA, correlation and chi-squared.

ANCOVA in R: lm(), car::Anova() and emmeans Step by Step

How to run ANCOVA in R with lm(), car::Anova() and emmeans: slope check, why term order matters, Type III contrasts and covariate-adjusted means.

How to Do a Random Sample in Excel: RAND, RANDBETWEEN and Sort

Draw a simple random sample in Excel with RAND and a sort, RANDBETWEEN or SORTBY, then freeze and record the selection so it can be reported.

Bonferroni Correction in R: p.adjust() and pairwise.t.test()

How to run a Bonferroni correction in R with p.adjust() and the pairwise test functions, read the adjusted p-values, and when to switch to Holm.

Bootstrap in R: boot() and boot.ci() Step by Step

How to run a bootstrap in R with boot() and boot.ci(), including studentized intervals, log-scale intervals and parallel runs on Windows.

Hypothesis Testing With R: t.test, chisq.test and wilcox.test

Hypothesis testing with R: which base function answers which question, the commands from the R manual, and how to read the htest result.

Interquartile Range in R: IQR(), the type Argument and na.rm

Calculate the interquartile range in R with IQR(): the na.rm and type arguments, matching SPSS or Minitab, and why fivenum() can differ.

sktest in Stata: Syntax, Output and swilk

How to run sktest in Stata, read its skewness and kurtosis output, and when to use swilk for the Shapiro-Wilk test instead.

ANOVA in Minitab: One-Way and Two-Way Step by Step

Run one-way and two-way ANOVA in Minitab: the exact menu paths, how to read p-values, R-sq and Tukey output, and free alternatives.

Dickey-Fuller Test in Stata: dfuller Syntax and Output

Run the Dickey-Fuller test in Stata with dfuller: syntax, the four noconstant/drift/trend cases, and how to read Z(t), critical values and the p-value.

How to Find the Median in Stata: summarize, tabstat, egen and centile

Four official ways to find the median in Stata: summarize detail, tabstat, egen median() and centile, with commands, stored results and fixes.

How to Calculate the Median in SPSS: Frequencies and Explore

Find the median in SPSS with Frequencies or Explore, get a median per group, and read the output. Steps follow IBM SPSS Statistics 29 documentation.

PCA in R: prcomp() Step by Step, Scaling, Loadings and Scores

Run PCA in R with prcomp(): scale, read sdev, rotation and x, plot a scree plot, and see how prcomp() differs from princomp().

ImageJ Leaf Area: Set Scale, Threshold and Analyze Particles

How to measure leaf area in ImageJ with Set Scale, threshold and Analyze Particles, plus length measurement, scale bars and reading the results.

How to Georeference an Image in QGIS (Georeferencer Step by Step)

Georeference an image in QGIS: open Layer > Georeferencer, add GCPs, pick a transformation and read the output, with GCP minimums per type.

How to Construct a Normal Distribution Curve in Excel

Build a normal distribution curve in Excel with NORM.DIST and a scatter chart, check it against Microsoft’s documented values, and fix common errors.

Heatmap in R: heatmap(), pheatmap and ggplot2

Make a heatmap in R with base heatmap(), pheatmap or ggplot2 geom_tile, including a correlation heatmap and the scaling and NA settings that change it.

Matrix in LaTeX: pmatrix, bmatrix and More

How to typeset a matrix in LaTeX with amsmath: pmatrix, bmatrix and the other environments, the 10-column limit, inline matrices and alignment.

Cluster Analysis in Python: K-Means, Hierarchical, DBSCAN

Cluster analysis in Python with scikit-learn and SciPy: a method table, runnable K-means, hierarchical and DBSCAN steps, and how to read the output.

What Is Minitab Used For? Research Uses, a Worked t Test and Free Alternatives

What Minitab is used for in research, with a worked 2-sample t test from the official docs, how to read the output and free alternatives.

What Is Google Colab Used For? Research Uses and Limits

Google Colab runs notebook code in a browser. See its research uses, setup steps, data-governance risks and the limits that decide when it fits.

What Is ArcGIS Used For? Research Uses and Setup

What ArcGIS is used for in research: mapping, spatial analytics, field data and imagery, plus ArcGIS Pro install steps, licensing and free alternatives.

Molecular Docking Software: Tools, Install and a Vina Walkthrough

Molecular docking software explained: what docking predicts, how to install AutoDock Vina, run it step by step and read the output.

Scatter Plot in Python: Matplotlib and Seaborn Step by Step

Draw a scatter plot in Python with Matplotlib or Seaborn: install, working code, parameter mapping, how to read the output and fixes.

Data Cleaning Steps for Research Data: A Practical Workflow

Data cleaning steps in order for research data: raw copy, text fixes, duplicates, missing values and a log, with OpenRefine, pandas and tidyr commands.

Scikit-learn Tutorial: Install, Fit, Evaluate and Cite for Research

A scikit-learn tutorial for researchers: install, fit a leakage-safe pipeline, cross-validate, make results reproducible and cite the library.

Free Statistical Software for Research: R, jamovi, JASP and gretl by Task

Free statistical software compared by task: R, jamovi, JASP and gretl, with install sources, stated licences and platforms from each official site.

What Is R Programming Used For? Research Uses and First Steps

R is a language for statistical computing and graphics. See research uses by field, a first task with real commands, and free alternatives.

Flow Cytometry Software: Opening FCS Files, Gating and Saving an Analysis

Flow cytometry software step by step: load FCS files, gate, save the workspace, and compare FlowJo, flowCore and a browser tool.

Scrivener Tutorial for Research Writers: Binder, Snapshots, Compile

A step-by-step Scrivener tutorial for researchers: structure a thesis in the Binder, take Snapshots, set Targets and compile to PDF or Word.

README Template for Research Code and Data

Which README template to use for research data or replication code, with copy-ready outlines merging Cornell and SSDE sections and GitHub display rules.

JASP Statistical Software: What It Is and How to Use It

What JASP statistical software is, what the name stands for, how to install it from the official site, and how to run and report a t-test in it.

AlphaFold Protein Structure Database: Access, Download and Confidence Scores

How to search the AlphaFold Protein Structure Database, download models by UniProt accession or API, and read pLDDT and PAE confidence scores.

How to Use QGIS Software: A Research Guide

A step-by-step guide to using QGIS for research: install, set the CRS, add layers, style and export a map, and run analysis tools.

NCBI RefSeq: What a Reference Sequence Is and How to Find and Cite One

Find the NCBI reference sequence for a gene, decode NM_ vs XM_ RefSeq accessions, and cite RefSeq correctly, using NCBI documentation.

renv: Lock R Package Versions for Reproducible Research

Use renv to lock R package versions: init, snapshot, restore, which files to commit, and how renv::status() diagnoses out-of-sync projects.

SciPy Stats: scipy.stats Functions for Research, With Examples

Which scipy.stats function fits which research question, with a tested normality check and t-test walkthrough and a guide to reading TtestResult.

What Is MATLAB Used For? Research Uses and First Steps

What MATLAB is used for in research, how to get it from MathWorks, a first readtable-and-plot task, and a free alternative, all from official documentation.

LaTeX Figure: Insert an Image, Caption It and Add Subfigures

Insert a figure in LaTeX with graphicx, caption and label it correctly, control float placement and add subfigures with subcaption.

Data Wrangling for Research: Tools and Steps

Data wrangling for research: clean text in OpenRefine, handle missing values in pandas, reshape to tidy data in tidyr.

NCBI BLAST Primers: How to Use Primer-BLAST

A step-by-step guide to NCBI Primer-BLAST: form fields, specificity checking, exon-exon junction primers, reading results and free alternatives.

ComBat Batch Correction: When to Apply It, and When It Erases Real Signal

What ComBat’s empirical Bayes correction actually adjusts, why it silently removes real biological signal when batch is confounded with your variable of interest, and how to check your design table and verify the correction with before/after PCA.

Volcano Plots in RNA-seq: How to Build and Correctly Read Differential Expression Results

What a volcano plot actually plots, why using raw p-values instead of FDR-adjusted p-values is a serious and common error, how to choose defensible fold-change and significance thresholds, and how to avoid the most common misreadings of the figure.

Epi Info: What It Was, Why CDC Sunset It, and What Replaces It

CDC discontinued Epi Info in September 2025. Here’s what the free epidemiology software did, what still works, and what public health researchers should migrate to.

Principal Component Analysis in Stata: pca and Postestimation

How to run principal component analysis in Stata: pca syntax, reading eigenvalues and loadings, screeplot retention rules, rotation with rotate, and saving component scores with predict.

Descriptive Statistics in Stata: summarize, tabstat, codebook

summarize gives a quick overview, tabstat builds custom grouped tables, and codebook screens data quality before you trust either one.

Correlation Matrices in Stata: correlate vs. pwcorr

Stata’s correlate and pwcorr both build a correlation matrix, but correlate uses listwise deletion and pwcorr uses pairwise deletion by default — here is how to choose, match the two, and export the result.

Creating Dummy Variables in Stata: i. Factor Notation vs. tabulate, generate()

Two ways to create dummy/indicator variables in Stata — the i. factor-variable operator vs. tabulate, generate() — and when each one is the right tool.

Poisson and Negative Binomial Regression in Stata

Fitting poisson and nbreg for count outcomes in Stata: using exposure() to model rates, testing for overdispersion, and reporting results as incidence-rate ratios.

Multiple Imputation in Stata: mi impute and mi estimate

How to set up mi data, choose chained vs monotone imputation, choose how many imputations to run, and pool results with mi estimate in Stata.

Spearman Rank Correlation in SPSS: Procedure, Output, and Reporting

How to run a Spearman rank correlation in SPSS via Bivariate Correlations: when to prefer it over Pearson, tied-rank handling, reading rho and Sig. (2-tailed), and the APA reporting line.

Principal Component Analysis in SPSS: Menus, Retention Rules, and Component Scores

How to run principal component analysis in SPSS: the Dimension Reduction > Factor dialog, eigenvalue and scree-plot retention rules, rotation, and saving component scores as new variables.

ANCOVA in SPSS: Covariates, Assumptions, and Adjusted Means

How to set up ANCOVA in SPSS’s General Linear Model > Univariate procedure, which assumptions it adds beyond ANOVA, and how to get and report covariate-adjusted (estimated marginal) means with Bonferroni-corrected pairwise comparisons.

Wilcoxon Signed-Rank Test in SPSS: Menus and Reporting

Both SPSS menu paths for the Wilcoxon signed-rank test, how to read the Ranks and Test Statistics output each produces, and how to compute the effect size SPSS doesn’t print.

Handling Missing Values in SPSS: Codes, Exclusion, and Imputation

Declare user-missing codes in Variable View, understand listwise vs. pairwise exclusion by procedure, diagnose the missingness pattern with Missing Value Analysis, and use SPSS’s Multiple Imputation tool and Rubin’s rules correctly.

Linear Mixed Models in SPSS: The MIXED Procedure

How to fit linear mixed models in SPSS with the MIXED procedure: the menu path, full command syntax, choosing a covariance structure, REML vs ML, and reading the fixed-effects and covariance-parameter output.

Box Plots in R: boxplot() and ggplot2’s geom_boxplot()

A runnable R workflow for box plots: base R’s boxplot() and its fivenum()-based hinges, ggplot2’s geom_boxplot() and its quantile()-based hinges (and why the two can draw different box edges from identical data), outlier flagging via the 1.5×IQR fence, notches, and overlaying raw data points with geom_jitter().

Scatterplots in R: plot() and ggplot2’s geom_point()

How to build scatterplots in R with base plot() and ggplot2’s geom_point() — grouping by color/shape, fixing overplotting, adding loess/lm trend lines with geom_smooth(), and the silent-NA-drop pitfall that catches both methods differently.

Histograms in R: hist() and ggplot2’s geom_histogram()

A runnable R workflow for histograms: base hist() and its breaks argument (numeric, vector, or Sturges/Scott/FD), the unequal-width-bin freq warning, silent NA handling, and ggplot2’s geom_histogram() — binwidth vs bins, group comparison with fill and facet_wrap(), and density overlays. Every output block is real R 4.6.1 / ggplot2 4.0.3 console output.

Independent-Samples t-Test in SPSS: Step by Step

How to run an independent-samples t-test in SPSS: data layout, the Define Groups dialog, which Levene’s-test row to report, reading the output table, and calculating the effect size SPSS doesn’t print by default.

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 →

Ask CASRAI · Regulatory Radar

Research-admin question? Get an answer that links its sources.

An AI assistant specialized in research administration. Every answer links its sources to check before you act. 2 questions free, no account. $29/month after.

  • Answers draw on CASRAI's guides and dictionary plus the federal and funder documents we index: Federal Register, Grants.gov, Regulations.gov and UKRI.
  • Every answer numbers its sources and links each one, so you can check the source yourself.