Bắt đầu ngayBắt đầu miễn phí

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

Xem khóa học

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ằng 1. Gán vào v1.
  • In v1, eigenvector thứ nhất của M sau khi chuẩn hóa, và so sánh với x.

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(___)
Chỉnh sửa và Chạy Mã