ÎncepețiÎncepe gratuit

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

Vezi cursul

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ă fie 1. Atribuie rezultatul lui v1.
  • Afișează v1, primul vector propriu scalat al lui M, și compară-l cu x.

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(___)
Editează și rulează codul