File: varcomp.R

package info (click to toggle)
r-cran-ape 5.8-1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 3,676 kB
  • sloc: ansic: 7,676; cpp: 116; sh: 17; makefile: 2
file content (31 lines) | stat: -rw-r--r-- 1,020 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
## varcomp.R (2004-10-29)

##   Variance Component of Mixed-Effect Linear Model

## Copyright 2004 Julien Dutheil

## This file is part of the R-package `ape'.
## See the file ../COPYING for licensing issues.

varcomp <- function(x, scale = FALSE, cum = FALSE)
{
  if (!("lme" %in% class(x))) stop("Object \"x\" is not of class \"lme\"")
  res <- seq(along = x$modelStruct$reStruct)
  var <- vector(length = length(res) + 1)
  for(i in res) {
    var[length(var) - i] <- attr(summary(x$modelStruct$reStruct[[i]]),"stdDev")[1]*x$sigma
  }
  var[length(var)] <- x$sigma
  var <- var^2
  if(scale) var <- var/sum(var)
  if(cum) var <- cumsum(var)
  names(var) <- c(rev(names(x$modelStruct$reStruct)), "Within")
  class(var) <- "varcomp"
  return(var)
}

plot.varcomp <- function(x, xlab = "Levels", ylab = "Variance", type = "b", ...) {
  if (!("varcomp" %in% class(x))) stop("Object \"x\" is not of class \"varcomp\"")
  return(xyplot(x ~ ordered(names(x), levels=rev(names(x))), xlab=xlab, ylab=ylab, type=type, ...))
}