Modele Markov pentru frecvențele alelelor
În cadrul lecției, ai văzut că valoarea proprie principală a matricei Markov \(M\), al cărei rezultat în R este:
[,1] [,2] [,3] [,4]
[1,] 0.980 0.005 0.005 0.010
[2,] 0.005 0.980 0.010 0.005
[3,] 0.005 0.010 0.980 0.005
[4,] 0.010 0.005 0.005 0.980
a generat un vector propriu care modelează o situație în care alelele sunt reprezentate în mod egal (fiecare cu probabilitatea 0,25).
În acest exercițiu, folosim o buclă for pentru a itera procesul de mutație pornind de la o distribuție inițială a alelelor:
[1] 1 0 0 0
și arătăm că acest lucru chiar se întâmplă – că vectorul propriu oferă informația corectă în locul buclei for.
Pentru mai multe detalii despre procesele Markov, consultă acest link.
Acest exercițiu face parte din cursul
Algebră liniară pentru știința datelor în R
Instrucțiuni pentru exercițiu
- Afișează
x, distribuția alelelor după cele 1000 de mutații. - Găsește și scalează primul vector propriu al lui
M(care este deja încărcat) astfel încât suma elementelor sale să fie1. Atribuie rezultatul luiv1. - Afișează
v1, primul vector propriu scalat al luiM, și compară-l cux.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# This code iterates mutation 1000 times
x <- c(1, 0, 0, 0)
for (j in 1:1000) {x <- M%*%x}
# Print x
print(___)
# Print and scale the first eigenvector of M
Lambda <- eigen(M)
v1 <- Lambda$vectors[, ___]/sum(Lambda$___[, 1])
# Print v1
print(___)