Data definition

Data extracted from Medical Director

Source code and data can be found on Github

discuss <- as.tibble(read.csv('ResultsNotified.csv'))

head(discuss)
## # A tibble: 6 x 4
##   Period   ResultAge NotNotified Notified
##   <fctr>       <int>       <int>    <int>
## 1 Jul 2015         1          88       16
## 2 Jul 2015         2          79       35
## 3 Jul 2015         3          81       52
## 4 Jul 2015         4          30       45
## 5 Jul 2015         5          25       43
## 6 Jul 2015         6          36       51

Calculate proportions

Calculate proportion of results not notified and store in ProportionNotNotified.

discuss$ProportionNotNotified <- discuss$NotNotified/(discuss$Notified+discuss$NotNotified)

# insert some 'assumed' values, where no results are notified at the time of '0' weeks
discuss <- rbind(discuss, data.frame(Period = 'Jul 2015', NotNotified=NA, Notified=NA, ResultAge = 0, ProportionNotNotified = 1))
discuss <- rbind(discuss, data.frame(Period = 'Mar 2017', NotNotified=NA, Notified=NA, ResultAge = 0, ProportionNotNotified = 1))
discuss <- rbind(discuss, data.frame(Period = 'Jun 2017', NotNotified=NA, Notified=NA, ResultAge = 0, ProportionNotNotified = 1))
discuss <- rbind(discuss, data.frame(Period = 'Sep 2017', NotNotified=NA, Notified=NA, ResultAge = 0, ProportionNotNotified = 1))

discuss <- discuss %>%
  arrange(ResultAge)

Plot

Including fitted localized regression line (Loess), with 1.96 * Standard error (95% confidence interval) ribbons.

m <- augment(loess(ProportionNotNotified ~ ResultAge,
                   data = discuss))

discuss %>%
  plot_ly(x=~ResultAge, y=~ProportionNotNotified, color=discuss$Period, opacity=0.25, 
          type='scatter', mode='lines') %>%
  add_lines(y = ~fitted(loess(ProportionNotNotified ~ ResultAge)),
            line = list(color = 'rgba(7,164,181,1)'),
            showlegend = FALSE) %>%
  add_ribbons(data = m,
              x = ~ResultAge,
              ymin = ~.fitted - 1.96 * .se.fit,
              ymax = ~.fitted + 1.96 * .se.fit,
              line = list(color = 'rgba(7,164,181,0.05)'),
              fillcolor = 'rgba(7,164,181,0.2)',
              showlegend = FALSE) %>% 
  layout(title = "Proportion of Results not Notified
         (Results having been marked 'Discuss')
         coHealth Kensington, 2015-2017",
         xaxis = list(title = 'Age of result in weeks'),
         yaxis = list(title = 'Proportion of results not notified',
                      range = c(0,1)))