[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