datacamp / datacamp/rdocumentation-2.0
function `cohen.d`: Hedge's g uses wrong DFs for one-sample case
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 301
- Forks
- 54
- Avg merge
- 16h 19m
- Merged PRs (30d)
- 1
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
)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
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.
Assessment
- Tech stack
- r
- Domain
- data
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100