Nothing
## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.width = 7,
fig.height = 5
)
## ----message=FALSE, warning=FALSE---------------------------------------------
library(confMeta)
library(ggplot2)
set.seed(42)
n <- 5
conf_level <- 0.95
estimates <- rnorm(n, mean = 0.5, sd = 0.2)
SEs <- rgamma(n, shape = 5, rate = 20)
study_names <- c("Study A", "Study B", "Study C", "Study D", "Study E")
## ----eval = FALSE-------------------------------------------------------------
# ?confMeta
# ?p_value_functions
## -----------------------------------------------------------------------------
cm_edgington <- confMeta(
estimates = estimates,
SEs = SEs,
study_names = study_names,
conf_level = conf_level,
fun = p_edgington,
fun_name = "Edgington"
)
## -----------------------------------------------------------------------------
# Use the specific print argument
print(cm_edgington)
# See what elements it has
names(cm_edgington)
# Check out the combined confidence interval(s)
cm_edgington$joint_cis
## -----------------------------------------------------------------------------
# Test the null hypothesis that mu = 0 using Edgington's method
p_val_0 <- p_edgington(
estimates = estimates,
SEs = SEs,
mu = 0,
input_p = "two.sided",
output_p = "two.sided"
)
p_val_0
## ----eval = FALSE-------------------------------------------------------------
# ?autoplot.confMeta
## -----------------------------------------------------------------------------
# show the p-value function
autoplot(cm_edgington, type = "p")
## -----------------------------------------------------------------------------
# show the forest plot
autoplot(cm_edgington, type = "forest")
## ----fig.height = 6-----------------------------------------------------------
# show both
autoplot(cm_edgington)
## -----------------------------------------------------------------------------
cm_fisher <- confMeta(
estimates = estimates, SEs = SEs, study_names = study_names,
fun = p_fisher, fun_name = "Fisher", input_p = "two.sided"
)
cm_hmean <- confMeta(
estimates = estimates, SEs = SEs, study_names = study_names,
fun = p_hmean, fun_name = "Harmonic Mean", distr = "chisq"
)
## ----fig.height=8-------------------------------------------------------------
autoplot(cm_edgington, cm_fisher, cm_hmean)
## -----------------------------------------------------------------------------
weights <- 1 / SEs
cm_weighted <- confMeta(
estimates = estimates, SEs = SEs,
fun = p_edgington_w, fun_name = "Edgington (Weighted)",
w = weights, input_p = "two.sided"
)
## -----------------------------------------------------------------------------
# Estimate tau^2
tau2_est <- estimate_tau2(estimates, SEs, method.tau = "PM")
# Create a random-effects confMeta object using additive heterogeneity
cm_additive <- confMeta(
estimates = estimates,
SEs = SEs,
study_names = study_names,
fun = p_edgington,
fun_name = "Edgington (Additive RE)",
heterogeneity = "additive",
tau2 = tau2_est,
input_p = "two.sided"
)
## -----------------------------------------------------------------------------
# Estimate phi
phi_est <- estimate_phi(estimates, SEs)
# Create a confMeta object using multiplicative heterogeneity
cm_multiplicative <- confMeta(
estimates = estimates,
SEs = SEs,
study_names = study_names,
fun = p_edgington,
fun_name = "Edgington (Multiplicative)",
heterogeneity = "multiplicative",
phi = phi_est,
input_p = "two.sided"
)
## ----fig.height=6-------------------------------------------------------------
autoplot(cm_edgington, cm_additive, cm_multiplicative)
## ----message=FALSE, warning=FALSE---------------------------------------------
if (requireNamespace("bayesmeta", quietly = TRUE)) {
# Run a standard bayesmeta model
bm <- bayesmeta::bayesmeta(y = estimates, sigma = SEs)
# Add the bayesmeta posterior diamond to the forest plot
autoplot(cm_edgington, type = "forest", bayesmeta = bm)
}
## -----------------------------------------------------------------------------
# Simulated 2x2 table data for 3 clinical trials
clinical_data <- data.frame(
ai = c(12, 5, 22), # Events in experimental group
bi = c(88, 45, 78), # Non-events in experimental group
ci = c(18, 10, 30), # Events in control group
di = c(82, 40, 70), # Non-events in control group
n1i = c(100, 50, 100),
n2i = c(100, 50, 100)
)
# Use metafor::escalc to obtain log Odds Ratios (yi) and variances (vi)
if (requireNamespace("metafor", quietly = TRUE)) {
es <- metafor::escalc(
measure = "OR",
ai = ai, bi = bi, ci = ci, di = di,
data = clinical_data
)
# Create a confMeta object using MH pooling for the Fixed Effect reference
cm_clinical <- confMeta(
estimates = es$yi,
SEs = sqrt(es$vi), # Remember to take the square root of the variance!
study_names = c("Trial 1", "Trial 2", "Trial 3"),
fun = p_fisher,
fun_name = "Fisher (Clinical)",
MH = TRUE, # Turn on Mantel-Haenszel pooling
table_2x2 = clinical_data, # Provide the raw table
measure = "OR" # Specify the effect measure
)
# Notice how the "Fixed effect" comparison now uses the MH method
cm_clinical$comparison_cis
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.