Марковські моделі для частот алелей
На лекції ви бачили, що найбільше власне значення марковської матриці \(M\), вивід R для якої такий:
[,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
дає власний вектор, що моделює ситуацію, коли алелі представлені порівну (кожен з ймовірністю 0,25).
У цій вправі ми використаємо цикл for, щоб проітерувати процес мутації, починаючи з початкового розподілу алелей:
[1] 1 0 0 0
і покажемо, що саме це й відбувається — власний вектор справді дає правильну інформацію замість циклу for.
Докладніше про марковські процеси читайте за цим посиланням.
Ця вправа є частиною курсу
Лінійна алгебра для Data Science в R
Інструкції до вправи
- Надрукуйте
x, розподіл алелей після 1000 мутацій. - Знайдіть і відмасштабуйте перший власний вектор матриці
M(яка вже завантажена), щоб його сума дорівнювала1. Присвойте результат зміннійv1. - Надрукуйте
v1, відмасштабований перший власний векторM, і порівняйте його зx.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# 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(___)