Thanks a lot

On Wed, May 27, 2009 at 7:55 PM, Jim Lemon <j...@bitwrit.com.au> wrote:

> Shreyasee wrote:
>
>> Hi,
>>
>> I searched a lot on the internet but was unable to find the function for
>> calculating the kappa statistics for intra-observer reliabilty.
>> Can anybody help me in the this regards.
>>
>>
>>
> Hi Shreyasee,
> Thanks for reminding me that I had promised to rewrite Tore
> Wentzel-Larsen's relInterIntra function for the irr package. I had
> completely lost track of it. Attached is the function.
>
> Jim
>
>
> # relInterIntra
> # gives the reliability coefficients in the article by
>  # Eliasziw et. al. 1994; Phys. Therapy 74.8; 777-788.
> # all references in this function are to this article.
> # Arguments
> # x: data frame representing a data structure as in Table 1 (p 779),
> #  with consecutive measurements for each rater in adjacent columns.
> #  i.e. rater1measure1 rater1measure2 ... rater2measure1 rater2measure2
> # rho0inter: null hypothesis value of the interrater reliability
> coefficient
> # rho0intra: null hypothesis value of the intrarater reliability
> coefficient
> # conf.level: confidence level of the one-sided confidence intervals
> reported
> # for the reliability coefficients
> # output reformatted as an "irrlist" stucture - Jim Lemon 2009-05-27
>
> relInterIntra<-function(x,nrater=1,raterLabels=NULL,
>  rho0inter=0.6,rho0intra=0.8,conf.level=.95) {
>
>  xdim<-dim(x)
>  nsubj<-xdim[1]
>  nmeas<-xdim[2]/nrater
>  if(is.null(raterLabels)) raterLabels<-letters[1:nrater]
>  Frame1<-data.frame(cbind(rep(1:nsubj,nrater*nmeas),
>  rep(1:nrater,rep(nsubj*nmeas,nrater)),
>  rep(rep(1:nmeas,rep(nsubj,nmeas)),nrater),
>  matrix(as.matrix(x),ncol=1)))
>  names(Frame1)<-c('Subject','Rater','Repetition','Result')
>  Frame1$Subject<-factor(Frame1$Subject)
>  Frame1$Rater<-factor(Frame1$Rater,labels=raterLabels)
>  Frame1$Repetition<-factor(Frame1$Repetition)
>  # this and following two commands:
>  # aliases for compatibility with Eliasziw et. al. notation
>  nn<-nsubj
>  tt<-nrater
>  mm<-nmeas
>  aovFull<-aov(Result~Subject*Rater,data=Frame1)
>  meanSquares<-summary(aovFull)[[1]][,3]
>  for(raterAct in 1:tt) {
>  raterActCat<-raterLabels[raterAct]
>  aovAct<-aov(Result~Subject,data=Frame1[Frame1$Rater==raterActCat,])
>  meanSquares<-c(meanSquares,summary(aovAct)[[1]][2,3])
>  }
>  names(meanSquares)<-
>  c('MSS','MSR','MSSR','MSE',paste('MSE',levels(Frame1$Rater),sep=''))
>  MSS<-meanSquares[1]
>  MSR<-meanSquares[2]
>  MSSR<-meanSquares[3]
>  MSE<-meanSquares[4]
>  # the same for random and fixed, see table 2 (p. 780) and 3 (p. 281)
>  MSEpart<-meanSquares[-(1:4)]
>  sighat2Srandom<-(MSS-MSSR)/(mm*tt)
>  sighat2Rrandom<-(MSR-MSSR)/(mm*nn)
>  sighat2SRrandom<-(MSSR-MSE)/mm
>  # the same for random and fixed, see table 2 (p. 780) and 3 (p. 281)
>  sighat2e<-MSE
>  sighat2Sfixed<-(MSS-MSE)/(mm*tt)
>  sighat2Rfixed<-(MSR-MSSR)/(mm*nn)
>  sighat2SRfixed<-(MSSR-MSE)/mm
>  # the same for random and fixed, see table 2 (p. 780) and 3 (p. 281)
>  sighat2e.part<-MSEpart
>  rhohat.inter.random<-sighat2Srandom/
>  (sighat2Srandom+sighat2Rrandom+sighat2SRrandom+sighat2e)
>  rhohat.inter.fixed<-(sighat2Sfixed-sighat2SRfixed/tt)/
>  (sighat2Sfixed+(tt-1)*sighat2SRfixed/tt+sighat2e)
>  rhohat.intra.random<-(sighat2Srandom+sighat2Rrandom+sighat2SRrandom)/
>  (sighat2Srandom+sighat2Rrandom+sighat2SRrandom+sighat2e)
>  rhohat.intra.fixed<-(sighat2Sfixed+(tt-1)*sighat2SRfixed/tt)/
>  (sighat2Sfixed+(tt-1)*sighat2SRfixed/tt+sighat2e)
>  rhohat.intra.random.part<-(sighat2Srandom+sighat2Rrandom+sighat2SRrandom)/
>  (sighat2Srandom+sighat2Rrandom+sighat2SRrandom+sighat2e.part)
>  rhohat.intra.fixed.part<-(sighat2Sfixed+(tt-1)*sighat2SRfixed/tt)/
>  (sighat2Sfixed+(tt-1)*sighat2SRfixed/tt+sighat2e.part)
>  Finter<-(1-rho0inter)*MSS/((1+(tt-1)*rho0inter)*MSSR)
>  Finter.p<-1-pf(Finter,df1=nn-1,df2=(nn-1)*(tt-1))
>  alpha<-1-conf.level
>  nu1<-(nn-1)*(tt-1)*
>  (tt*rhohat.inter.random*(MSR-MSSR)+
>  nn*(1+(tt-1)*rhohat.inter.random)*MSSR+
>  nn*tt*(mm-1)*rhohat.inter.random*MSE)^2/
>  ((nn-1)*(tt*rhohat.inter.random)^2*MSR^2+
>  (nn*(1+(tt-1)*rhohat.inter.random)-tt*rhohat.inter.random)^2*MSSR^2+
>  (nn-1)*(tt-1)*(nn*tt*(mm-1))*rhohat.inter.random^2*MSE^2)
>  nu2<-(nn-1)*(tt-1)*
>  (nn*(1+(tt-1)*rhohat.inter.fixed)*MSSR+
>  nn*tt*(mm-1)*rhohat.inter.fixed*MSE)^2/
>  ((nn*(1+(tt-1)*rhohat.inter.fixed))^2*MSSR^2+
>  (nn-1)*(tt-1)*(nn*tt*(mm-1))*rhohat.inter.fixed^2*MSE^2)
>  F1<-qf(1-alpha,df1=nn-1,df2=nu1)
>  F2<-qf(1-alpha,df1=nn-1,df2=nu2)
>  lowinter.random<-nn*(MSS-F1*MSSR)/
>  (nn*MSS+F1*(tt*(MSR-MSSR)+nn*(tt-1)*MSSR+nn*tt*(mm-1)*MSE))
>  lowinter.random<-min(c(lowinter.random,1))
>  lowinter.fixed<-nn*(MSS-F2*MSSR)/
>  (nn*MSS+F2*(nn*(tt-1)*MSSR+nn*tt*(mm-1)*MSE))
>  lowinter.fixed<-min(c(lowinter.fixed,1))
>  Fintra<-(1-rho0intra)*MSS/((1+(mm-1)*rho0intra)*MSE*tt)
>  Fintra.p<-1-pf(Fintra,df1=nn-1,df2=nn*(mm-1))
>  Fintra.part<-(1-rho0intra)*MSS/((1+(mm-1)*rho0intra)*MSEpart*tt)
>  Fintra.part.p<-1-pf(Fintra.part,df1=nn-1,df2=nn*(mm-1))
>  F3<-qf(1-alpha,df1=nn-1,df2=nn*(mm-1))
>  lowintra<-(MSS/tt-F3*MSE)/(MSS/tt+F3*(mm-1)*MSE)
>  lowintra<-min(c(lowintra,1))
>  F4<-qf(1-alpha,df1=nn-1,df2=nn*(mm-1))
>  lowintra.part<-(MSS/tt-F4*MSEpart)/(MSS/tt+F4*(mm-1)*MSEpart)
>  for(raterAct in 1:tt)
>  lowintra.part[raterAct]<-min(lowintra.part[raterAct],1)
>  SEMintra<-sqrt(MSE)
>  SEMintra.part<-sqrt(MSEpart)
>  SEMinter.random<-sqrt(sighat2Rrandom+sighat2SRrandom+sighat2e)
>  SEMinter.fixed<-sqrt(sighat2SRfixed+sighat2e)
>  rels<-list(method="Inter/Intrarater reliability",
>  subjects=nsubj,raters=nrater,irr.name="rhohat",
>  value=list(rohat=c(rhohat.inter.random,rhohat.intra.random,
>  rhohat.inter.fixed,rhohat.intra.fixed,
>  rhohat.intra.random.part,rhohat.intra.fixed.part),
>  Fs=c(Finter,Fintra,Fintra.part),
>  pvalue=c(Finter.p,Fintra.p,Fintra.part.p),
>  lowvalue=c(lowinter.random,lowinter.fixed,lowintra,lowintra.part),
>  sem=c(SEMintra,SEMintra.part,SEMinter.random,SEMinter.fixed)),
>  stat.name="nil",statistic=NULL)
>  class(rels)<-"irrlist"
>  names(rels$value$rohat)<-
>  c('rhohat.inter.random','rhohat.intra.random',
>  'rhohat.inter.fixed','rhohat.intra.fixed',
>  paste('rhohat.intra.random.part',raterLabels,sep='.'),
>  paste('rhohat.intra.fixed.part',raterLabels,sep='.'))
>  names(rels$value$Fs)<-
>  c('Finter','Fintra',paste('Fintra',raterLabels,sep='.'))
>  names(rels$value$pvalue)<-
>
>  c("pvalue.Finter","pvalue.Fintra",paste('pvalue.Fintra',raterLabels,sep='.'))
>
>  names(rels$value$lowvalue)<-c('lowinter.random','lowinter.fixed','lowintra',
>  paste('lowintra',raterLabels,sep='.'))
>  names(rels$value$sem)<-
>  c('SEMintra',paste('SEMintra.part',raterLabels,sep='.'),
>  'SEMinter.random','SEMinter.fixed')
>  return(rels)
> }
>
>

        [[alternative HTML version deleted]]

______________________________________________
R-help@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.

Reply via email to