Chapter 16 Funnel Plots for Categorical Subgroups
Funnel plots are SPC charts with categorical subgroups, which are often sorted after size to produce funnel shaped control limits. Funnel plots are useful for comparing indicator levels from different categories, for example complication rates from different hospitals.
Figure 16.1 compares the levels of some indicator across six organisational units. One unit (E) falls below the lower control limit, indicating that its data may reflect a fundamentally different process compared to the others.
Figure 16.1: Funnel plot
Because funnel plots do not involve a natural time sequence, data points are not connected by lines, and run analysis is not applicable.
To demonstrate the construction of funnel plots we use data on urinary tract infections from the hospital_infections dataset from qicharts2.
# get urinary tract infections from hospital infections data
uti <- hospital_infections[hospital_infections$infection == 'UTI',]
# plot U chart
qic(month, n, days,
data = uti,
chart = 'u',
multiply = 10000,
facets = ~hospital,
ncol = 2,
title = 'Hospital acquired urinary tract infections in six hospitals',
ylab = 'Infections per 10,000 risk days',
xlab = 'Month')
Figure 16.2: U chart of urinary tract infections
Figure 16.2 is a traditional U chart of infection rates in six hospital. There are signals of special cause variation in two hospitals (BOH, NOH), which makes direct comparison of infection rates between hospitals pointless – it makes no sense to compare levels from data that are moving.
It is therefore important to select data from a recent and stable period of time before constructing funnel plots. In Figure 16.3 we have selected data from the most recent quarter and plotted them using hospital (rather than time) as the subgrouping variable.
# filter data to latest quarter
uti_2016q4 <- uti[uti$month >= '2016-10-01', ]
# plot "funnel" plot
qic(hospital, n, days,
data = uti_2016q4,
chart = 'u',
multiply = 10000,
title = 'Hospital acquired urinary tract infections in six hospitals',
ylab = 'Infections per 10,000 risk days',
xlab = 'Hospital')
Figure 16.3: Unordered ‘funnel’ plot of urinary tract infections
By default the x-axis will be sorted alphabetically. To produce a funnel plot, we need to sort the subgroups by size as is shown in Figure 16.4.
# order hospitals by denominator (risk days) to produce funnel
qic(reorder(hospital, days), n, days,
data = uti_2016q4,
chart = 'u',
multiply = 10000,
title = 'Hospital acquired urinary tract infections in six hospitals',
ylab = 'Infections per 10,000 risk days',
xlab = 'Hospital')
Figure 16.4: Ordered funnel plot of urinary tract infections
In summary, funnel plots are SPC charts with categorical subgroups. They are useful for comparing indicator levels across organisational units. To ensure valid comparisons, it is essential to use data from a recent, stable period that reflects only common cause variation before constructing a funnel plot.