Corrected dosresmeta

Materials and methods

The ERFs were evaluated using the dosresmeta package in R, which fits dose-response meta-analysis models using standard errors. The dosresmeta package allows for the fitting of both linear and non-linear models, including restricted cubic splines with multiple knots. The models were evaluated for linearity using likelihood ratio tests and Wald tests for overall dose-response association and deviation from linearity.

Here is a function to define dosresmeta models

# Define a function to fit a new spline-based model using standard errors
new_spline_based_on_se_old <- function(fun_dt, center=TRUE,
                                   formula="logrr ~ rcs(exp_rr, 3)") {
  # fun_dt<- stroke_list() %>% left_join(data, by = c("Study", "subtype"))
  fun_dt <- fun_dt %>% mutate(
    case=NA,
    n=NA)
  
  # Define the covariance matrices for each study
  # (based on https://alecri.github.io/downloads/codes/missing%20cases%20n.txt)
  Slist <- lapply(unique(fun_dt$id), function(i) {
    with(subset(fun_dt, id == i),
         if (any(is.na(case) | is.na(n))) {
           diag(logse[logse != 0 & !is.na(logse)]^2, nrow = sum(logse != 0 & !is.na(logse)))
         } else {
           covar.logrr(case = case, n = n, y = logrr, v = I(logse^2), type = type, covariance = "gl")
         }
    )
  })
  
  # Fit the model using dosresmeta with custom covariance matrices
  spline_model <- dosresmeta(
    formula = as.formula(formula),  
    id = fun_dt$id,                      
    se = fun_dt$logse,                   
    data = fun_dt,                      
    covariance = "user",             
    method="ml",
    Slist = Slist,                    
    center  = center,
    intercept = F,
    proc="1stage",
    
)
  
  
  return(spline_model)
}


# Define a function to fit a new spline-based model using standard errors
new_spline_based_on_se <- function(fun_dt, center=TRUE,
                                   formula="logrr ~ rcs(exp_rr, 3)") {
  # fun_dt<- stroke_list() %>% left_join(data, by = c("Study", "subtype"))

  
  
spline_model <- dosresmeta(
    formula = as.formula(formula),
    id = fun_dt$id,                      
    se = fun_dt$logse,                   
    data = fun_dt,                      
    proc = "1stage", 
    method="ml",
    center = TRUE, 
    intercept = FALSE, 
    covariance="indep",
  )


 
  
  return(spline_model)
}

With this new and old function specification we could test the output on results of IHD, Restricted Cubic splines with three knots.

‘Old’ specifications with custom covariance matrices Slist = Slist,

‘New’ specifications with independent covariance matrices covariance="indep"

IHD: Spline-based models with three knots

According to our agreement Wald test for overall dose-response association and Wald test for deviation from linearity are added to the plot displayed on the plot.

IHD results (all warinings are ON)

Warning in optim(par = par, fn = fn, gr = gr, Xlist = Xlist, Zlist = Zlist, : one-dimensional optimization by Nelder-Mead is unreliable:
use "Brent" or optimize() directly

Warning in optim(par = par, fn = fn, gr = gr, Xlist = Xlist, Zlist = Zlist, : one-dimensional optimization by Nelder-Mead is unreliable:
use "Brent" or optimize() directly

MI results

Warning in optim(par = par, fn = fn, gr = gr, Xlist = Xlist, Zlist = Zlist, : one-dimensional optimization by Nelder-Mead is unreliable:
use "Brent" or optimize() directly

Warning in optim(par = par, fn = fn, gr = gr, Xlist = Xlist, Zlist = Zlist, : one-dimensional optimization by Nelder-Mead is unreliable:
use "Brent" or optimize() directly

Stroke results (all warinings are ON)

Warning in optim(par = par, fn = fn, gr = gr, Xlist = Xlist, Zlist = Zlist, : one-dimensional optimization by Nelder-Mead is unreliable:
use "Brent" or optimize() directly

Warning in optim(par = par, fn = fn, gr = gr, Xlist = Xlist, Zlist = Zlist, : one-dimensional optimization by Nelder-Mead is unreliable:
use "Brent" or optimize() directly