I am examining the reliability of a measuring device by measuring a force generated på test persons 7 days apart using R.

In order to assess this properly I want to make a Bland & Altman plot that takes into account that it is the same device I am using to perform the measurements. As I understand, in this case a regular Bland & Altman plot is not correct to plot. So I have trid to use the MethComp package. My data looks like this:

listing of the data

I have ten subjects (Id) doing the measurent once (Rep), at two different timepoints (Method)

First I form a meth object:

vag4 <- Meth(vkextlong,
             meth = "Method",
             repl = "Rep",
             item = "Id",
             y = "y")

and then run the ba.plot

        model = "linked",
        axlim = c(0,1000),
        diflim = c(-240,170))

Which gives me this plot

the Bland-Altman plot

However I am in doubt if it is correct: 1. Is the data set up correctly? 2. Is it correct to use the "linked" method?

Any experts on this out there?


1 Answer 1


It looks correct to me, and this is a regular Bland-Altman plot. A Bland-Altman plot plots the average of the two measures on the X axis, and the difference of the two measures on the Y axis. If there is a correlation in the plot, it suggests that the measurement error is not independent of the underlying true value.

Here is an example constructing the individual elements of the chart from your base data. It just appears that your particular plotting function makes this a bit easier to make this sort of plot when the data are in long format as opposed to wide format.

txt <- textConnection("ID Rep1 Rep2
1 448.6 412.7
2 496.2 580.2
3 755.6 756.8
4 959.3 1005.8
5 557.8 559.7
6 962.4 924.0
7 508.4 412.6
8 599.8 647.4
9 459.5 498.9
10 582.6 632.7")
MyDat <- read.table(txt, header=TRUE)

MyDat$Av <- (MyDat$Rep1 + MyDat$Rep2)/2 #X axis average
MyDat$Dif <- MyDat$Rep1 - MyDat$Rep2    #Y axis differences

abline(h=mean(MyDat$Dif) - 2*sd(MyDat$Dif),col='blue')
abline(h=mean(MyDat$Dif) + 2*sd(MyDat$Dif),col='blue')

enter image description here


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.