knitr::opts_chunk$set(echo = FALSE, results = 'asis') devtools::load_all()
$$A^{-1} = L^{-1} * D^{-1} * (L^T)^{-1}$$
$$A = R * R^T$$
wobei $R$ linke untere Dreiecksmatrix
chol()
liefert transponierte von $R$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")
$$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}}$
$$
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")
$$
Diagonalelemente: $$r_{ii} = s_{ii} = \sqrt{d_{ii}}$$
Off-Diagonal: $$r_{ij} = l_{ij} * s_{jj} = {1\over 2}\ (r_{sj} + r_{dj})$$
wobei $l_{ij} = {1\over 2}\ (l_{sj} + l_{dj})$
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)
matA <- as.matrix(getA(pedEx1)) vecA <- as.vector(diag(matA)) matR <- t(chol(matA))
$$a_{11} = 1 + F_1 = r vecA[1]
$$
$$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
$$
$$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]))
$$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]))
$$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]))
$$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]))
dfSummaryResult <- data.frame(Tier = 1:nNrAni, Diagonalelement = vecA, Inzuchtkoeffzient = vecA-1, stringsAsFactors = FALSE ) knitr::kable(dfSummaryResult)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.