# Bangdiwala's Observer Agreement Chart

### Description

Representation of a *k by 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

1 2 3 4 5 6 7 8 9 10 11 12 13 14 | ```
## Default S3 method:
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,
return_grob = FALSE,
prefix = "", ...)
## 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 |

`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 |

`newpage` |
logical; if |

`pop` |
logical; if |

`return_grob` |
logical. Should a snapshot of the display be returned as a grid grob? |

`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 |

`data` |
a data frame (or list), or a contingency table from which
the variables in |

`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. |

`prefix` |
character string used as prefix for the viewport name |

`...` |
further graphics parameters (see |

### 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.

`cotabplot`

can be used for stratified analyses (see examples).

### Value

Invisibly returned, a list with components

`Bangdiwala` |
the unweighted agreement strength statistic. |

`Bangdiwala_Weighted` |
the weighted statistic. |

`weights` |
the weight vector used. |

### Author(s)

David Meyer David.Meyer@R-project.org

### 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

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | ```
data("SexualFun")
agreementplot(t(SexualFun))
data("MSPatients")
## Not run:
## 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()
## End(Not run)
## alternatively, use cotabplot:
cotabplot(MSPatients, panel = cotab_agreementplot)
``` |