Learn R Programming

vcd (version 1.3-2)

agreementplot: Bangdiwala's Observer Agreement Chart

Description

Representation of a $k \times k$ confusion matrix, where the observed and expected diagonal elements are represented by superposed black and white rectangles, respectively. The function also computes a statistic measuring the strength of agreement (relation of respective area sums).

Usage

## S3 method for class 'default':
agreementplot(x, reverse_y = TRUE, main = NULL,
              weights = c(1, 1 - 1/(ncol(x) - 1)^2), margins = par("mar"),
              newpage = TRUE, pop = TRUE, xlab = names(dimnames(x))[2],
              ylab = names(dimnames(x))[1],
              xlab_rot = 0, xlab_just = "center",
              ylab_rot = 90, ylab_just = "center",
              fill_col = function(j) gray((1 - (weights[j]) ^ 2) ^ 0.5),
              line_col = "red", xscale = TRUE, yscale = TRUE,
               ...)
## S3 method for class 'formula':
agreementplot(formula, data = NULL, ..., subset)

Arguments

x
a confusion matrix, i.e., a table with equal-sized dimensions.
reverse_y
if TRUE, the y axis is reversed (i.e., the rectangles' positions correspond to the contingency table).
main
user-specified main title.
weights
vector of weights for successive larger observed areas, used in the agreement strength statistic, and also for the shading. The first element should be 1.
margins
vector of margins (see par).
newpage
logical; if TRUE, the plot is drawn on a new page.
pop
logical; if TRUE, all newly generated viewports are popped after plotting.
xlab, ylab
labels of x- and y-axis.
xlab_rot, ylab_rot
rotation angle for the category labels.
xlab_just, ylab_just
justification for the category labels.
fill_col
a function, giving the fill colors used for exact and partial agreement
line_col
color used for the diagonal reference line
formula
a formula, such as y ~ x. For details, see xtabs.
data
a data frame (or list), or a contingency table from which the variables in formula should be taken.
subset
an optional vector specifying a subset of the rows in the data frame to be used for plotting.
xscale, yscale
logicals indicating whether the marginals should be added on the x-axis/y-axis, respectively.
...
further graphics parameters (see par).

Value

  • Invisibly returned, a list with components
  • Bangdiwalathe unweighted agreement strength statistic.
  • Bangdiwala_Weightedthe weighted statistic.
  • weightsthe weight vector used.

Details

Weights can be specified to allow for partial agreement, taking into account contributions from off-diagonal cells. Partial agreement is typically represented in the display by lighter shading, as given by fill_col(j), corresponding to weights[j]. A weight vector of length 1 means strict agreement only, each additional element increases the maximum number of disagreement steps.

References

Bangdiwala, S. I. (1988). The Agreement Chart. Department of Biostatistics, University of North Carolina at Chapel Hill, Institute of Statistics Mimeo Series No. 1859, http://www.stat.ncsu.edu/information/library/mimeo.archive/ISMS_1988_1859.pdf

Bangdiwala, S. I., Ana S. Haedo, Marcela L. Natal, and Andres Villaveces. The agreement chart as an alternative to the receiver-operating characteristic curve for diagnostic tests. Journal of Clinical Epidemiology, 61 (9), 866-874.

Michael Friendly (2000), Visualizing Categorical Data. SAS Institute, Cary, NC.

Examples

Run this code
data("SexualFun")
agreementplot(t(SexualFun))

data("MSPatients")
## best visualized using a resized device, e.g. using:
## get(getOption("device"))(width = 12)
pushViewport(viewport(layout = grid.layout(ncol = 2)))
pushViewport(viewport(layout.pos.col = 1))
agreementplot(t(MSPatients[,,1]), main = "Winnipeg Patients",
              newpage = FALSE)
popViewport()
pushViewport(viewport(layout.pos.col = 2))
agreementplot(t(MSPatients[,,2]), main = "New Orleans Patients",
              newpage = FALSE)
popViewport(2)
dev.off()

Run the code above in your browser using DataLab