kende jan
2008-Jul-05 08:17 UTC
[R] Bland-Altman method to measure agreement with repeated measures
Un texte encapsul? et encod? dans un jeu de caract?res inconnu a ?t? nettoy?... Nom : non disponible URL : <https://stat.ethz.ch/pipermail/r-help/attachments/20080705/878753db/attachment.pl>
Marc Schwartz
2008-Jul-05 16:43 UTC
[R] Bland-Altman method to measure agreement with repeated measures
on 07/05/2008 03:17 AM kende jan wrote:> Dear all, > > I want to use the Bland-Altman method to measure agreement with > repeated measures collected over period of time (seven periods). > > How can I do this with R > > > Many thanks >The following links should be helpful from a design/methodology perspective: Comparing within-subject variances in a study to compare two methods of measurement http://www-users.york.ac.uk/~mb55/meas/compsd.htm Agreement between methods of measurement with multiple observations per individual http://www-users.york.ac.uk/~mb55/meas/ba2007.htm and perhaps more generally: http://www-users.york.ac.uk/~mb55/meas/comfaq.htm You will need to provide more detail on your experimental design and data for any R specific guidance, which could feasibly include the use of mixed effects models where subject is a random effect. In the latter case, there is a R e-mail list focused on that approach: https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models HTH, Marc Schwartz
Nutter, Benjamin
2008-Jul-07 12:41 UTC
[R] Bland-Altman method to measure agreement with repeated measures
The function given below is one I've written to handle repeated measures. I've also included the Help File. If you happen to see any potential improvements, I would be open to suggestions. ### ### Function Code ### 'Bland.Altman' <- function(x,y,alpha=.05,rep.meas=FALSE,subject,...){ #********************************************************************** #* Construct a Bland Altman Plot #* 1. Set a few constants #* 2. Calculate mean difference #* 3. Calculate difference standard deviation #* 4. Calculate upper and lower confidence limits #* 5. Make Plot #********************************************************************** #*** 1. Set a few constants z <- qnorm(1-alpha/2) ## value of z corresponding to alpha d <- x-y ## pair-wise differences m <- (x+y)/2 ## pair-wise means #*** 2. Calculate mean difference d.mn <- mean(d,na.rm=TRUE) #*** 3. Calculate difference standard deviation if(rep.meas==FALSE){ d.sd=sqrt(var(d,na.rm=TRUE)) } else{ #*** 3a. Ensure subject is a factor variable if(!is.factor(subject)) subject <- as.factor(subject) #*** 3b. Extract model information n <- length(levels(subject)) # Number of subjects model <- aov(d~subject) # One way analysis of variance MSB <- anova(model)[[3]][1] # Degrees of Freedom MSW <- anova(model)[[3]][2] # Sums of Squares #*** 3c. Calculate number of complete pairs for each subject pairs <- NULL for(i in 1:length(levels(as.factor(subject)))){ pairs[i] <- sum(is.na(d[subject==levels(subject)[i]])==FALSE) } Sig.dl <- (MSB-MSW)/((sum(pairs)^2-sum(pairs^2))/((n-1)*sum(pairs))) d.sd <- sqrt(Sig.dl+MSW) } #*** 4. Calculate lower and upper confidence limits ucl <- d.mn+z*d.sd lcl <- d.mn-z*d.sd #*** 5. Make Plot plot(m, d,abline(h=c(d.mn,ucl,lcl)), ...) values <- round(cbind(lcl,d.mn,ucl),4) colnames(values) <- c("LCL","Mean","UCL") if(rep.meas==FALSE) Output <- list(limits=values,Var=d.sd^2) else Output <- list(limits=values,Var=Sig.dl) return(Output) } ### ### Help File ### Bland Altman Plots Description: Constructs a Bland-Altman Plot. Usage: Bland.Altman(x,y,alpha=.05,rep.meas=FALSE,subject,...) Arguments: x,y: vectors of values to be compared. alpha: Significance level for determining confidence limits. Defaults to 0.05 rep.meas: Toggles if data provided should be considered as repeated measures. Defaults to 'FALSE' subject: Required if 'rep.meas=TRUE'. A vector of the same length of 'x' and 'y' that denotes which subject/group the measurement belongs to. ...: Other arguments to be passed to the 'plot' method. Details: When 'rep.meas=TRUE', the confidence limits are calculated using a method proposed by Bland and Altman. These limits are slightly wider, allowing for the correlation within subjects/factors. The standard deviation used to compute these limits is: sigma^2[d] = sigma^2[dI] + sigma^2[dw] where sigma^2[d] is the variance of the differences, sigma^2[dI] is the variance of the subjects and methods interaction, and sigma^2[dw] is the within subject variation. Estimates of these values can be found with s^2[dw] = MSw s^2[dI] = (MSb - MSw) / ((sum(m[i])^2 - sum(m[i]^2)) / ((n-1)*sum(m[i])) ) Where MSb and MSw are the between and within subject variance of the one way analysis of variance and m[i] is the number of pairs for the ith subject. The sum of these two estimates provides the estimate for s^2[d] . Value: limits: A vector containing the Mean Bias and confidence limits. Var.dl: The Variance of the Bias. If 'rep.meas=TRUE', this is s^2[dI] . Author(s): Benjamin Nutter nutterb at ccf.org Created: December 2007 References: J Martin Bland and Douglass G Altman, "Measuring Agreement in Method Comparison Studies", _Statistical Methods in Medical Research_, 1999; 8: 135 - 160. J Martin Bland and Doublas G. Altman, "Agreement Between Methods of Measurement with Multiple Observations per Individual" _Journal of Biopharmaceutical Statistics_ 17:571-582, 2007. (Corrects the formula given in the 1999 paper). Burdick RK, Graybill FA. _Confidence Intervals on Variance Components_. New York: Dekker, 1992. Examples: observer1=rnorm(500,5,2) observer2=rnorm(500,10,4) ID=rep(1:50,10) Bland.Altman(observer1,observer2) Bland.Altman(observer1,observer2,rep.meas=TRUE,subject=ID) -----Original Message----- From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf Of kende jan Sent: Saturday, July 05, 2008 4:18 AM To: R-help at r-project.org Subject: [Possible SPAM] [R] Bland-Altman method to measure agreement with repeated measures Dear all, I want to use the Bland-Altman method to measure agreement with repeated measures collected over period of time (seven periods). How can I do this with R Many thanks ________________________________________________________________________ _____ o.fr [[alternative HTML version deleted]] ______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. P Please consider the environment before printing this e-mail Cleveland Clinic is ranked one of the top hospitals in America by U.S. News & World Report (2007). Visit us online at http://www.clevelandclinic.org for a complete listing of our services, staff and locations. Confidentiality Note: This message is intended for use\...{{dropped:13}}