asreml.Ainverse | R Documentation

## Calculate an inverse relationship matrix

### Description

Calculates an inverse relationship matrix in sparse form from a pedigree data frame.

### Usage

    asreml.Ainverse(pedigree, fgen = list(character(0), 0.01),
                    gender = character(0), groups = 0, groupOffset = 0,
                    selfing = NA, inBreed = NA, mgs = FALSE,
                    mv = c("NA", "0", "*"))

### Arguments

`pedigree` | a data frame with (at least) three columns that correspond to the individual, male parent and female parent, respectively. The row giving the pedigree of an individual must appear before any row where that individual appears as a parent. Founders use 0 (zero) or NA in the parental columns.
`fgen` | an optional list of length 2 where `fgen[[1]]` is a character string naming the column in `pedigree` that contains the level of selfing or the level of inbreeding of an individual. In `pedigree[,fgen[[1]]]`, 0 indicates a simple cross, 1 indicates selfed once, 2 indicates selfed twice, etc. A value between 0 and 1 for a base individual is taken as its inbreeding value. If the pedigree has implicit individuals (they appear as parents but not as individuals), they will be assumed base non-inbred individuals unless their inbreeding level is set with `fgen[[2]]` where `0 < fgen[[2]] < 1` is the inbreeding level of such individuals.
`gender` | an optional character string naming the column of `pedigree` that codes for the gender of an individual. `pedigree[, gender]` is coerced to a factor and must only have two (arbitrary) levels, the first of which is taken to mean "male". An inverse relationship matrix is formed for the X chromosome as described by Fernando and Grossman (1990) for species where the male is XY and the female is XX.
`groups` | includes genetic groups in the pedigree. The first `g` lines of the pedigree identify genetic groups (with zero in both the male and female parent columns). All other rows must specify one of the genetic groups as sire or dam if the actual parent is unknown.
`groupOffset` | ~~Describe `groupOffset` here~~
`selfing` | allows for partial selfing when the third field of `pedigree` is unknown. It indicates that progeny from a cross where the male parent is unknown is assumed to be from selfing with probability s and from outcrossing with probability (1-s). This is appropriate in some forestry tree breeding studies where seed collected from a tree may have been pollinated by the mother tree or pollinated by some other tree (Dutkowski and Gilmour, 2001). Do not use the `selfing` argument in conjunction with `inBreed` or `mgs`.
`inBreed` | the inbreeding coefficient for base individuals. This argument generates the numerator relationship matrix for inbred lines. Each cross is assumed to be selfed several times to stabilize as an inbred line as is usual for cereal crops, for example, before being evaluated or crossed with another line. Since inbreeding is usually associated with strong selection, it is not obvious that a pedigree assumption of covariance of 0.5 between parent and offspring actually holds. The `inBreed` argument cannot be used in conjunction with `selfing` or `mgs`.
`mgs` | if TRUE, the third identity in the pedigree is the male parent of the female parent (maternal grand-sire) rather than the female parent.
`mv` | missing value indicator; elements of `prdigree` that exactly match `mv` are treated as missing.

### Details

`asreml.Ainverse` uses the method of Meuwissen and Luo (1992) to compute the inverse relationship matrix directly from the pedigree.

### Value

a list with the following components:

`ginv` | a data frame with 3 columns holding the lower triangle of the inverse relationship matrix in sparse form. The first 2 columns are the row and column indices of the matrix element, respectively, and the third column holds the (inverse) matrix element itself. Sort order is columns within rows, that is, the lower triangle row-wise. This data frame has an attribute `rowNames` containing the vector of identifiers for the rows matrix.
`inbreeding` | the inbreeding coefficient for each individual, calculated as `diag(A-I)`.
`det` | the log determinant.

### Author(s)

David Butler

### References

Fernando, R. and Grossman, M. (1990). Genetic evaluation with autosomal and x-chromosomal inheritance, Theoretical and Applied Genetics, 80, 75-80.

Meuwissen, T. H. E., and Luo, Z. (1992) Computing inbreeding coefficients in large populations. Genetics Selection Evolution, 24, 305-313.

### See Also

`asreml.control`

### Examples

    ## Example 1. Simple pedigree

    pdf <- data.frame(me = c(1,2,3,4,5,6,7,8,9,10),
                      dad = c(0,0,0,1,1,2,4,5,7,9),
                      mum = c(0,0,0,1,1,2,6,6,8,9))
    p.ai <- asreml.Ainverse(pdf)$ginv

    ## Example 2. Known filial generation

    pdfg <- data.frame(me = c(1,2,3,4,5,6,7),
                       dad = c(0,0,1,1,1,1,1),
                       mum = c(0,0,0,2,2,2,2),
                       fgen = c(0.8,0.0,2.0,0.0,2.0,3.0))
    pdfg.a <- asreml.Ainverse(pdfg,fgen=list('fgen',0.4))
    pdfg.ai <- pdfg.a$ginv
    pdfg.mat <- asreml.sparse2mat(pdfg.ai)
    zapsmall(solve(pdfg.mat))
    zapsmall(cbind(pdfg.a$inbreeding,diag(pdfg.mat)))