AE (Adverse Events) dotplot of incidence and relative risk
Description
A threepanel display of the most
frequently occurring AEs in the active arm of a clinical
study. The first panel displays their incidence by
treatment group, with different symbols for each
group. The second panel displays the relative risk
of an event on the active arm relative to the
placebo arm, with 95% confidence intervals for a 2x2 table.
By default, the AEs are ordered by
relative risk so that events with the largest
increases in risk for the active treatment are
prominent at the top of the display.
By setting the argument sortbyRelativeRisk=FALSE
, the AEs retain
the order specified by the levels of the factor.
The third panel displays the numerical values of number of patients for
each treatment,
number of adverse events for each treatment, and relative risk.
The third panel can be suppressed by the print
method.
Usage
1 2 3 4 5 6 7 8 
Arguments
xr 
For the formula method, a formula of the form

groups 
Variable containing the treatment levels. 
data 

sortbyRelativeRisk 
logical. If 
sub 
Subtitle for the plot. The default value is the command that generates the plot. 
... 
Any of the arguments (such as the sorting options) listed in the
calling sequence for the methods documented in

Details
The first panel is an ordinary dotplot of the percent of AE observed for each treatment by AE.
The second panel shows relative risk of an event on the Treatment B arm (usually the active compound) relative to the Treatment A arm (usually the placebo), with 95% confidence intervals for a 2x2 table. Confidence intervals on the log relative risk are calculated using the asymptotic standard error formula given as Equation 3.18 in Agresti A., Categorical Data Analysis. Wiley: New York, 1990.
By default the AEdotplot
function sorts the events by relative risk.
To retain the sort order implied by the levels
of the AE
factor, specify the argument sortbyRelativeRisk=FALSE
.
To control the sort order, make the AE factor in the input dataset
an ordered
factor
and specify the levels in the order you want.
The third panel shows the numerical values of the number and percent
of observed events on each arm and the relative risk.
The display of third panel can be suppressed by specifying the
panel.widths
argument. See the discussion of the
panel.widths
in AEdotplot.data.frame
.
Value
The primary interest is in the display of the plot.
The function returns
an AEdotplot
object which is a list of three trellis
objects,
one for the the Percent plot, one for the Relative Risk plot, and one
for
the Text plot containing the table of input values. The object has
attributes

main
andsub
hold the main and subtitles. Each must be a list containing the text in the first component. 
ae.key
is a key as described inxyplot
. 
n.events
is a vector containing the number of events in each subpanel. 
panel.widths
is a vector of relative widths of the three components of the graph. The numbers must sum to one. Zero values are permitted. The first width includes the left axis and the Percent plot. The second is the Relative Risk plot, and the third is the plot of the table values. 
AEtable
is a table containing the data plotted on its row.
Note
Ann LiuFerrara was a beta tester for the shiny app.
Author(s)
Richard M. Heiberger <rmh@temple.edu>
References
Ohad Amit, Richard M. Heiberger, and Peter W. Lane. (2008) “Graphical Approaches to the Analysis of Safety Data from Clinical Trials”. Pharmaceutical Statistics, 7, 1, 20–35. http://www3.interscience.wiley.com/journal/114129388/abstract
See Also
AEdotplot.data.frame
Examples
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39  ## formula method. See ?AEdotplot.data.frame for other methods.
data(AEdata)
head(AEdata)
AEdotplot(AE ~ nAE/nTRT, groups = TRT, data = AEdata) ## sort by Relative Risk
AEdotplot(AE ~ nAE/nTRT  OrgSys, groups = TRT, data = AEdata) ## conditioned on Organ System
## Not run:
AEdotplot(AE ~ nAE/nTRT, groups = TRT, data = AEdata, sortbyVar="PCT") ## PCT A
AEdotplot(AE ~ nAE/nTRT, groups = TRT, data = AEdata, sortbyVar="PCT", sortbyVarBegin=2) ## PCT B
AEdotplot(AE ~ nAE/nTRT, groups = TRT, data = AEdata, sortbyRelativeRisk=FALSE) ## levels(AE)
AEdotplot(AE ~ nAE/nTRT  OrgSys, groups = TRT, data = AEdata, sortbyVar="ase.logrelrisk")
## End(Not run)
## Not run:
AEdotplot(AE ~ nAE/nTRT  OrgSys, groups = TRT,
data = AEdata[c(AEdata$OrgSys %in% c("GI","Resp")),])
## test sortbyRelativeRisk=FALSE
ABCD.12345 < AEdata[1:12,]
head(ABCD.12345)
AEdotplot(AE ~ nAE/nTRT  OrgSys, groups=TRT, data=ABCD.12345)
AEdotplot(AE ~ nAE/nTRT  OrgSys, groups=TRT, data=ABCD.12345, sort=FALSE)
## suppress third panel
tmp < AEdotplot(AE ~ nAE/nTRT, groups = TRT, data = AEdata)
print(tmp, AEtable=FALSE)
## End(Not run)
## Not run:
## run the shiny app
shiny::runApp(system.file("shiny/AEdotplot", package="HH"))
## End(Not run)
