FESK.COMYour global study desk
Email us
Statistics & Data

R, Python, SPSS or jamovi: choosing statistical software and a reproducible workflow

Six months on, a reviewer asks about a number in Table 3 and you cannot remember which buttons produced it. Comparing R, Python, SPSS, Stata, jamovi and JASP, and organising projects so every result can be reproduced.

R, Python, SPSS or jamovi: choosing statistical software and a reproducible workflow

A paper comes back with a major revision after six months. The reviewer asks: “Why is N in Table 3 equal to 412 when the methods report 428?” The author reopens the data file and cannot remember which 16 people were excluded, on what criteria, through which sequence of menu clicks. The file is called “data_final_v3_NEW.sav”, and there are three others with similar names. Rebuilding the number takes two weeks.

Choosing statistical software is often discussed as a matter of taste. The more important question is whether, six months later, you or anyone else can reproduce every number in the paper exactly from the raw data. Any tool can achieve that if used properly, and any tool can fail if used badly.

Comparing the common options

ToolCostStrengthsWatch out for
RFree, open sourceVast range of statistical packages, new methods appear early, strong graphics with ggplot2Initial learning curve; many ways to do the same thing
PythonFree, open sourceStrong for large data, machine learning and automation; pandas, statsmodels, scipyFewer packages than R for some specialised statistical methods
SPSSCommercial licence, often provided by universitiesFamiliar menus, widespread in social and health sciencesEasy to analyse by clicking without keeping a record; syntax must be used deliberately
StataCommercial licenceStrong for econometrics, epidemiology and panel data; concise commandsCost; smaller community than R or Python in many fields
jamovi, JASPFreeSPSS-like interface built on R, APA-style output, Bayesian analyses (JASP)Less flexible for complex or customised analyses

In practice, the choice often depends more on your supervisor and research group than on features. If the whole lab uses Stata, using Stata gets you help fastest. What you should not do is use any tool in a way that leaves no record of the steps.

Rule one: analyse with code, not memory

Every step that turns raw data into a number in the paper should be captured as runnable code: cleaning, recoding, exclusions, analysis, figures. In SPSS, every dialog has a Paste button that writes the command to a syntax file instead of running it immediately. Getting into the habit of clicking Paste instead of OK is the single biggest improvement an SPSS user can make. In jamovi, the project file stores analyses and can export equivalent R code.

A firm companion rule: never edit the raw data by hand. No deleting rows, no fixing cells in the original file. Every change lives in code so you can always go back. Opening data in Excel and saving over the file is risky too: Excel can silently convert some strings to dates, strip leading zeros from ID codes or change decimal formats according to local settings.

A project folder structure

  • data-raw/: data exactly as received, read-only, never modified.
  • data-processed/: cleaned data created by code, which can be deleted and regenerated at any time.
  • code/: scripts numbered in running order, such as 01-clean, 02-describe, 03-main-model, 04-sensitivity, 05-figures.
  • output/: tables and figures, generated by code.
  • README: the project, data sources, running order, software and versions.

A simple test: delete data-processed and output entirely, then run the scripts in order. If every table and figure in the paper reappears identically, your project is reproducible.

Record versions and randomness

  • Different software and package versions can change results slightly. In R, renv records package versions for a project; in Python, a requirements file or conda environment does the same; at minimum, note versions in the README.
  • Anything involving randomness, such as multiple imputation, bootstrapping, train-test splits or simulation, needs a random seed (set.seed in R, random_state in Python) so reruns give the same answer.
  • Use Git for version control of your code. You do not need to be an expert; committing after each meaningful change is enough to answer “what did the model look like three months ago?”.

Dynamic documents: keeping tables and text in sync

Quarto, R Markdown and Jupyter notebooks let you interleave text and code, so numbers in sentences are pulled straight from the analysis. When data change, re-rendering updates every figure. This is the most effective defence against numbers in the text disagreeing with the tables, one of the errors reviewers catch most often. You need not write the whole paper this way; even an analysis appendix helps.

Reporting software in the paper

The methods should state the software and version, key packages with versions, and cite them. R and many packages print their preferred citation on request. Many journals encourage or require sharing analysis code; deposit it in a repository such as OSF or Zenodo to obtain a DOI and cite it in the paper. Sharing code is also a good way to force yourself to keep it tidy.

A transition path for SPSS users

  1. Weeks 1–2: keep using SPSS but Paste every analysis and save syntax in the folder structure above.
  2. Weeks 3–4: try jamovi or JASP for familiar analyses and compare results with SPSS.
  3. Month 2: learn R or Python through a small real project, such as redoing the descriptive statistics of your latest paper and checking every number.
  4. Month 3 onwards: use code for new projects, keeping SPSS for urgent tasks.

Learning a statistical programming language costs a few weeks up front and saves time on every project afterwards, especially during revisions.

In practice: a reproducibility checklist

  1. Raw data are stored separately and read-only.
  2. Every processing step lives in code or syntax, with no manual edits.
  3. Scripts are numbered in running order.
  4. Random seeds are set for every stochastic procedure.
  5. Software and package versions are recorded.
  6. A README explains how to rerun everything.
  7. You have deleted the outputs and rerun from scratch.

This week: pick a current project, reorganise it into the structure above and try rerunning it from the raw data. Wherever it breaks is exactly where a reviewer, or you in six months, would get stuck.

Câu hỏi thường gặp

Should I learn R or Python for statistics?

R is strong for specialised statistics and graphics and is widely used across the sciences; Python excels at large-scale data handling and machine learning. Prioritise whichever your research group uses.

Is SPSS still acceptable for a thesis?

Yes, if your university licenses it and your supervisor uses it. What matters is saving syntax with the Paste button so every analysis can be reproduced.

What are jamovi and JASP?

Free statistical packages with SPSS-like interfaces built on R. They handle common analyses well and produce APA-style output; JASP is particularly strong for Bayesian analysis.

How do I make my data analysis reproducible?

Keep raw data read-only, capture every step in code, number scripts in running order, set random seeds, record software versions and test by rerunning everything from scratch.

Do I need to report software versions in my paper?

Yes, state the software and version plus key packages, and cite them. This helps others reproduce your results and credits the developers.

Need specific advice for your case?

We will contact you within 24 hours.

Request consultation now

Related articles

🧭
Bạn đang ở chặng nào của đường học vị?
Nhập chỗ bạn đang đứng và đích bạn nhắm — công cụ trả về số năm, chi phí và việc phải làm từng chặng.
Show my pathway →
Miễn phí, không cần tài khoản. Xem tất cả công cụ

Need advice? Talk to us

Leave your details and our team will contact you within 24 hours. The first consultation is completely free.

or
info@fesk.com