Aan de slagGa gratis aan de slag

Markov-modellen voor allelfrequenties

In het college zag je dat de grootste eigenwaarde van de Markov-matrix \(M\), waarvan de R-uitvoer is:

      [,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

leidt tot een eigenvector die een situatie modelleert waarin de allelen gelijk vertegenwoordigd zijn (elk met kans 0,25).

In deze oefening gebruiken we een for-lus om het mutatieproces te herhalen, beginnend met de volgende beginverdeling van allelen:

[1] 1 0 0 0

en laten we zien dat dit inderdaad gebeurt: de eigenvector geeft dezelfde informatie als de for-lus.

Voor meer over Markov-processen, zie deze link.

Deze oefening maakt deel uit van de cursus

Lineaire algebra voor data science in R

Cursus bekijken

Oefeninstructies

  • Print x, de allelverdeling na 1000 mutaties.
  • Zoek de eerste eigenvector van M (die al voor je is geladen) en schaal die zodat de som gelijk is aan 1. Ken dit toe aan v1.
  • Print v1, de geschaalde eerste eigenvector van M, en vergelijk met x.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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(___)
Code bewerken en uitvoeren