intervalICC {iRepro} | R Documentation |
Intraclass Correlation Coefficient for Interval-Censored Data
Description
The function calculates intraclass correlation coefficient (ICC) for interval-censored data with two repeated measurements. ICC is estimated by maximum likelihood from model with one fixed and one random effect (both intercepts).
Usage
intervalICC(r1, r2, predefined.classes=FALSE, classes, c.limits, optim.method=1)
Arguments
r1 |
data corresponding to the first measurement. If |
r2 |
data corresponding to the second measurement. If |
predefined.classes |
logical, indicating whether observations belong to predefined classes (e.g. grouped data in questionnaires) or each observation has its own lower and upper limit (default; |
classes |
a vector with unique labels for the k predefined classes. Required if |
c.limits |
a matrix or a data frame with k rows and 2 columns, corresponding to lower and upper bounds of censoring intervals for classes. Required if |
optim.method |
an integer (1 or 2) specifying the optimization method to be used in maximum likelihood estimation (default is 1). Details are given below. |
Details
ICC is estimated by maximum likelihood from random effects model
Y_{ij} = \mu + b_i + e_{ij},
where b_i
and e_{ij}
are independent and normally distributed with means 0 and variances \sigma^2_b
and \sigma^2
, respectively. If data were uncensored, this would be analogous to
lme(ratings~1, random=~1|id, method="ML", data=observed)
in nlme
package, where
observed=as.data.frame(rbind(cbind(r1,1:n), cbind(r2,1:n)))
and colnames(observed)=c("ratings","id")
.
To maximize log-likelihood, constrOptim
from stats
package is used (method=BFGS
).
Two available optimization methods, specified by optim.method
, correspond to two mathematically equivalent expressions for log-likelihood. The option optim.method=1
resulted in slightly more accurate estimates in
simulations with grouped data, but optim.method=2
was more numerically stable. See the reference for more details.
Value
An object of class "ICCfit". The object is a list with the components:
icc |
maximum likelihood estimate (MLE) of ICC |
sigma2.b |
MLE of between-class variance |
sigma2.w |
MLE of within-class variance |
mu |
MLE of mean |
loglikelihood |
log-likelihood evaluated at MLE parameters |
Note
If there are many observations with same values (i.e. with the same lower and upper bounds), it is advisable to group all observations into classes
and use option predefined.classes=TRUE
; this will reduce
computation time.
Subjects with only one measurement are omitted from ICC calculation.
Author(s)
Jelena Kovacic jkovacic@imi.hr
References
Kovacic J, Varnai VM. Intraclass correlation coefficient for grouped data. Epidemiology 2014;25(5):769–770.
See Also
Examples
# Example with 6 predefined classes (grouped data)
classes <- 1:6
class.limits <- cbind(classes-0.5,classes+0.5)
r1 <- sample(classes,30,replace=TRUE)
r2 <- sample(classes,30,replace=TRUE)
intervalICC(r1,r2,predefined.classes=TRUE,classes,class.limits)
# The same result can be obtained with predefined.classes=FALSE option,
# although with slower computation time
rtg1 <- matrix(nrow=30,ncol=2)
rtg2 <- matrix(nrow=30,ncol=2)
# when predefined.classes=FALSE, ratings must be given with lower and upper bounds
# for each observation:
for(i in 1:length(classes)){
rtg1[r1==classes[i],1] <- class.limits[i,1]
rtg1[r1==classes[i],2] <- class.limits[i,2]
rtg2[r2==classes[i],1] <- class.limits[i,1]
rtg2[r2==classes[i],2] <- class.limits[i,2]
}
intervalICC(rtg1,rtg2,predefined.classes=FALSE)