Department of Public Health Science, Graduate School of Public Health, Seoul National University, Seoul, Korea
Copyright © 2022 The Korean Society for Preventive Medicine
This is an Open Access article distributed under the terms of the Creative Commons Attribution Non-Commercial License (https://creativecommons.org/licenses/by-nc/4.0/) which permits unrestricted non-commercial use, distribution, and reproduction in any medium, provided the original work is properly cited.
# Load libraries library (readxl) library (dplyr) library (boot) library (stdReg) # Import liver synthetic data liver_syn_data1 <- read.csv (‘~/liver_syn_data.csv’) # [1] Build function for standardization standardization <- function( data, indices ) { liver_syn_data0 <- data[indices, ] # [1]-1. data expansion # original liver_syn_data0$data.class <- ‘ori’ # 2nd copy liver_syn_data2 <- liver_syn_data0 %>% mutate (data.class=‘T0’, Treatment=0, death=NA) # 3rd copy liver_syn_data3 <- liver_syn_data0 %>% mutate (data.class=‘T1’, Treatment=1, death=NA) # Combine all data onesample <- rbind ( liver_syn_data0, liver_syn_ data2, liver_syn_data3) # [1]-2. Fit the model fit1 <-glm (death ~ Treatment * i_bclc+age+Liver_ Cancer_Cause+MELD+cpc_cat+platelet_cat+ Sodium_level+AFP_level+Ascites_status, family= ‘binomial’,data = onesample) # Confounders in the dataset (i_bclc: BCLC stage; age: Age; Liver_Cancer_Cause: cause of liver cancer; MELD: MELD score; cpc_cat: child pugh classification; platelet_cat: Platelet count; Sodium_level: sodium level, AFP_level: alpha-fetoprotein; Ascites_status: ascites status) # [1]-3. Predict the outcome Y onesample$predicted.meanY 1 <- predict.glm (fit1, onesample, type=“response”) Y1T1=mean( onesample$predicted.meanY1 [onesample$data.class==‘T1’]) Y1T0=mean( onesample$predicted.meanY1 [onesample$data.class==‘T0’]) # [1]-4. Calculate the causal estimands ATE=Y1T1 - Y1T0 #Risk difference RR=Y1T1/Y1T0 #Relative ratio OR=(Y1T1/(1-Y1T1))/(Y1T0/(1-Y1T0)) #Odds ratio return(c(ATE, RR, OR))}
# [2] Generate confidence intervals # [2]-1. Calculate the 95% confidence interval set.seed(1234) results <- boot(data=liver_syn_data1, statistic= standardization, R=1,000, parallel=“multicore”) se <- c(sd(results$t[, 1]), sd(results$t[, 2]), sd(results$t[, 3])) mean <- results$t0 # 95% normal confidence interval using se ll1 <- mean - qnorm(0.975) * se ul1 <- mean + qnorm(0.975) * se # 95% percentile confidence interval ll2 <- c (quantile (results$t[,1], 0.025), quantile (results$t[,2], 0.025), quantile (results$t[,3], 0.025)) ul2 <- c (quantile (results$t[,1], 0.975), quantile (results$t[,2], 0.975), quantile (results$t[,3], 0.975)) # [2]-2. Present the result bootstrap <-data.frame(cbind(c(“ATE”, “RR”, “OR”), round (mean, 4), round (se, 4), round (ll1, 4), round (ul1, 4), round (ll2, 4), round (ul2, 4)), row.names=NULL) colnames (bootstrap) <- c(“Estimand”, “mean”, “se”, “Lower1”, “Upper1”, “Lower2”, “Upper2”)
# [3] Standardization using the stdReg package fit1 <-glm (death ~ Treatment * i_bclc+age+Liver_ Cancer_Cause+MELD+cpc_cat+platelet_cat+ Sodium_level+AFP_level+Ascites_status, family= ‘binomial’, data=liver_syn_data1) fit.std <- stdGlm (fit=fit1, data=liver_syn_data1, X=“Treatment”, x= seq (0,1,1)) summary (fit.std, contrast=‘difference’, reference=0) #Risk difference summary (fit.std, contrast=‘ratio’, reference=0) #Relative ratio summary (fit.std, transform=‘odds’, contrast=“ratio”, reference=0) #Odds ratio
^{} CONFLICT OF INTEREST
The authors have no conflicts of interest associated with the material presented in this paper.
^{} AUTHOR CONTRIBUTIONS
Both authors contributed equally to conceiving the study, analyzing the data, and writing this paper.
^{} FUNDING
This study was supported by the National Research Foundation of Korea (NRF) grant funded by the Korea government (MSIT) (No.2021R1A2C1014409).
Estimand | Model 11 | Model 22 | Model 33 |
---|---|---|---|
Risk difference | 0.02 (−0.01, 0.04) | 0.02 (−0.01, 0.04) | 0.02 (−0.01, 0.04) |
Relative risk | 1.09 (0.94, 1.25) | 1.10 (0.94, 1.25) | 1.10 (0.94, 1.25) |
Odds ratio | 1.12 (0.92, 1.32) | 1.12 (0.92, 1.32) | 1.12 (0.92, 1.32) |
^{} Values are presented as estimate (95% confidence interval).
^{} BCLC, Barcelona Clinic Liver Cancer.
^{1} Interaction term between treatment, BCLC stage, and alpha-fetoprotein level and other confounders are included in the model.
^{2} Interaction term between treatment, BCLC stage, and cause of liver cancer and other confounders are included in the model.
^{3} Interaction term between treatment and Child-Pugh classification and other confounders are included in the model.