[R] Extracting elements from an reStruct

Andrew Perrin clists at perrin.socsci.unc.edu
Tue May 20 21:58:04 CEST 2003


Thanks to Renaud Lancelot, here's a working solution:

icc<-function(x) {
	v<-as.numeric(VarCorr(x)[,2])
	v<-as.numeric(na.omit(v))
	v^2 / sum(v^2)
}


Best,
Andy


----------------------------------------------------------------------
Andrew J Perrin - http://www.unc.edu/~aperrin
Assistant Professor of Sociology, U of North Carolina, Chapel Hill
clists at perrin.socsci.unc.edu * andrew_perrin (at) unc.edu


On Tue, 20 May 2003, Renaud Lancelot wrote:

> Andrew Perrin wrote:
> > Sorry if this is obvious, but my S skills aren't great and I haven't been
> > able to find it documented anywhere.
> >
> > I want to write a new function for use with lme objects; the function will
> > simply calculate an ICC (aka "rho") for each level of a mixed-effects
> > model.  What I need for this is pretty simple:
> >
> > (c(var1..varn, residual)) / sum(c(var1..varn, residual))
> >
> > where var1..varn are the variances of the intercepts of each level's
> > equation, and residual is the residual variance.  The problem is getting
> > access to var1..varn (or, as R generally reports it, sd1..sdn)
> > programmatically.  I can get the residual standard deviation with:
> >
> > print(model$sigma)
> >
> > and I can view the standard deviations with:
> >
> > summary(model$modelStruct$lmeStruct)
> >
> > But I can't figure out how to get at the standard deviations without the
> > human-readable print format.
> >
> > Thanks-
> > Andy Perrin
> >
> > ----------------------------------------------------------------------
> > Andrew J Perrin - http://www.unc.edu/~aperrin
> > Assistant Professor of Sociology, U of North Carolina, Chapel Hill
> > clists at perrin.socsci.unc.edu * andrew_perrin (at) unc.edu
> >
> > ______________________________________________
> > R-help at stat.math.ethz.ch mailing list
> > https://www.stat.math.ethz.ch/mailman/listinfo/r-help
> >
>
> Here is an example:
>
>  > library(nlme)
>  > data(Orthodont)
>  > fm <- lme(distance ~ age + Sex, data = Orthodont, random = ~ 1)
>  > summary(fm)
> [...]
> Random effects:
>   Formula: ~1 | Subject
>          (Intercept) Residual
> StdDev:    1.807425 1.431592
> [...]
>
>  > ## std dev.
>  > fm$sigma
> [1] 1.431592
>
>  > ## var-cov
>  > VarCorr(fm)
> Subject = pdLogChol(1)
>              Variance StdDev
> (Intercept) 3.266784 1.807425
> Residual    2.049456 1.431592
>
>  > ## variance components
>  > v <- sqrt(as.numeric(VarCorr(fm)[,1]))
>  > v
> [1] 1.807425 1.431592
>  > v/sum(v)
> [1] 0.5580165 0.4419835
>
> Best,
>
> Renaud
>
> --
> Dr Renaud Lancelot, vétérinaire
> CIRAD, Département Elevage et Médecine Vétérinaire (CIRAD-Emvt)
> Programme Productions Animales
> http://www.cirad.fr/fr/pg_recherche/page.php?id=14
>
> ISRA-LNERV                      tel    +221 832 49 02
> BP 2057 Dakar-Hann              fax    +221 821 18 79 (CIRAD)
> Senegal                         e-mail renaud.lancelot at cirad.fr
>
>




More information about the R-help mailing list