Brief Summary

This is an examination of Sepsis (A40-A41) mortality rates in the US from 1999-2013 using CDC WONDER’s Multiple Causes of Death data

R packages deployed

library(dplyr)
library(ggplot2)
library(knitr)
library(xtable)

Data Processing

setwd("C:/Users/jkempke/Box Sync/Discovery Phase/Shea data/Raw Data/CSV")
sepsis <- read.csv("MCOD sepsis.csv")
colnames(sepsis) <- c("Year", "Year.Code", "Deaths", "Population", "crude.rate",
                      "age.rate", "ageL95", "ageU95")

sepsis <- sepsis %>%
    filter(is.na(Year) == FALSE) %>%
    mutate(ARDS = "With ARDS")

sepsis_ards <- read.csv("MCOD sepsis and ARDS.csv")
colnames(sepsis_ards) <- c("Year", "Year.Code", "Deaths", "Population", "crude.rate",
                      "age.rate", "ageL95", "ageU95")

sepsis_ards <- sepsis_ards %>%
    filter(is.na(Year) == FALSE)

sepsis_wo_ards <-  sepsis_ards %>%
    mutate(ARDS= "Without ARDS") %>%
    select( - ageL95, -ageU95) 

sepsis_wo_ards$crude.rate <- sepsis$crude.rate - sepsis_ards$crude.rate
sepsis_wo_ards$age.rate <- sepsis$age.rate - sepsis_ards$age.rate
sepsis_wo_ards$Deaths <- sepsis$Deaths - sepsis_ards$Deaths

sepsis <- select(sepsis,  - ageL95, -ageU95)

sepsis <- rbind(sepsis, sepsis_wo_ards)
sepsis$Year.Code <- as.factor(sepsis$Year.Code)
sepsis$ARDS <- as.factor(sepsis$ARDS)

sepsis <- sepsis %>%
        select(-Year.Code) %>%
        arrange(Year, ARDS)
kable(sepsis, type="markdown")
Year Deaths Population crude.rate age.rate ARDS
1999 139086 279040168 49.8 50.9 With ARDS
1999 135559 279040168 48.5 49.6 Without ARDS
2000 137393 281421906 48.8 49.7 With ARDS
2000 133933 281421906 47.6 48.5 Without ARDS
2001 139909 284968955 49.1 49.7 With ARDS
2001 136753 284968955 48.0 48.6 Without ARDS
2002 143232 287625193 49.8 50.2 With ARDS
2002 140001 287625193 48.7 49.1 Without ARDS
2003 145403 290107933 50.1 50.1 With ARDS
2003 142505 290107933 49.1 49.1 Without ARDS
2004 145756 292805298 49.8 49.4 With ARDS
2004 142955 292805298 48.8 48.5 Without ARDS
2005 152706 295516599 51.7 50.8 With ARDS
2005 149949 295516599 50.8 49.9 Without ARDS
2006 152415 298379912 51.1 49.7 With ARDS
2006 149846 298379912 50.2 48.9 Without ARDS
2007 152558 301231207 50.6 48.8 With ARDS
2007 150008 301231207 49.8 48.0 Without ARDS
2008 159403 304093966 52.4 50.0 With ARDS
2008 156663 304093966 51.5 49.2 Without ARDS
2009 157404 306771529 51.3 48.4 With ARDS
2009 154576 306771529 50.4 47.5 Without ARDS
2010 159642 308745538 51.7 48.3 With ARDS
2010 156954 308745538 50.8 47.5 Without ARDS
2011 164805 311591917 52.9 48.5 With ARDS
2011 162058 311591917 52.0 47.7 Without ARDS
2012 165092 313914040 52.6 47.4 With ARDS
2012 162374 313914040 51.7 46.6 Without ARDS
2013 173620 316128839 54.9 48.8 With ARDS
2013 170666 316128839 54.0 48.0 Without ARDS
2014 182242 318857056 57.2 50.0 With ARDS
2014 178965 318857056 56.2 49.1 Without ARDS

Graph

ggplot(sepsis, aes(Year, age.rate, color=ARDS))+   
    ylim(0, 51)+
    scale_x_continuous(breaks=seq(1999, 2013, 1)) +
    geom_line()+
    theme_bw()+
    theme(legend.title = element_blank())+
    labs(y="Age-Adjusted Mortality (per 100,000")

Quasi-Poisson Regression without Interaction

sepsis$pseudopop <- round((sepsis$Population * sepsis$age.rate)/100000)
model.sum <-summary(model <- glm(pseudopop ~ Year + ARDS, 
                    family="quasipoisson", data=sepsis, offset = log(Population)))
output<- as.data.frame(xtable(model.sum))
colnames(output) <- c("estimate", "std.error", "t", "p")
output$rate.ratio <- exp(output$estimate)
output$upper95 <- exp((1.96 * output$std.error) + output$estimate)
output$lower95 <- exp(output$estimate - (1.96 * output$std.error))
output <- output[-1,]
output <- round(output, digits = 3)

kable(output, type="markdown")
estimate std.error t p rate.ratio upper95 lower95
Year -0.002 0.001 -3.798 0.001 0.998 0.999 0.997
ARDSWithout ARDS -0.019 0.006 -3.380 0.002 0.981 0.992 0.971

The graph and data tables do not suggest a major difference in sepsis mortality rates with and without ARDS. Results from the quasi-Poisson regression demonstrate that at a significance of 0.05 there is a difference between the rates.


Quasi-Poisson Regression with Interaction

sepsis$pseudopop <- round((sepsis$Population * sepsis$age.rate)/100000)
model.sum <-summary(model <- glm(pseudopop ~ Year + ARDS + Year:ARDS, 
                    family="quasipoisson", data=sepsis, offset = log(Population)))
output<- as.data.frame(xtable(model.sum))
colnames(output) <- c("estimate", "std.error", "t", "p")
output$rate.ratio <- exp(output$estimate)
output$upper95 <- exp((1.96 * output$std.error) + output$estimate)
output$lower95 <- exp(output$estimate - (1.96 * output$std.error))
output <- output[-1,]
output <- round(output, digits = 3)

kable(output, type="markdown")
estimate std.error t p rate.ratio upper95 lower95
Year -0.003 0.001 -2.951 0.006 0.997 0.999 0.996
ARDSWithout ARDS -1.043 2.475 -0.422 0.677 0.352 45.046 0.003
Year:ARDSWithout ARDS 0.001 0.001 0.414 0.682 1.001 1.003 0.998

Significance Test

m0 <- glm(pseudopop ~ Year + ARDS, 
                    family="quasipoisson", data=sepsis, offset = log(Population))
m1 <- glm(pseudopop ~ Year + ARDS + Year:ARDS, 
                    family="quasipoisson", data=sepsis, offset = log(Population))
print(anova(m0, m1, test="Chisq"))
## Analysis of Deviance Table
## 
## Model 1: pseudopop ~ Year + ARDS
## Model 2: pseudopop ~ Year + ARDS + Year:ARDS
##   Resid. Df Resid. Dev Df Deviance Pr(>Chi)
## 1        29     1063.4                     
## 2        28     1056.9  1   6.4784   0.6789

Consistent with the visibly parallel graphs, the results from the regression analyses do not demonstrate an effect modification of time on the relative differences in age-adjusted sepsis mortality rates with and without ARDS at a significance of 0.05.

Conclusions

Our statistical tests indicate that from 1999-2013 in the US, sepsis without ARDS has a uniformly lower relative average age-adjusted mortality than sepsis with ARDS.