Modelli di Markov per le frequenze alleliche
Nella lezione, hai visto che l'autovalore dominante della matrice di Markov \(M\), il cui output in 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
produce un autovettore che modella una situazione in cui gli alleli sono rappresentati in modo uniforme (ognuno con probabilità 0,25).
In questo esercizio usiamo un ciclo for per iterare il processo di mutazione a partire da una distribuzione allelica iniziale:
[1] 1 0 0 0
e mostriamo che è proprio ciò che accade: l'autovettore fornisce l'informazione corretta al posto del ciclo for.
Per saperne di più sui processi di Markov, vedi questo link.
Questo esercizio fa parte del corso
Algebra lineare per la Data Science in R
Istruzioni dell'esercizio
- Stampa
x, la distribuzione allelica dopo 1000 mutazioni. - Trova e scala il primo autovettore di
M(che è già caricato) in modo che la somma sia1. Assegna av1. - Stampa
v1, il primo autovettore scalato diMe confrontalo conx.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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(___)