Standardized Mean Difference (SMD)#
The smd
function computes standardized mean differences (effect sizes) for single-case experimental design (SCED) data. It supports both single-case and multiple-case datasets, and provides several effect size metrics including Cohen’s d, Hedges’ g, and Glass’ delta.
Function Overview#
The smd
function calculates effect sizes between two phases (typically A and B) for SCED data. It can handle both a single DataFrame or a list of DataFrames (for multiple cases).
Arguments#
data
: DataFrame or list of DataFrames containing SCED data.dvar
: Name of the dependent variable column (default: “values”).pvar
: Name of the phase variable column (default: “phase”).mvar
: Name of the measurement time variable column (default: “mt”).phases
: Tuple or list of two phases to compare (default: (1, 2)).
Returns#
A DataFrame with effect size metrics for each case.
import scia as sc
📖 scia 1.101.0.dev6 - For Documentation, visit: https://ahsankhodami.github.io/scia/intro.html
Example 1: Single-Case SMD Calculation#
# Create a single-case AB design
df = sc.create_scd(
values=[5, 7, 8, 5, 7, 12, 16, 18, 15, 14, 19],
phase_starts={"A": 1, "B": 6}
)
# Compute standardized mean differences
sc.smd(df)
Case | mA | mB | sdA | sdB | sd cohen | sd hedges | Glass' delta | Hedges' g | Hedges' g correction | Hedges' g durlak correction | Cohen's d | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Default_Case | 6.4 | 15.666667 | 1.341641 | 2.581989 | 2.057507 | 2.122193 | 6.906966 | 4.366552 | 3.992276 | 3.61115 | 4.503833 |
Example 2: Multiple-Case SMD Calculation#
# Create multiple cases
charlotte_test = sc.create_scd(
values={"A": [5, 7, 10, 5, 12], "B": [7, 10, 18, 15, 14, 19]},
name="Charlotte",
mt=list(range(11))
)
theresa_test = sc.create_scd(
values={"A": [3, 4, 3, 5], "B": [7, 4, 7, 9, 8, 10, 12]},
name="Theresa",
mt=list(range(11))
)
antonia_test = sc.create_scd(
values={"A": [9, 8, 8, 7, 5, 7], "B": [6, 14, 15, 12, 16]},
name="Antonia",
mt=list(range(11))
)
mbd_test = [charlotte_test, theresa_test, antonia_test]
# Compute SMD for all cases
sc.smd(mbd_test)
Case | mA | mB | sdA | sdB | sd cohen | sd hedges | Glass' delta | Hedges' g | Hedges' g correction | Hedges' g durlak correction | Cohen's d | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Charlotte | 7.8 | 13.833333 | 3.114482 | 4.622409 | 3.941235 | 4.022621 | 1.937187 | 1.499851 | 1.371293 | 1.240381 | 1.530823 |
1 | Theresa | 3.75 | 8.142857 | 0.957427 | 2.544836 | 1.92261 | 2.15012 | 4.58819 | 2.043075 | 1.867955 | 1.689629 | 2.284841 |
2 | Antonia | 7.333333 | 12.6 | 1.36626 | 3.974921 | 2.972092 | 2.838883 | 3.854805 | 1.855189 | 1.696173 | 1.534246 | 1.77204 |
Output#
The output DataFrame contains the following columns for each case:
Case
: Case namemA
,mB
: Means for phases A and BsdA
,sdB
: Standard deviations for phases A and BGlass' delta
: Glass’ delta effect sizesd hedges
: Pooled standard deviation for Hedges’ gHedges' g
: Hedges’ g effect sizeHedges' g correction
: Hedges’ g with small sample correctionHedges' g durlak correction
: Hedges’ g with Durlak correctionsd cohen
: Pooled standard deviation for Cohen’s dCohen's d
: Cohen’s d effect size