対立遺伝子頻度のマルコフモデル
講義では、マルコフ行列 \(M\) の最大固有値に対応する固有ベクトルが、対立遺伝子が等しく表現される状況(それぞれ確率 0.25)を与えることを確認しました。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)。
この演習では、初期の対立遺伝子分布:
[1] 1 0 0 0
から突然変異の過程を for ループで反復し、実際にそのようになること、すなわち for ループを使わずとも固有ベクトルが正しい情報を与えることを示します。
マルコフ過程の詳細は、このリンクをご覧ください。
この演習はコースの一部です
Rで学ぶデータサイエンスのための線形代数
演習の手順
- 1000 回の突然変異後の対立遺伝子分布
xをprint()で表示してください。 M(すでに読み込まれています)の第1固有ベクトルを取り出し、和が1になるようにスケーリングしてv1に代入してください。- スケーリングした第1固有ベクトル
v1を表示し、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(___)