knitr::opts_chunk$set(echo = FALSE, results = 'asis')
devtools::load_all()

Inverse von $A$

$$A^{-1} = L^{-1} * D^{-1} * (L^T)^{-1}$$

Berechnung der Inzuchtkoeffizienten

Cholesky-Zerlegung von $A$

$$A = R * R^T$$

wobei $R$ linke untere Dreiecksmatrix

Kleines Beispiel

nAnzAni <- 3
matA <- matGetMatElem(psBaseElement = "a", pnNrRow = nAnzAni, pnNrCol = nAnzAni)
matR <- matLowerTri(psBaseElement = "r", pnNrRow = nAnzAni, pnNrCol = nAnzAni)
cat("$$\\left[")
cat(paste(sGetTexMatrix(pmatAMatrix = matA), collapse = "\n"))
cat("\\right] \n")
cat(" = \\left[")
cat(paste(sGetTexMatrix(pmatAMatrix = matR), collapse = "\n"))
cat("\\right] \n")
cat(" * \\left[")
cat(paste(sGetTexMatrix(pmatAMatrix = t(matR)), collapse = "\n"))
cat("\\right] \n")
cat("$$\n")

Rekursive Berechnung von $R$

$$A = R * R^T = L * D * L^T$$

$$A = L * D * L^T = L * S * (L * S)^T = L * S * S^T * L^T$$

wobei $S$ eine Diagonalmatrix mit $s_{ii} = \sqrt{d_{ii}}$

Kleines Beispiel

$$

matL <- matLowerTri(psBaseElement = "l", pnNrRow = nAnzAni, pnNrCol = nAnzAni, pvecDiag = 1)
matS <- matDiag(psBaseElement = "s", pnNrRow = nAnzAni, pnNrCol = nAnzAni)
cat("\\left[")
cat(paste(sGetTexMatrix(pmatAMatrix = matR), collapse = "\n"))
cat("\\right]  = \n")
cat("\\left[")
cat(paste(sGetTexMatrix(pmatAMatrix = matL), collapse = "\n"))
cat("\\right]  * \n")
cat("\\left[")
cat(paste(sGetTexMatrix(pmatAMatrix = matS), collapse = "\n"))
cat("\\right]\n")

$$

wobei $l_{ij} = {1\over 2}\ (l_{sj} + l_{dj})$

Unser Beipielpedigree

suppressPackageStartupMessages(library(pedigreemm))
nNrAni <- 6
pedEx1 <- pedigree(sire = c(NA,NA,1,1,4,5),
                   dam = c(NA,NA,2,NA,3,2),
                   label = as.character(1:nNrAni))
print(pedEx1)

Tier 1

matA <- as.matrix(getA(pedEx1))
vecA <- as.vector(diag(matA))
matR <- t(chol(matA))

$$a_{11} = 1 + F_1 = r vecA[1]$$

Tier 2

$$a_{22} = r_{21}^2 + r_{22}^2$$

$$r_{21} = r matR[2,1]$$.

$$r_{22} = r matR[2,2]$$

$$a_{22} = r_{21}^2 + r_{22}^2 = r matR[2,1]^2 + r matR[2,2]^2 = r matR[2,1]^2 + matR[2,2]^2$$

Tier 3

$$r_{31} = {1\over 2}(r_{11} + r_{21}) = {1\over 2}(r matR[1,1] + r matR[2,1]) = r 0.5*(matR[1,1] + matR[2,1])$$

stopifnot(all.equal(0.5*(matR[1,1] + matR[2,1]), matR[3,1]))

$$r_{32} = {1\over 2}(r_{12} + r_{22}) = {1\over 2}(r matR[1,2] + r matR[2,2]) = r 0.5*(matR[1,2] + matR[2,2])$$

stopifnot(all.equal(0.5*(matR[1,2] + matR[2,2]), matR[3,2]))

$$r_{33} = \sqrt{1 - 0.25(a_{11} + a_{22})} = \sqrt{1 - 0.25(r vecA[1] + r vecA[2])} = \sqrt{r 1-0.25*(vecA[1]+vecA[2])} = r sqrt(1-0.25*(vecA[1]+vecA[2]))$$

stopifnot(all.equal(sqrt(1-0.25*(vecA[1]+vecA[2])), matR[3,3]))

$$a_{33} = r_{31}^2 + r_{32}^2 + r_{33}^2 = r matR[3,1]^2 + r matR[3,2]^2 + r matR[3,3]^2 = r matR[3,1]^2 + matR[3,2]^2 + matR[3,3]^2 $$

stopifnot(all.equal(matR[3,1]^2 + matR[3,2]^2 + matR[3,3]^2, vecA[3]))

Tier 4

$$r_{41} = {1\over 2} * r_{11} = {1\over 2} * r matR[1,1] = r 0.5 * matR[1,1]$$

stopifnot(all.equal(0.5 * matR[1,1], matR[4,1]))

$$r_{42} = {1\over 2} * r_{12} = {1\over 2} * r matR[1,2] = r 0.5 * matR[1,2]$$

stopifnot(all.equal(0.5 * matR[1,2], matR[4,2]))

$$r_{43} = {1\over 2} * r_{13} = {1\over 2} * r matR[1,3] = r 0.5 * matR[1,3]$$

stopifnot(all.equal(0.5 * matR[1,3], matR[4,3]))

$$r_{44} = \sqrt{1 - {1\over 4} * a_{11}} = \sqrt{1 - {1\over 4} * r vecA[1]} = r sqrt(1 - 0.25*vecA[1]) $$

stopifnot(all.equal(sqrt(1 - 0.25*vecA[1]), matR[4,4]))

Tier 5

$$r_{51} = {1\over 2}(r_{41} + r_{31}) = {1\over 2}(r matR[4,1] + r matR[3,1]) = r 0.5*(matR[4,1] + matR[3,1])$$

stopifnot(all.equal(0.5*(matR[4,1] + matR[3,1]), matR[5,1]))

$$r_{52} = {1\over 2}(r_{42} + r_{32}) = {1\over 2}(r matR[4,2] + r matR[3,2]) = r 0.5*(matR[4,2] + matR[3,2])$$

stopifnot(all.equal(0.5*(matR[4,2] + matR[3,2]), matR[5,2]))

$$r_{53} = {1\over 2}(r_{43} + r_{33}) = {1\over 2}(r matR[4,3] + r matR[3,3]) = r 0.5*(matR[4,3] + matR[3,3])$$

stopifnot(all.equal(0.5*(matR[4,3] + matR[3,3]), matR[5,3]))

$$r_{54} = {1\over 2}(r_{44} + r_{34}) = {1\over 2}(r matR[4,4] + r matR[3,4]) = r 0.5*(matR[4,4] + matR[3,4])$$

stopifnot(all.equal(0.5*(matR[4,4] + matR[3,4]), matR[5,4]))

$$r_{55} = \sqrt{1 - 0.25(a_{44}+a_{33})} = \sqrt{1 - 0.25(r vecA[4] + r vecA[3])} = r sqrt(1 - 0.25*(vecA[4] + vecA[3])) $$

stopifnot(all.equal(sqrt(1 - 0.25*(vecA[4] + vecA[3])), matR[5,5]))

$$a_{55} = r_{51}^2 + r_{52}^2 + r_{53}^2 + r_{54}^2 + r_{55}^2 = r matR[5,1]^2 + matR[5,2]^2 + matR[5,3]^2 + matR[5,4]^2 + matR[5,5]^2 $$

stopifnot(all.equal(matR[5,1]^2 + matR[5,2]^2 + matR[5,3]^2 + matR[5,4]^2 + matR[5,5]^2, vecA[5]))

Tier 6

$$r_{61} = {1\over 2}(r_{51} + r_{21}) = {1\over 2}(r matR[5,1] + r matR[2,1]) = r 0.5*(matR[5,1] + matR[2,1])$$

stopifnot(all.equal(0.5*(matR[5,1] + matR[2,1]), matR[6,1]))

$$r_{62} = {1\over 2}(r_{52} + r_{22}) = {1\over 2}(r matR[5,2] + r matR[2,2]) = r 0.5*(matR[5,2] + matR[2,2])$$

stopifnot(all.equal(0.5*(matR[5,2] + matR[2,2]), matR[6,2]))

$$r_{63} = {1\over 2}(r_{53} + r_{23}) = {1\over 2}(r matR[5,3] + r matR[2,3]) = r 0.5*(matR[5,3] + matR[2,3])$$

stopifnot(all.equal(0.5*(matR[5,3] + matR[2,3]), matR[6,3]))

$$r_{64} = {1\over 2}(r_{54} + r_{24}) = {1\over 2}(r matR[5,4] + r matR[2,4]) = r 0.5*(matR[5,4] + matR[2,4])$$

stopifnot(all.equal(0.5*(matR[5,4] + matR[2,4]), matR[6,4]))

$$r_{65} = {1\over 2}(r_{55} + r_{25}) = {1\over 2}(r matR[5,5] + r matR[2,5]) = r 0.5*(matR[5,5] + matR[2,5])$$

stopifnot(all.equal(0.5*(matR[5,5] + matR[2,5]), matR[6,5]))

$$r_{66} = \sqrt{1 - 0.25(a_{55}+a_{22})} = \sqrt{1 - 0.25(r vecA[5]+ r vecA[2])} = r sqrt(1 - 0.25*(vecA[5]+ vecA[2])) $$

stopifnot(all.equal(sqrt(1 - 0.25*(vecA[5]+ vecA[2])), matR[6,6]))

$$a_{66} = r_{61}^2 + r_{62}^2 + r_{63}^2 + r_{64}^2 + r_{65}^2 + r_{66}^2 = r matR[6,1]^2 + matR[6,2]^2 + matR[6,3]^2 + matR[6,4]^2 + matR[6,5]^2 + matR[6,6]^2 $$

stopifnot(all.equal(matR[6,1]^2 + matR[6,2]^2 + matR[6,3]^2 + matR[6,4]^2 + matR[6,5]^2 + matR[6,6]^2, vecA[6]))

Zusammenfassung der Ergebnisse

dfSummaryResult <- data.frame(Tier = 1:nNrAni, 
                              Diagonalelement = vecA, 
                              Inzuchtkoeffzient = vecA-1, 
                              stringsAsFactors = FALSE )
knitr::kable(dfSummaryResult)


charlotte-ngs/ZLHS2016 documentation built on May 13, 2019, 3:33 p.m.