Learn R Programming

GeneticsPed (version 1.34.0)

relationshipAdditive: Additive relationship matrix and its inverse

Description

relationshipAdditive creates additive relationship matrix, while inverseAdditive creates its inverse directly from a pedigree. kinship is another definition of relationship and is equal to half of additive relationship.

Usage

relationshipAdditive(x, sort=TRUE, names=TRUE, ...) inverseAdditive(x, sort=TRUE, names=TRUE, ...) kinship(x, sort=TRUE, names=TRUE, ...)

Arguments

x
Pedigree
sort
logical, for the computation the pedigree needs to be sorted, but results are sorted back to original sorting (sort=TRUE) or not (sort=FALSE)
names
logical, should returned matrix have row/colnames; this can be used to get leaner matrix
...
arguments for other methods

Value

$n * n$ dimension, where $n$ is number of subjects in x

Details

Additive or numerator relationship matrix is symetric and contains $1 + F_i$ on diagonal, where $F_i$ is an inbreeding coefficients (see inbreeding) for subject $i$. Off-diagonal elements represent numerator or relationship coefficient bewteen subjects $i$ and $j$ as defined by Wright (1922). Henderson (1976) showed a way to setup inverse of relationship matrix directly. Mrode (2005) has a very nice introduction to these concepts.

Take care with sort=FALSE, names=FALSE. It is your own responsibility to assure proper handling in this case.

References

Henderson, C. R. (1976) A simple method for computing the inverse of a numerator relationship matrix used in prediction of breeding values. Biometrics 32(1):69-83

Mrode, R. A. (2005) Linear models for the prediction of animal breeding values. 2nd edition. CAB International. ISBN 0-85199-000-2 http://www.amazon.com/gp/product/0851990002

Wright, S. (1922) Coefficients of inbreeding and relationship. American Naturalist 56:330-338

See Also

Pedigree, inbreeding and geneFlowT

Examples

Run this code
  data(Mrode2.1)
  Mrode2.1$dtB <- as.Date(Mrode2.1$dtB)
  x2.1 <- Pedigree(x=Mrode2.1, subject="sub", ascendant=c("fat", "mot"),
                   ascendantSex=c("M", "F"), family="fam", sex="sex",
                   generation="gen", dtBirth="dtB")

  (A <- relationshipAdditive(x2.1))
  fractions(A)
  solve(A)
  inverseAdditive(x2.1)
  relationshipAdditive(x2.1[3:6, ])

  ## Compare the speed
  ped <- generatePedigree(nId=10, nGeneration=3, nFather=1, nMother=2)
  system.time(solve(relationshipAdditive(ped)))
  system.time(inverseAdditive(ped))

Run the code above in your browser using DataLab