Effect Size Explained: Cohen’s d, r and More, with Real Data

Home › Research Methodology › Effect Size Explained

Quick answerAn effect size tells you how big a difference or relationship is, not just whether it exists. A p-value says “probably not chance”; an effect size says “and here is how much it matters”. Common effect sizes include Cohen’s d, correlation (r), eta squared, odds ratios and the probability of superiority.

Below, we explain effect sizes in plain language and calculate several of them live on real data from ScholarsColab.

Common effect sizes at a glance

Effect size Used with Small / medium / large (rough guide)
Cohen’s d t-test (difference in means) 0.2 / 0.5 / 0.8
Correlation r Correlation, Mann-Whitney (rank-biserial) 0.1 / 0.3 / 0.5
Eta squared (η²) ANOVA 0.01 / 0.06 / 0.14
Cramér’s V Chi-square Depends on table size; about 0.1 / 0.3 / 0.5
Odds ratio Logistic regression, 2×2 tables 1 means no effect; further from 1 means larger

Worked example: how big are the differences that matter in publishing?

We calculate several effect sizes for five real comparisons, notebook-style. Every result is calculated live, and you can run the same code yourself.

The data: 41,792 papers, mostly published between 1998 and 2026, by 967 ScholarsColab mentors (data updated 15 October 2026). The file you will load is anonymised: no paper titles, journal names or researcher identities.

Step 1: Load the data

In [1]:
import numpy as np
import pandas as pd
from datetime import date

# The ScholarsColab Research Methods Index (papers level): anonymised, updated daily
DATA = "https://scholarscolab.com/wp-json/scholarscolab/v1/research-methods-data?level=papers"
papers = pd.read_csv(DATA, comment="#")   # lines starting with # hold the citation

def p_text(p):
    return "< 0.001" if p < 0.001 else f"= {p:.3f}"

print(papers.shape)
papers.head()
Out [1]:
(41792, 15)
yearcitationsvenue_typevenue_grouptitle_wordstitle_colonreviewsystematicmachine_learningdeep_learningiotblockchaincovidsustainabilitydiscipline
02023.031journalOther journals12000000000Medicine & health
12024.024journalOther journals13000110000Medicine & health
22024.012journalOther journals16000000000Medicine & health
32024.09journalOther journals20010000000Medicine & health
42024.09journalGeneric "International Journal of"9000000000Medicine & health

Step 2: Calculate effect sizes for five comparisons

For each comparison we calculate the ratio of medians, Cohen’s d (on log citations) and the rank-biserial correlation, plus the p-value.

In [2]:
from scipy import stats
THIS_YEAR = date.today().year
w = papers[papers["year"].between(THIS_YEAR - 16, THIS_YEAR - 4)]

def effect_sizes(a, b):
    u, p = stats.mannwhitneyu(a, b, alternative="two-sided")
    la, lb = np.log(a + 1), np.log(b + 1)
    pooled = np.sqrt(((len(la) - 1) * la.var() + (len(lb) - 1) * lb.var()) / (len(la) + len(lb) - 2))
    return {"n A": len(a), "n B": len(b), "median ratio": a.median() / max(b.median(), 0.5),
            "Cohen's d (log)": (la.mean() - lb.mean()) / pooled,
            "rank-biserial r": 2 * u / (len(a) * len(b)) - 1, "p": p}

comparisons = {
    "IEEE Transactions vs other journals": (w.venue_group == "IEEE Transactions / Journals", w.venue_group == "Other journals"),
    "Open-access mega vs other journals": (w.venue_group == "Open-access mega-journals", w.venue_group == "Other journals"),
    "Review vs original": (w.review == 1, w.review == 0),
    "Journal vs conference": (w.venue_type == "journal", w.venue_type == "conference"),
    "Colon in title vs none": (w.title_colon == 1, w.title_colon == 0),
}
table = pd.DataFrame({name: effect_sizes(w.loc[a, "citations"], w.loc[b, "citations"])
                      for name, (a, b) in comparisons.items()}).T
table.round(3)
Out [2]:
n An Bmedian ratioCohen's d (log)rank-biserial rp
IEEE Transactions vs other journals252.012173.07.7221.2650.7070.000
Open-access mega vs other journals813.012173.03.7780.8030.4780.000
Review vs original1115.020930.02.3330.4150.2060.000
Journal vs conference16491.04101.01.6000.3150.1760.000
Colon in title vs none4026.018019.01.8330.3320.1640.000
How to read it: every p-value is below 0.05, so every difference is “significant”. But the effect sizes tell very different stories: “IEEE Transactions vs other journals” goes with a large effect (rank-biserial r = 0.71), while “Colon in title vs none” goes with a small one (r = 0.16). Significance answers “is it real?”; effect size answers “does it matter?”.

Step 3: Compare the sizes in a chart

In [3]:
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(8, 3.5))
ax.barh(table.index, table["rank-biserial r"], color="lightgreen", edgecolor="green")
for x in (0.1, 0.3, 0.5):
    ax.axvline(x, color="grey", linestyle=":")
ax.set_xlabel("Rank-biserial r (0.1 small, 0.3 medium, 0.5 large)")
ax.invert_yaxis()
plt.tight_layout()
plt.show()
Out [3]:
Rank-biserial correlation for each comparisonIEEE Transactions vs other journals0.7median ratio 7.7×Open-access mega vs other journals0.5median ratio 3.8×Review vs original0.2median ratio 2.3×Journal vs conference0.2median ratio 1.6×Colon in title vs none0.2median ratio 1.8×
Rank-biserial r for each comparison: about 0.1 is a small effect, 0.3 medium and 0.5 large.

The dotted guide lines in the code mark the usual small, medium and large thresholds. Use them as rough guides only; what counts as a large effect depends on your field.

Run this analysis yourself. Download the notebook and open it in Jupyter or Google Colab (File → Upload notebook). It loads the same anonymised ScholarsColab data, so your results will match this page.Download notebook (.ipynb) →Data files: papers.csv · mentors.csv

How to report effect sizes

  1. Choose the effect size that matches your test (see the table above).
  2. Report it with a confidence interval where possible.
  3. Interpret it in your field’s context; the small/medium/large labels are only rough guides.
  4. Translate it into plain words, such as “reviews receive about twice as many citations”.
  5. Use effect sizes from earlier studies to plan your sample size (power analysis).

Common mistakes reviewers point out

  • Reporting only p-values. Many journals now require effect sizes.
  • Treating a significant result as important without looking at its size.
  • Using Cohen’s labels mechanically without considering the field.
  • Choosing an effect size that does not match the test or the data.

Frequently asked questions

What is an effect size?

An effect size is a number that describes how large a difference or relationship is, independent of sample size.

Why is effect size important?

Because p-values depend heavily on sample size. With large samples, trivial effects become significant; effect sizes show whether a result matters in practice.

What is Cohen’s d?

Cohen’s d is the difference between two group means divided by their pooled standard deviation. Values around 0.2, 0.5 and 0.8 are often called small, medium and large.

What effect size goes with the Mann-Whitney U test?

Common choices are the rank-biserial correlation and the probability of superiority, the chance that a random value from one group exceeds a random value from the other.

How is effect size used in sample size calculation?

Power analysis uses the expected effect size, the significance level and the desired power to calculate how many participants a study needs.

Use this data in your own work

Use this data in your own research. Download the aggregated figures behind these charts (counts, medians and shares by type of paper, period, method and discipline) as a CSV file. Please cite it as:ScholarsColab (2026). ScholarsColab Research Methods Index [Data set]. Vidhilekha Soft Solutions Pvt Ltd. Retrieved 15 October 2026, from https://scholarscolab.com/research-methodology/. Licensed under CC BY 4.0.Download the data (CSV) →

More research methodology guides

About the data on this page. The ScholarsColab Research Methods Index is built from the Google Scholar publication lists of PhD researchers who mentor on ScholarsColab, and is updated daily as mentors and publications are added. Methods, designs and paper types are identified from titles, so papers whose titles do not mention them are not counted in those groups. The mentors are not a random sample of all researchers (engineering and computer science are strongly represented), so the figures describe this group of researchers and may not apply to research as a whole.