Začněte nyníZačněte zdarma

Markovovy modely pro frekvence alel

V přednášce jsi viděl/a, že dominantní vlastní hodnota Markovovy matice \(M\), jejíž výstup v R je:

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

vygenerovala vlastní vektor modelující situaci, kdy jsou alely zastoupeny rovnoměrně (každá s pravděpodobností 0,25).

V tomto cvičení použiješ cyklus for k iteraci procesu mutace z počátečního rozdělení alel:

[1] 1 0 0 0

a ukážeš, že se to skutečně stane – že vlastní vektor poskytuje stejnou informaci jako cyklus for.

Více o Markovových procesech najdeš na tomto odkazu.

Toto cvičení je součástí kurzu

Lineární algebra pro datovou vědu v R

Zobrazit kurz

Pokyny k cvičení

  • Vypiš x, tedy rozdělení alel po 1000 mutacích.
  • Najdi první vlastní vektor matice M (která je již načtená) a normalizuj ho tak, aby jeho součet byl 1. Výsledek ulož do v1.
  • Vypiš v1, normalizovaný první vlastní vektor matice M, a porovnej ho s x.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

# 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(___)
Upravit a spustit kód