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
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ła1. Przypisz wynik dov1. - Wyświetl
v1– przeskalowany pierwszy wektor własny macierzyM– i porównaj go zx.
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(___)