plot.tdi | R Documentation |
This function creates a Bland-Altman plot from Altman and Bland (1983), which is used to evaluate the agreement among the quantitative measures taken by two raters.
The plot displays the mean of the measurements from both raters in the x-axis and the differences between the measures taken by the two raters
in the y-axis. It can also display the TDI and UB estimates from the call of the function TDI
as well as the limits of
agreement (LoA) from Bland and Altman (1986).
## S3 method for class 'tdi'
plot(
x,
tdi = FALSE,
ub = FALSE,
loa = FALSE,
method = NULL,
ub.pc = NULL,
p = NULL,
loess = FALSE,
method.col = NULL,
loa.col = "#c27d38",
loess.col = "#cd2c35",
loess.span = 2/3,
legend = FALSE,
inset = c(-0.24, 0),
main = "Bland-Altman plot",
xlab = "Mean",
ylab = "Difference",
xlim = NULL,
ylim = NULL,
...
)
x |
input object of class |
tdi |
logical indicating whether the |
ub |
logical indicating whether the |
loa |
logical indicating whether the LoA should be added to the plot as dotted lines. |
method |
name of the method(s) for which the TDI or the UB estimates will be added to the plot. If both |
ub.pc |
name of the technique for the estimated UB to be added from the method of Perez-Jaume and Carrasco (2015). Possible values are: |
p |
value of the proportion for which the TDI and/or UB (depending on the value of the arguments |
loess |
logical indicating whether a smooth curve computed by |
method.col |
colour palette to be used in the drawing of TDIs and/or UBs. A colour should be indicated for every method asked. It is assumed that the colours
are passed in the same order as the methods passed to |
loa.col |
colour to be used in the drawing of the LoA. If |
loess.col |
colour to be used in the drawing of the loess smooth curve. If |
loess.span |
smoothness parameter for |
legend |
logical indicating whether a legend should be added outside the plot. If all |
inset |
specifies how far the legend is inset from the plot margins (to be passed to |
main |
overall title for the plot (to be passed to |
xlab |
a label for the x-axis (to be passed to |
ylab |
a label for the y-axis (to be passed to |
xlim |
the x limits of the plot (to be passed to |
ylim |
the y limits of the plot (to be passed to |
... |
other graphical parameters (to be passed to |
The LoA are computed using the formula \bar{d}\pm z_{1-\frac{\alpha}{2}}\cdot \text{sd}(d)
, where z_{1-\frac{\alpha}{2}}
is the (1-\frac{\alpha}{2})
-th
quantile of the standard normal distribution, d
is the vector containing the differences between the two raters and \bar{d}
represents their mean.
A Bland-Altman plot of the data in x
with a solid black line at differences =
0, with differences
considered as first level -
second level of the variable met
in the call of the function TDI
.
A call to par
is used in this method. Notice that the arguments
font.lab
and las
are always set to 2 and 1 respectively. Moreover,
if legend
is TRUE
, mar
is set to c(4, 4, 2, 9)
.
Altman, D. G., & Bland, J. M. (1983). Measurement in medicine: the analysis of method comparison studies. Journal of the Royal Statistical Society Series D: The Statistician, 32(3), 307-317.
Bland, J. M., & Altman, D. (1986). Statistical methods for assessing agreement between two methods of clinical measurement. The Lancet, 327(8476), 307-310.
Perez‐Jaume, S., & Carrasco, J. L. (2015). A non‐parametric approach to estimate the total deviation index for non‐normal data. Statistics in Medicine, 34(25), 3318-3335.
# normal data
set.seed(2025)
n <- 100
mu.ind <- rnorm(n, 0, 7)
epsA1 <- rnorm(n, 0, 3)
epsA2 <- rnorm(n, 0, 3)
epsB1 <- rnorm(n, 0, 3)
epsB2 <- rnorm(n, 0, 3)
y_A1 <- 50 + mu.ind + epsA1 # rater A, replicate 1
y_A2 <- 50 + mu.ind + epsA2 # rater A, replicate 2
y_B1 <- 40 + mu.ind + epsB1 # rater B, replicate 1
y_B2 <- 40 + mu.ind + epsB2 # rater B, replicate 2
ex_data <- data.frame(y = c(y_A1, y_A2, y_B1, y_B2),
rater = factor(rep(c("A", "B"), each = 2*n)),
replicate = factor(rep(rep(1:2, each = n), 2)),
subj = factor(rep(1:n, 4)))
tdi <- TDI(ex_data, y, subj, rater, replicate, p = c(0.8, 0.9),
method = c("Choudhary P", "Escaramis et al.",
"Choudhary NP", "Perez-Jaume and Carrasco"),
boot.type = "cluster", R = 1000)
plot(tdi)
# enhance plot
plot(tdi, xlim = c(20, 70), ylim = c(-20, 30), tdi = TRUE, ub = TRUE,
method = c("es", "pe"), ub.pc = "b_cb", loa = TRUE, loa.col = "red",
legend = TRUE)
# non-normal data
tdi.aml <- TDI(AMLad, mrd, id, met, rep, p = c(0.85, 0.95), boot.type = "cluster",
dec.est = 4, R = 1000)
plot(tdi.aml)
# enhance plot
plot(tdi.aml, method = c("choudhary p", "pe"), tdi = TRUE, ub = TRUE, legend = TRUE,
main = "Bland-Altman plot of the MRD")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.