--- title: "Monitoring Improvement" author: "John MacKintosh" date: "`r Sys.Date()`" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Monitoring Improvement} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, echo = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.path = "man/figures/" ) ``` ## Use of the package to monitor improvement Let's mimic the start of an improvement initiative. We have *some* data, but not enough to derive a meaningful baseline median: ```{r not-enough-data, fig.height=5, fig.width=8} library(runcharter) library(data.table) testdf <- signals # rename the built in data set setDT(testdf) testdf <- testdf[grp == "WardX",head(.SD,7)] runcharter(testdf, med_rows = 0, runlength = 0, direction = "both", datecol = date, grpvar = grp, yval = y, facet_cols = 1, chart_breaks = ("1 month")) ``` ## Baseline data recorded After 13 data points have been collected, we can calculate our initial median. We'll use this for analysis - future points will be assessed against the median and we will look for a run of 9 consecutive points below the median. ```{r baseline-data, fig.height=5, fig.width=8} library(runcharter) library(data.table) testdf <- signals # rename the built in data set setDT(testdf) testdf <- testdf[grp == "WardX",head(.SD,13)] runcharter(testdf, med_rows = 13, runlength = 0, direction = "both", datecol = date, grpvar = grp, yval = y, facet_cols = 1, chart_breaks = ("1 month")) ``` ## Random variation We have extended our original baseline median, but no signals of improvement are visible yet ```{r random-variation, fig.height=5, fig.width=8} library(runcharter) library(data.table) testdf <- signals # rename the built in data set setDT(testdf) testdf <- testdf[grp == "WardX",head(.SD,30)] runcharter(testdf, med_rows = 13, runlength = 9, direction = "below", datecol = date, grpvar = grp, yval = y, facet_cols = 1, chart_breaks = ("3 months")) ``` ## On the road to improvement We have been working hard to deliver our improvement initiative, and we're encouraged by a run of 5 consecutive points below the median. ```{r road-to-improvement, fig.height=5, fig.width=8} library(runcharter) library(data.table) testdf <- signals # rename the built in data set setDT(testdf) testdf <- testdf[grp == "WardX",head(.SD,40)] runcharter(testdf, med_rows = 13, runlength = 9, direction = "below", datecol = date, grpvar = grp, yval = y, facet_cols = 1, chart_breaks = ("3 months")) ``` Finally, thanks to our ongoing improvement efforts, a run of 9 points on the correct side of the median line is achieved. A new median is calculated using the points from this run: ```{r run-noted, fig.height=5, fig.width=8} testdf <- signals # rename the built in data set data.table::setDT(testdf) testdf <- testdf[grp == "WardX",head(.SD,44)] runcharter(testdf, med_rows = 13, runlength = 9, direction = "below", datecol = date, grpvar = grp, yval = y, facet_cols = 1, chart_breaks = ("3 months")) ``` ## Success ```{r improvement-noted, fig.height=5, fig.width=8} testdf <- signals # rename the built in data set data.table::setDT(testdf) runcharter(testdf[grp == "WardX",], med_rows = 13, runlength = 9, direction = "below", datecol = date, grpvar = grp, yval = y, facet_cols = 1, chart_breaks = ("6 months")) ```