knitr::opts_chunk$set(echo = FALSE, results = 'asis')
devtools::load_all()
r6obj_docstat <- rmddochelper::R6ClassDocuStatus$new()
r6obj_docstat$set_current_status(psVersion = "0.0.901",
                                 psStatus  = "Initialisation",
                                 psProject = "[REPLACE_WITH_PROJECT]")
r6obj_docstat$include_doc_stat(psTitle = "## Document Status")
r6ob_abbrtable <- rmddochelper::R6ClassTableAbbrev$new()
### # include table of abbreviations only, if there are any
if (!r6ob_abbrtable$is_empty_abbr())
  r6ob_abbrtable$include_abbr_table(psAbbrTitle = "## Abbreviations")

Gegeben ist der folgende Datensatz

nNrAniInPed <- 7
nIdxFirstAniWithData <- 4
dfWwg <- data.frame(Tier = c(1:nNrAniInPed),
                    Vater = c(NA,NA,NA,NA,1,5,5),
                    Mutter = c(NA,NA,NA,NA,2,3,4),
                    WWG = c(4.5,2.9,3.9,3.5,5.0,5.2,5.7))
sigmae2 <- 40
sigmaa2 <- 20
alpha <- sigmae2/sigmaa2
sigmap2 <- sigmaa2 + sigmae2
h2 <- sigmaa2 / sigmap2
knitr::kable((dfWwg))

Wir nehmen an, dass die Restvarianz $\sigma_e^2 = r sigmae2$ und die genetisch additive Varianz $\sigma_a^2 = r sigmaa2$.

suppressPackageStartupMessages(require(pedigreemm))
pedSmd <- pedigree(sire = dfWwg$Vater, dam = dfWwg$Mutter, label = as.character(dfWwg$Tier))
#print(pedSmd)
matAInv <- as.matrix(getAInv(ped = pedSmd))
#print(matAInv)

Aufgabe 1

In der Vorlesung haben wir die Zerlegung der phänotypischen Beobachtung aufgrund der Mischmodellgleichungen eines Tiermodells besprochen. Wir wollen in dieser Aufgabe nochmals eine solche Zerlegung üben und die Bestandteile eines geschätzten Zuchtwertes mit dem BLUP-Tiermodell noch einmal analysieren. Die Zerlegung soll für die phänotypische Beobachtung von Tier $5$ aus dem oben gezeigten Datensatz gemacht werden.

Wir nehmen an die Mischmodellgleichung für das BLUP-Tiermodell habe die folgende Struktur

### # constants
nNrObsSmd <- nrow(dfWwg)
### # design matrics
matXSmd <- matrix(data = 1, nrow = nNrObsSmd, ncol = 1)
matZSmd <- diag(1, nrow = nNrObsSmd, ncol = nNrObsSmd)
matXtXSmd <- crossprod(matXSmd)
matXtZSmd <- crossprod(matXSmd,matZSmd)
matZtZSmd <- crossprod(matZSmd)
matZtZAInvSmd <- matZtZSmd + matAInv * alpha

# right-handside
vecY <- dfWwg$WWG
vecRhsSmd <- rbind(crossprod(matXSmd,vecY), crossprod(matZSmd,vecY))

# coefficient matrix
matCoeffSmd <- cbind(rbind(matXtXSmd,t(matXtZSmd)),rbind(matXtZSmd,matZtZAInvSmd))
# solution vector
solVecSmd <- c("\\hat{\\mu}", vecGetVecElem(psBaseElement = "\\hat{a}", pnVecLen = nNrObsSmd))

# show mme
cat("$$\\left[\n")
cat(paste(sGetTexMatrix(pmatAMatrix = matCoeffSmd, pnDigits = 2, pnAlign = rep("c", nNrObsSmd+2)), collapse = "\n"))
cat("\\right]\n")
cat("\\left[\n")
cat(paste(sGetTexMatrix(pmatAMatrix = as.matrix(solVecSmd, nrow = nNrObsSmd+1), pnAlign = rep("c", 2)), collapse = "\n"))
cat("\\right]\n")
cat(" = \\left[\n")
cat(paste(sGetTexMatrix(pmatAMatrix = as.matrix(vecRhsSmd, nrow = nNrObsSmd+1), pnDigits = 1, pnAlign = rep("c", 2)), collapse = "\n"))
cat("\\right]\n")
cat("$$")

Ihre Aufgabe:

Lösung

\begin{equation} y_5 = r vecY[5] = \hat{\mu} - 2(\hat{a}_1 + \hat{a}_2) + \hat{a}_3 + \hat{a}_4 + 7\hat{a}_5 - 2(\hat{a}_6 + \hat{a}_7) \label{eq:DecompPhenObs} \end{equation}

\begin{equation} \hat{a}_5 = {1\over 7}(y_5 - \hat{\mu} + 2(\hat{a}_1 + \hat{a}_2) - \hat{a}_3 - \hat{a}_4 + 2(\hat{a}_6 + \hat{a}_7)) \label{eq:SolveAhatAni5} \end{equation}

Aufgabe 2

Die analoge Zerlegung einer phänotypischen Beobachtung soll jetzt für den Fall eines Vatermodells gemacht werden. Vergleichen Sie dabei die Komponenten eines Vatereffektes mit den Bestandteilen eines geschätzten Zuchtwertes aus dem Tiermodell in Aufgabe 1.

sigmas2 <- sigmaa2/4
sigmae2Sire <- sigmap2 - sigmas2
alphaSire <- sigmae2Sire/sigmas2

Die Varianzkomponenten $\sigma_s^2$ beträgt ein Viertel der genetisch-additiven Varianz. Wir übernehmen die phänotypische Varianz aus Aufgabe 1. Somit ist die Restvarianz im Vatermodel $\sigma_e^2 = r sigmae2Sire$ und das Verhältnis der Varianzen $\alpha = \sigma_e^2/\sigma_s^2 = r alphaSire$.

Die Mischmodellgleichungen für das Vatermodell lauten

nNrSireEffects <- length(unique(dfWwg$Vater[!is.na(dfWwg$Vater)]))
matZSmdSire <- rbind(matrix(0, nrow = sum(is.na(dfWwg$Vater)), ncol = nNrSireEffects), matrix(data = c(1,0,0,0,1,1), nrow = sum(!is.na(dfWwg$Vater)), ncol = nNrSireEffects))
matXtZSmdSire <- crossprod(matXSmd, matZSmdSire)
matZtZSmdSire <- crossprod(matZSmdSire)
### # pedigree
matASire <- matrix(data = c(1,.5,.5,1), nrow = nNrSireEffects)
matAInvSire <- solve(matASire)
matZtZAInvSmdSire <- matZtZSmdSire + matAInvSire * alphaSire
### # rhs
vecRhsSmdSire <- rbind(crossprod(matXSmd,vecY), crossprod(matZSmdSire,vecY))
# coefficient matrix
matCoeffSmdSire <- cbind(rbind(matXtXSmd,t(matXtZSmdSire)),rbind(matXtZSmdSire,matZtZAInvSmdSire))
# solution vector
solVecSmdSire <- c("\\hat{\\mu}", "\\hat{s}_1", "\\hat{s}_5")

# show mme
cat("$$\\left[\n")
cat(paste(sGetTexMatrix(pmatAMatrix = matCoeffSmdSire, pnDigits = 2, pnAlign = rep("c", ncol(matCoeffSmdSire)+1)), 
          collapse = "\n"))
cat("\\right]\n")
cat("\\left[\n")
cat(paste(sGetTexMatrix(pmatAMatrix = as.matrix(solVecSmdSire, nrow = lenght(solVecSmdSire)), pnAlign = rep("c", 2)), 
          collapse = "\n"))
cat("\\right]\n")
cat(" = \\left[\n")
cat(paste(sGetTexMatrix(pmatAMatrix = as.matrix(vecRhsSmdSire, nrow = length(vecRhsSmdSire)), pnDigits = 1, pnAlign = rep("c", 2)), collapse = "\n"))
cat("\\right]\n")
cat("$$")

Ihre Aufgabe:

\pagebreak

Lösung:

Aufgabe 3

Welches sind die Unterschiede zwischen den Zerlegungen der phänotypischen Beobachtungen und der Komponenten der geschätzten Zuchtwerte in den Aufgaben 1 und 2?

Lösung:

r6ob_abbrtable$writeToTsvFile()


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