function `cohen.d`: Hedge's g uses wrong DFs for one-sample case

Open
#155 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
48/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Stale
Tech stack
r
Domain
data

Research direction

Start by running the provided iris minimal reproducible example and inspect the implementation of effsize::cohen.d, especially its Hedges' g degrees-of-freedom calculation. Compare the one-sample and paired cases with the independent-samples case; the issue is done when the correction uses N-1 for the former cases and N-2 only for independent samples.

Written by the indexing model from the issue text.

Description

There is a small mistake in the function cohen.d:
According to Cumming (2011) p. 294, the degrees of freedom are N-1 for a one-sample design (i.e., if f=NA) and also for a within-subjects design (i.e., if paired=T). Only for the case with two independent samples, the degrees of freedom are N-2. The function, however, also calculates N-2 for the one-sample case (and possibly also for paired=T I have not checked this.

Minimal Reproducible Example:
library(tidyverse); iris %>% group_by(Species) %>% summarise( cohen_d = effsize::cohen.d(Sepal.Length, f=NA)$estimate, n = Sepal.Length %>% na.omit() %>% length(), #should not use n() because it doesn't handle NAs correctly hedges_g = effsize::cohen.d(Sepal.Length, NA, hedges.correction=T)$estimate, hedges_g_df1 = cohen_d * (1 - (3 / (4 * (n-1) - 1))), #for one-sample & within: df = N - 1 hedges_g_df2 = cohen_d * (1 - (3 / (4 * (n-2) - 1))), #for two independent samples check_df1 = hedges_g == hedges_g_df1, check_df2 = hedges_g == hedges_g_df2 )

MRE
Dominant language
TypeScript
Stars
301
Forks
54
Avg merge
16h 19m
Merged PRs (30d)
1

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from datacamp/rdocumentation-2.0

All issues in datacamp/rdocumentation-2.0

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.