IniziaInizia gratis

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

Visualizza il corso

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 sia 1. Assegna a v1.
  • Stampa v1, il primo autovettore scalato di M e confrontalo con x.

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(___)
Modifica ed esegui il codice