Corrected dosresmeta and sensitivity analysis

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

Code

# 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

MI results

Stroke results

Sensitivity analysis

For sensitivity analysis I used RCS with 3 knots (as the best model for all outcomes).

  • Restrict curves to noise levels 75 dB or below (only few above this exposure – Mette checked in Dk population). Not performed yet but Andrei expects that it will not affect results.

  • Exclude studies with very high “lower level”, reference level

IHD sensitivity

Only for Pyko et all original data was affected, for the rest of the studies over 75 estimates are linearised from the original data.

Studies with risk estimates >= 75 dB
Study subtype Tranformed exposure, Lden Categorical RR (95% CI) adjusted for SES, lifestyle
Cai et al., 2018 // EPIC-OXFORD IHD 76.5 NA
Cai et al., 2018 // EPIC-OXFORD IHD 81.5 NA
Hao et al., 2022 IHD 75.3 NA
Hoffmann et al. 2015 IHD 79.1 NA
Pyko et al., 2023 // Recalculated IHD 75.0 Model 2: 40 dB: 1.00 (0.95-1.05), 45 dB: 1.00 (0.98-1.03); 50 dB: 0.99 (0.97-1.01); 55 dB: 1.00 (0.98-1.02); 60 dB: 1.02 (1.00-1.04); 65 dB: 1.04 (1.01-1.06); 70 dB: 1.08 (1.04-1.13); 75 dB: 1.16 (1.06-1.27) Size of studybase and number of cases in analysis provided in column AH.

For IHD NO studies with reference exposure levels below 60 dB were excluded - i.e. ORIGINAL graph is presented.

MI Sensitivity

Studies with risk estimates >= 75 dB
Study subtype Tranformed exposure, Lden Categorical RR (95% CI) adjusted for SES, lifestyle
Babisch et al., 1994 MI 75.0 <=60 dB: 1.0 (reference), 61-65 dB: 1.2 (0.8-1.7); 66-70 dB: 0.9 (0.6-1.4); 71-75dB: 1.1 (0.7-1.7); 76-80 dB: 1.5 (0.8-2.8) Number of cases and controls in analysis: 645 and 3390, respectively.
Babisch et al., 1994 MI 80.0 <=60 dB: 1.0 (reference), 61-65 dB: 1.2 (0.8-1.7); 66-70 dB: 0.9 (0.6-1.4); 71-75dB: 1.1 (0.7-1.7); 76-80 dB: 1.5 (0.8-2.8) Number of cases and controls in analysis: 645 and 3390, respectively.
Hao et al., 2022 MI 75.3 NA
Magnoni et al., 2021 MI 75.0 From Table 2. Lden < 65 dB: HR = 1 (ref); 65-69 dB: HR = 0.994 (0.951-1.040); 70-74 dB: HR = 1.005 (0.958-1.053); = 75 dB: HR = 0.999 (0.951-1.050). (N= 1,087,110)
Pyko et al., 2023 // Recalculated MI 75.0 Model 2: 40 db: 1.00 (0.92-1.08), 45 dB: 1.00 (0.95-1.04); 50 dB: 0.97 (0.94-1.01); 55 dB: 0.98 (0.95-1.01); 60 dB: 1.00 (0.97-1.03); 65 dB: 1.02 (0.97-1.06); 70 dB: 1.06 (0.99-1.14); 75 dB: 1.14 (0.99-1.31) Size of studybase and number of cases in analysis provided in column AH.

Storke Sensitivity

Studies with risk estimates >= 75 dB
Study subtype Tranformed exposure, Lden Categorical RR (95% CI) adjusted for SES, lifestyle
Hao et al., 2022 Stroke 75.3 NA
Magnoni et al., 2021 Ischemic stroke 75.0 NA
Cai et al., 2018 // EPIC-OXFORD Cerebrovascular disease 76.5 NA
Cai et al., 2018 // EPIC-OXFORD Cerebrovascular disease 81.5 NA