Volví de mis
vacaciones con algo pesado…
Dos poblaciones
sujetas a un escenario idéntico de selección natural pueden diferir en la forma
que responden porque difieren en G, la matriz de
varianza-coavarianza genética entre los caracteres. La "forma" de G (en
general se representa como una pelotita, más o menos deforme, más alargada en la dirección donde hay más variabilidad) puede acelerar o
retardar el cambio evolutivo.
Invirtiendo el
razonamiento, podemos comparar las Gs de dos poblaciones. Esta es la idea
básica de los random (o selection) skewers propuestos por Cheverud (1-aquí una buena descripción). Como no
siempre tenemos datos de la selección, la simulamos creando miles de vectores
de selección, aplicando cada uno de ellos (skewer se traduce como
"brocheta") a ambas matrices G, obteniendo la dos respuestas a la
selección y evaluando si estas respuestas difieren en su magnitud y su
dirección.
Supongamos que
tenemos dos matrices G (G1 y G2), con el mismo número de caracteres N
N<-ncol(G1)
Creamos un vector de
largo N extraido de una distribución uniforme
RS1<-runif(n=N)
RS1
Pero necesitamos que
contega valores positivos y negativos con el 50% de probabilidad para cada uno
sign<-c(-1,1)
RS2<-vector(length=N)
for (i in 1:N)
RS2[i]<-sample(sign, size=1)*RS1[i]
RS2
Y ahora necesitamos
que tenga una longitud estándar, específicamente que la suma de sus elementos
al cuadrado sume 1.
RS3<-RS2/sqrt((t(RS2)%*%RS2))
RS3
El resto ya es
sencillo. Obtenemos las dos respuestas a la selección (dz)
dz1<-G1%*%RS3
dz2<-G2%*%RS3
Comparamos su
magnitud
L<-sum(dz1^2)/sum(dz2^2)
L
Comparamos su
correlación (el coseno de su ángulo en el hiperespacio fenotípico, ja!)
A<-(t(dz1)%*%dz2)/ sqrt((t(dz1)%*%dz1)*(t(dz2)%*%dz2))
A
Ahora todo en una
sola función…
selection.skewers<-function(G1,
G2){
N<-ncol(G1)
RS1<-runif(n=N)
sign<-c(-1,1)
RS2<-vector(length=N)
for (i in 1:N)
RS2[i]<-sample(sign, size=1)*RS1[i]
RS3<-RS2/sqrt((t(RS2)%*%RS2))
dz1<-G1%*%RS3
dz2<-G2%*%RS3
L<-sum(dz1^2)/sum(dz2^2)
A<-(t(dz1)%*%dz2)/ sqrt((t(dz1)%*%dz1)*(t(dz2)%*%dz2))
res<-c(L, A)
res}
1- Cheverud J.M. y Marroig G. (2007). Comparing covariance
matrices: random skewers method compared to the common principal components
model. Genetics and Molecular Biology, 30: 461–469.