Type: Package
Title: Meta-Analytic Effect Size Calculation for Pre-Post Designs with Correlation Imputation
Version: 1.1.1
Maintainer: Iker J. Bautista <ikerugr@gmail.com>
Description: Tools for the calculation of effect sizes (standardised mean difference) and mean difference in pre-post controlled studies, including robust imputation of missing variances (standard deviation of changes) and correlations (Pearson correlation coefficient). The main function metacor_dual() implements several methods for imputing missing standard deviation of changes or Pearson correlation coefficient, and generates transparent imputation reports. Designed for meta-analyses with incomplete summary statistics. For more details on the methods, see Higgins et al. (2023) and Fu et al. (2013).
License: MIT + file LICENSE
Encoding: UTF-8
RoxygenNote: 7.3.2
Imports: officer, stringr, stats
Suggests: knitr, rmarkdown
VignetteBuilder: knitr
NeedsCompilation: no
Packaged: 2025-07-20 16:10:54 UTC; Iker
Author: Iker J. Bautista [aut, cre], Saul M. Rodriguez [ctb]
Repository: CRAN
Date/Publication: 2025-07-22 11:11:51 UTC

Effect Sizes and Imputation for Meta-Analysis of Pre-Post Studies and Pre-Post intervention and control groups studies (metacor_dual)

Description

Calculates effect sizes (i.e., SMDpre, SMDchange, ScMDpooled, ScMDpre) and allows for various imputation methods (i.e., none, cv, direct, mean) for missing SDdiff and correlation coefficients in pre-post meta-analyses, with or without a control group. Generates a detailed imputation report in Word format.

Usage

metacor_dual(
  df,
  digits = NULL,
  add_to_df = TRUE,
  method = "both",
  apply_hedges = TRUE,
  SMD_method = "SMDpre",
  MeanDifferences = FALSE,
  impute_method = "none",
  verbose = TRUE,
  report_imputations = FALSE,
  custom_sd_diff_int = NULL,
  custom_sd_diff_con = NULL,
  single_group = FALSE
)

Arguments

df

Data frame with the necessary columns for intervention and (optionally) control groups.

digits

Number of decimal places to round results (default: NULL).

add_to_df

Logical. If TRUE, results are added to the original data frame.

method

Method for SDdiff calculation (i.e., 'p_value', 'ci', 'both').

apply_hedges

Logical. Apply Hedges' g correction? (default: TRUE)

SMD_method

Method for effect size (i.e., 'SMDpre', 'SMDchange', 'ScMDpooled', 'ScMDpre').

MeanDifferences

Logical. Calculate mean differences and variances? (default: FALSE)

impute_method

Imputation method for missing SDdiff (i.e., 'none', 'direct', 'mean', 'cv').

verbose

Logical. Print messages during processing? (default: TRUE)

report_imputations

Logical. Generate Word imputation report? (default: FALSE)

custom_sd_diff_int

List with elements 'row' and 'value' for manual sd_diff_int values.

custom_sd_diff_con

List with elements 'row' and 'value' for manual sd_diff_con values.

single_group

Logical. Is the design single-group only? (default: FALSE)

Value

Data frame with calculated variables. Optionally, a Word report ('imputation_report.docx') is generated.

References

Higgins, J. P. T., Thomas, J., Chandler, J., Cumpston, M., Li, T., Page, M. J., & Welch, V. A. (Eds.). (2023). Cochrane handbook for systematic reviews of interventions (Version 6.3). Cochrane. https://training.cochrane.org/handbook Fu, R., Vandermeer, B.W., Shamliyan, T.A., ONeil, M.E., Yazdi, F., Fox, S.H., & Morton, S.C. (2013). Handling Continuous Outcomes in Quantitative Synthesis. Methods Guide for Comparative Effectiveness Reviews. AHRQ Publication No. 13-EHC103-EF. https://effectivehealthcare.ahrq.gov/reports/final.cfm

Examples

df <- data.frame(
  study_name = c("Study1", "Study2", "Study3", "Study4",
  "Study5", "Study6", "Study7", "Study8", "Study9"),
  p_value_Int = c(1.038814e-07, NA, NA, NA, NA, 2.100000e-02, NA, NA, NA),
  n_Int = c(10, 10, 10, 10, 15, 15, 10, 10, 10),
  meanPre_Int = c(8.17, 10.09, 10.18, 9.85, 9.51, 7.70, 10.00, 11.53, 11.20),
  meanPost_Int = c(10.12, 12.50, 12.56, 10.41, 10.88, 9.20, 10.80, 13.42, 12.00),
  sd_pre_Int = c(1.83, 0.67, 0.66, 0.90, 0.62, 0.90, 0.70, 0.60, 1.90),
  sd_post_Int = c(1.85, 0.72, 0.97, 0.67, 0.76, 1.10, 0.70, 0.80, 1.80),
  upperCI_Int = c(NA, NA, NA, NA, NA, NA, NA, NA, NA),
  lowerCI_Int = c(NA, NA, NA, NA, NA, NA, NA, NA, NA)
)
result <- metacor_dual(df)
print(result)