Here is a step-by-step procedure for conducting a meta-analysis using R Studio:
Load the required packages: In R Studio, you will need to load the following packages for conducting a meta-analysis: meta, dplyr, and ggplot2. To load these packages, use the following command:
library(meta) library(dplyr) library(ggplot2)
Import the data: You will need to import the data from the studies that you want to include in your meta-analysis. The data should be in a standard format, such as CSV or Excel. Once you have imported the data, you can create a data frame in R Studio using the following command:
data <- read.csv("data.csv")
Create a meta-analysis object: In R Studio, you can create a meta-analysis object using the metagen function from the meta package. This function takes as input the effect size and standard error (SE) for each study, as well as the study weights. Here is an example command for creating a random-effects meta-analysis object:
meta_obj <- metagen(effectsize, se, data = data, studlab = study_id, sm = "SMD", method.tau = "DL", method.ti = "REML")
In this command, effectsize and se are vectors containing the effect size and SE for each study, respectively. data is the data frame containing the study-level data, study_id is a vector containing the study IDs, "SMD" specifies that the effect sizes are standardized mean differences (SMDs), "DL" specifies that the DerSimonian-Laird estimator is used for estimating the between-study variance (tau-squared), and "REML" specifies that the restricted maximum likelihood (REML) method is used for estimating the between-study variance.
Conduct heterogeneity analysis: In meta-analysis, it is important to assess the heterogeneity (i.e., variability) of the effect sizes across studies. This can be done using the forest() function from the meta package, which produces a forest plot of the effect sizes and confidence intervals (CIs) for each study, as well as a summary estimate and CI for the overall effect size. Here is an example command for creating a forest plot:
forest(meta_obj, comb.random = TRUE, comb.fixed = FALSE, xlim = c(-3,3))
In this command, comb.random = TRUE specifies that a random-effects model is used, while comb.fixed = FALSE specifies that a fixed-effects model is not used. xlim = c(-3,3) sets the limits of the x-axis to be between -3 and 3.
Conduct subgroup analysis: If there is significant heterogeneity in the effect sizes across studies, you may want to conduct a subgroup analysis to explore potential sources of heterogeneity. This can be done using the metareg() function from the meta package, which allows you to fit a regression model to the effect sizes using study-level covariates. Here is an example command for conducting a subgroup analysis:
subgroup_obj <- metareg(meta_obj, ~ covariate1 + covariate2)
In this command, covariate1 and covariate2 are the study-level covariates that you want to include in the regression model.
Conduct sensitivity analysis: Sensitivity analysis is used to assess the robustness of the meta-analysis results to different assumptions or methods. One common sensitivity analysis is to remove one study at a time and examine how the overall effect size changes. This can be done using the leave1out() function from the meta package. Here is an example command for conducting a leave-one-out sensitivity analysis:
sensitivity_obj <- leave1out(meta_obj)
Conduct publication bias analysis: Publication bias is the tendency for studies with statistically significant results to be more likely to be published than studies with non-significant results. Publication bias can be assessed using funnel plots, which plot the effect sizes against the standard error and can reveal asymmetry if publication bias is present. Funnel plots can be created using the funnel() function from the meta package. Here is an example command for creating a funnel plot:
In addition to funnel plots, statistical tests can also be used to assess publication bias, such as the Egger's test or Begg's test, which can be conducted using the regtest() function from the meta package.
Visualize the results: Finally, you can use the ggforest() function from the ggplot2 package to create a forest plot that is more customizable than the forest() function from the meta package. Here is an example command for creating a forest plot using ggforest():
ggforest(meta_obj, subtitle = "Random-effects meta-analysis")
In this command, subtitle is an optional argument that allows you to add a subtitle to the forest plot.
This is a general procedure for conducting a meta-analysis in R Studio. The specific steps may vary depending on the dataset and research question.
Here is an example of conducting a meta-analysis in R Studio using the association between smoking and cancer as the research question and dataset.
smoking_data <- data.frame(study = c("Study 1", "Study 2", "Study 3", "Study 4", "Study 5"), smokers_cases = c(130, 85, 65, 140, 95), smokers_controls = c(210, 170, 140, 220, 175), non_smokers_cases = c(35, 30, 25, 50, 40), non_smokers_controls = c(85, 70, 60, 100, 75))
In this dataset, the columns represent the study name, the number of smokers with cancer and controls, and the number of non-smokers with cancer and controls.
Load the required packages:
Calculate the odds ratio and 95% confidence interval for each study using the escalc() function:
smoking_data <- escalc(measure = "OR", ai = smokers_cases, bi = smokers_controls, ci = non_smokers_cases, di = non_smokers_controls, data = smoking_data)
Create the meta-analysis object using the rma() function:
smoking_meta <- rma(yi = yi, vi = vi, data = smoking_data)
In this command, "yi" represents the log odds ratio and "vi" represents the sampling variance of the log odds ratio.
Check the summary statistics of the meta-analysis using the summary() function:
Conduct heterogeneity analysis using the Q() and tau2() functions:
Q_obj <- Q(smoking_meta) tau2_obj <- tau2(smoking_meta)
Conduct sensitivity analysis using the leave1out() function:
sensitivity_obj <- leave1out(smoking_meta)
Conduct publication bias analysis using the funnel() and regtest() functions:
Visualize the results using the forest() and ggforest() functions:
forest(smoking_meta, slab = smoking_data$study, showweights = TRUE) ggforest(smoking_meta, subtitle = "Random-effects meta-analysis")
This example demonstrates how to conduct a meta-analysis using a small dataset with five studies. In practice, a meta-analysis would typically include many more studies and may involve more complex statistical models, such as meta-regression or subgroup analyses. It is important to consult with a statistician or conduct a thorough literature review to determine the most appropriate statistical models and methods for a given meta-analysis.