Mô hình Markov cho tần số alen
Trong bài giảng, bạn đã thấy rằng eigenvalue đứng đầu của ma trận Markov \(M\), với đầu ra R như sau:
[,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
cho ra một eigenvector mô hình hóa tình huống các alen được biểu diễn như nhau (mỗi alen có xác suất 0,25).
Trong bài tập này, ta dùng một vòng lặp for để lặp quá trình đột biến từ phân phối alen ban đầu:
[1] 1 0 0 0
và cho thấy điều đó thực sự xảy ra — rằng eigenvector cung cấp đúng thông tin thay cho việc phải dùng vòng lặp for.
Để tìm hiểu thêm về Quá trình Markov, xem liên kết này.
Bài tập này là một phần của khóa học
Đại số tuyến tính cho Khoa học dữ liệu với R
Hướng dẫn bài tập
- In
x, hãy in ra phân phối alen sau 1000 lần đột biến. - Tìm và chuẩn hóa eigenvector thứ nhất của
M(đã được nạp sẵn) sao cho tổng bằng1. Gán vàov1. - In
v1, eigenvector thứ nhất củaMsau khi chuẩn hóa, và so sánh vớix.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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(___)