[R-meta] Converting between SMDs and ORs for meta-analysis of prognostic fators

Scott Tagliaferri @cott@t@g||@|err| @end|ng |rom gm@||@com
Wed May 8 09:43:14 CEST 2024


Dear R-Meta,

I am conducting a systematic review and meta-analysis on prognostic factors
for identifying the recurrence of depression.

Most studies report a ratio measure (eg odds ratio) of the predictor (eg
sleep) on the outcome (recurrence of depression - yes/no). However, some
older studies report means and standard deviations of predictors across the
groups with and without recurrence of depression. I understand this can be
converted into an unadjusted log odds ratio after calculating the SMD
between groups (multiply by approx 1.81).

As an example of my question, I have simulated the data from one study with
R code using the number, mean, standard deviation, and approx min/max of
the data for one study included in the review:
1) Using the smd2or function the OR is ~2.0
2) Running a simple logistic regression on this data the OR is ~1.04

I am having issues with interpretability, and am also wondering, since
scaling is removed via the SMD, whether you can combine these in analysis
with other odds ratios and/or they need to be interpreted in a different
way?

Thank you for the help!


___________SIMULATION R CODE FOR DEMONSTRATION__________________

if (!require("WRS2")) {
  install.packages("WRS2")
}
library(WRS2)

if (!require("effectsize")) {
  install.packages("effectsize")
}
library(effectsize)

if (!require("truncnorm")) {
  install.packages("truncnorm")
}
library(truncnorm)

if (!require("meta")) {
  install.packages("meta")
}
library(meta)

######EMSLIE 2001 - sleep latency
set.seed(0)  # please run this line with the next to ensure reproducibility
emslieA <- rtruncnorm(36, a=1, b=50, mean=22.7, sd=16.1)
set.seed(0)  # please run this line with the next to ensure reproducibility
emslieB <- rtruncnorm(66, a=1, b=50, mean=16.4, sd=15.0)

######################################
#now lets check if calculated from the SMD
######################################
cohen <- cohens_d(emslieA,emslieB)
cohen

#now calculate odds ratio
smd2or(
  smd=cohen$Cohens_d,
  se.smd=(cohen$CI_high - cohen$CI_low)/3.92,
  backtransf = TRUE)

######################################
#now lets check if calculated as an OR from simple logistic regression
######################################
emslieA2 <- as.data.frame(emslieA)
emslieB2 <- as.data.frame(emslieB)

colnames(emslieA2) <- c("sleeplatency")
colnames(emslieB2) <- c("sleeplatency")

emslieA2$group <- 2
emslieB2$group <- 1

#combine the frame
emslie <- rbind(emslieA2,emslieB2)

emslie$group <- factor(emslie$group,
                                  levels = c(1,2),
                                  labels = c("No Recurrence", "Recurrence"))

#pull out the OR
logitemslie <- glm(group ~ sleeplatency, data = emslie, family =
"binomial") #specify binomial for logit.
summary(logitemslie)
exp(cbind(Odds_Ratio = coef(logitemslie), confint(logitemslie)))






Kind regards,

*Scott Tagliaferri*
Ph: +61 417 444 309 E: scott.tagliaferri using gmail.com

	[[alternative HTML version deleted]]



More information about the R-sig-meta-analysis mailing list