Zacznij terazZacznij za darmo

Modele Markowa dla częstości alleli

Na wykładzie zobaczyłeś, że dominująca wartość własna macierzy Markowa \(M\), której wynik w R wygląda następująco:

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

generuje wektor własny modelujący sytuację, w której allele są reprezentowane równomiernie (każdy z prawdopodobieństwem 0,25).

W tym ćwiczeniu używamy pętli for, aby iterować proces mutacji, zaczynając od początkowego rozkładu alleli:

[1] 1 0 0 0

Pokaż, że tak właśnie się dzieje – że wektor własny dostarcza właściwych informacji zamiast pętli for.

Więcej informacji o procesach Markowa znajdziesz pod tym linkiem.

To ćwiczenie jest częścią kursu

Algebra liniowa dla data science w R

Zobacz kurs

Instrukcje do ćwiczenia

  • Wyświetl x – rozkład alleli po 1000 mutacjach.
  • Wyznacz i przeskaluj pierwszy wektor własny macierzy M (która jest już wczytana) tak, aby jego suma wynosiła 1. Przypisz wynik do v1.
  • Wyświetl v1 – przeskalowany pierwszy wektor własny macierzy M – i porównaj go z x.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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(___)
Edytuj i uruchom kod