50% off: Unlimited data and AI learning.
State of Data and AI Literacy Report 2025

effectsize (version 0.3.1)

F_to_eta2: Convert test statistics (F, t) to indices of partial variance explained (partial Eta / Omega / Epsilon squared and Cohen's f)

Description

These functions are convenience functions to convert F and t test statistics to partial Eta squared, (ηp2), Omega squared (ωp2), Epsilon squared (ϵp2; an alias for the adjusted Eta squared) and Cohen's f. These are useful in cases where the various Sum of Squares and Mean Squares are not easily available or their computation is not straightforward (e.g., in liner mixed models, contrasts, etc.). For test statistics derived from lm and aov models, these functions give exact results. For all other cases, they return close approximations.

See Effect Size from Test Statistics vignette.

Usage

F_to_eta2(f, df, df_error, ci = 0.9, ...)

t_to_eta2(t, df_error, ci = 0.9, ...)

F_to_epsilon2(f, df, df_error, ci = 0.9, ...)

t_to_epsilon2(t, df_error, ci = 0.9, ...)

F_to_eta2_adj(f, df, df_error, ci = 0.9, ...)

t_to_eta2_adj(t, df_error, ci = 0.9, ...)

F_to_omega2(f, df, df_error, ci = 0.9, ...)

t_to_omega2(t, df_error, ci = 0.9, ...)

F_to_f(f, df, df_error, ci = 0.9, ...)

t_to_f(t, df_error, ci = 0.9, ...)

Arguments

df, df_error

Degrees of freedom of numerator or of the error estimate (i.e., the residuals).

ci

Confidence Interval (CI) level

...

Arguments passed to or from other methods.

t, f

The t or the F statistics.

Value

A data frame with the effect size(s) between 0-1, and confidence interval(s) (Note that for ωp2 and ϵp2 it is possible to compute a negative number; even though this doesn't make any practical sense, it is recommended to report the negative number and not a 0).

Details

These functions use the following formulae:

ηp2=F×dfnumF×dfnum+dfden

ϵp2=(F1)×dfnumF×dfnum+dfden

ωp2=(F1)×dfnumF×dfnum+dfden+1

fp=ηp21ηp2

For t, the conversion is based on the equality of t2=F when dfnum=1.

Confidence Intervals

Confidence intervals are estimated using the Noncentrality parameter method; These methods searches for a the best ncp (non-central parameters) for of the noncentral F distribution for the desired tail-probabilities, and then convert these ncps to the corresponding effect sizes.

References

  • Friedman, H. (1982). Simplified determinations of statistical power, magnitude of effect and research sample sizes. Educational and Psychological Measurement, 42(2), 521-526. 10.1177/001316448204200214

  • Mordkoff, J. T. (2019). A Simple Method for Removing Bias From a Popular Measure of Standardized Effect Size: Adjusted Partial Eta Squared. Advances in Methods and Practices in Psychological Science, 2(3), 228-232. 10.1177/2515245919855053

  • Albers, C., & Lakens, D. (2018). When power analyses based on pilot data are biased: Inaccurate effect size estimators and follow-up bias. Journal of experimental social psychology, 74, 187-195. 10.31234/osf.io/b7z4q

  • Steiger, J. H. (2004). Beyond the F test: Effect size confidence intervals and tests of close fit in the analysis of variance and contrast analysis. Psychological Methods, 9, 164-182.

  • Cumming, G., & Finch, S. (2001). A primer on the understanding, use, and calculation of confidence intervals that are based on central and noncentral distributions. Educational and Psychological Measurement, 61(4), 532-574.

Examples

Run this code
# NOT RUN {
if (require("afex")) {
  data(md_12.1)
  aov_ez("id", "rt", md_12.1,
    within = c("angle", "noise"),
    anova_table = list(correction = "none", es = "pes")
  )
}
# compare to:
(etas <- F_to_eta2(
  f = c(40.72, 33.77, 45.31),
  df = c(2, 1, 2),
  df_error = c(18, 9, 18)
))

if(require(see)) plot(etas)


if (require("lmerTest")) { # for the df_error
  fit <- lmer(extra ~ group + (1 | ID), sleep)
  anova(fit)
  # Type III Analysis of Variance Table with Satterthwaite's method
  #       Sum Sq Mean Sq NumDF DenDF F value   Pr(>F)
  # group 12.482  12.482     1     9  16.501 0.002833 **
  # ---
  # Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
  F_to_eta2(16.501, 1, 9)
  F_to_omega2(16.501, 1, 9)
  F_to_epsilon2(16.501, 1, 9)
  F_to_f(16.501, 1, 9)
}

## Use with emmeans based contrasts
if (require(emmeans)) {
  warp.lm <- lm(breaks ~ wool * tension, data = warpbreaks)

  jt <- joint_tests(warp.lm, by = "wool")
  F_to_eta2(jt$F.ratio, jt$df1, jt$df2)
}
# }

Run the code above in your browser using DataLab