Está en la página 1de 7

Millora Gentica - JPA

PRCTICA 1
Aplicaciones del lgebra matricial en mejora gentica
Objetivos 1. Repasar conceptos elementales de lgebra matricial. 2. Aprender cmo se utiliza el procedimiento IML dentro del paquete estadstico SAS para resolver operaciones elementales con matrices. 3. Resolver un BLUP Modelo Animal unicarcter. Paquete estadstico SAS Al iniciar una sesin SAS nos encontraremos con la siguiente cartula:

La ventana de la izquierda nos informa sobre la estructura de algunos archivos de SAS. La inferior, editor, es la ventana donde escribiremos nuestro programa. La superior, log, nos informa sobre la marcha de la ejecucin del programa, as como de los errores de programacin que hayamos podido cometer. Hay otra ventana, output (siguiente imagen) que recoge los resultados de la ejecucin del programa, la cual se inicia mediante el icono que presenta a una figura humana caminando.

Universitat Autnoma de Barcelona

Millora Gentica - JPA

SAS proc IML


Se trata de un procedimiento que permite la resolucin de problemas matriciales. Para llamarlo es suficiente con escribir al principio del programa la instruccin siguiente: proc iml;1. Al final de una sentencia hay siempre un punto y coma (;). Los programas pueden escribirse en maysculas o minsculas, es indiferente. Slo cuando hay ttulos, SAS printa exactamente lo escrito entre comillas. La sentencia reset print; nos permitir ver todos los resultados intermedios de la ejecucin del programa. Es conveniente ponerlo siempre a menos que se quiera ejecutar el programa de forma interactiva, en cuyo caso deberemos escribir reset log print; despus de proc iml;. De esta manera, los resultados aparecern en la ventana log cada vez que cliquemos el icono de ejecucin, una vez escrita la sentencia correspondiente. Un ttulo para nuestro programa: title Este es mi primer programa en SAS; el cual aparecer encabezando todas las pginas de resultados. DEFINICIN DE LAS MATRICES /*definicion de las matrices*/ Esta sentencia que ponemos entre barras y asteriscos es una sentencia no ejecutable que sirve para indicar o recordar qu vamos a hacer en la/s siguiente/s sentencia/s. Pueden intercalarse en varios lugares del programa, facilitando la posterior correccin o modificacin del mismo. sta es la nica instruccin que no precisa el punto y coma final. Para definir algunas matrices podremos escribir por ejemplo las sentencias siguientes: a={1 1, 1 -1}; b={4 18, 6 -1}; c={9 -2 8, 23 42 0}; vc={3, 1};

1 1 que corresponden a las matrices A = , B = 1 1

4 18 , C = 6 1

9 2 8 , y al vector 23 42 0

3 columna vc = . Vemos as cmo los elementos de una misma fila se separan por 1 espacios, mientras que para iniciar una nueva fila se escribe una coma (,). La matriz A tiene dimensiones 22, es decir, dos filas y dos columnas, mientras que la matriz C es 23. Para definir una matriz identidad (cuadrada) de 55 escribiremos:
ident5=i(5);

Las sentencias del programa se diferenciaran del resto del texto por estar escritas en letras tipo courier new, resaltadas en negrita. La escritura del programa, no obstante, puede hacerse en cualquier tipo de letra, sin necesidad de negritas.

Universitat Autnoma de Barcelona

Millora Gentica - JPA

Debe observarse que una matriz puede nombrarse mediante un conjunto de caracteres alfanumricos (cifras y letras), sin limitaciones en la extensin del nombre. Los resultados2 que aparecen en la ventana output son los siguientes:
A 2 rows 1 1 B 2 rows 4 6 C 2 rows 9 23 VC 2 rows 3 1 IDENT5 5 rows 1 0 0 0 0 0 1 0 0 0 5 cols 0 0 1 0 0 (numeric) 0 0 0 1 0 0 0 0 0 1 2 cols 1 -1 2 cols 18 -1 3 cols -2 42 1 col (numeric) 8 0 (numeric) (numeric) (numeric)

OPERACIONES CON MATRICES Suma y sustraccin


sumaab=a+b; restaab=a-b;

Es importante observar que se ha utilizado nombres nemotcnicos, los cuales son muy tiles para la programacin. El resultado es el siguiente (ver output):
SUMAAB 2 rows 5 7 RESTAAB 2 rows -3 -5 -17 0 19 -2 2 cols (numeric) 2 cols (numeric)

Las matrices deben ser del mismo tamao. Los valores son resultado de la suma (resta) ordenada de los elementos de cada matriz.

Los resultados se presentan en la letra original de SAS.

Universitat Autnoma de Barcelona

Millora Gentica - JPA

Producto
productoac=a*c;

Siendo el resultado
PRODUCTOAC 2 rows 32 -14 40 -44 3 cols 8 8 (numeric)

En el producto de matrices hay que tener en cuenta que stas deben tener unas dimensiones que las hagan conformables para la multiplicacin. Si las dimensiones de las dos matrices son nm y rs, debe cumplirse que m = r, siendo la dimensin de la matriz producto ns. Los elementos de la matriz resultante son el producto interno de los vectores fila de la primera matriz y columna de la segunda, respectivamente. El producto de matrices no siempre es conmutativo. Traspuesta Traspuesta de una matriz dada es otra matriz en la cual las filas de la matriz original son las columnas de la matriz traspuesta y viceversa. Habitualmente se designa aadiendo una T como superndice o bien una prima sobre la letra de la matriz original. En SAS se define como
traspuestab=t(b);

permitiendo operaciones directas, como por ejemplo


prodtbc=t(b)*c;

siendo el resultado el siguiente:


TRASPUESTAB 2 rows 4 18 PRODTBC 2 rows 174 139 6 -1 3 cols 244 -78 (numeric) 32 144 2 cols (numeric)

Sistemas de ecuaciones Para obtener las soluciones de las ecuaciones BLUP se necesita resolver sistemas de ecuaciones de muchas incgnitas, lo cual tiene una solucin ms fcil en trminos matriciales. Si tenemos por ejemplo el siguiente sistema de ecuaciones sencillo
x+y=3 x y = 1,

es obvio que las soluciones son x = 2 e y = 1, pero podemos escribirlo en trminos matriciales como
1 1 x 3 = , 1 1 y 1

Universitat Autnoma de Barcelona

Millora Gentica - JPA

siendo la primera matriz (definida previamente como A), la matriz de coeficientes, la ltima (definida antes como vc), el trmino independiente, y la tercera matriz, el vector de incgnitas (soluciones). En trminos matriciales podemos escribir A solucion = vc. Entonces el vector solucion = Inv (A) vc. La inversa de una matriz, A-1, es otra matriz que cumple que A A-1 = A-1 A = I. Para que A tenga inversa su determinante debe ser distinto de 0. Cuando el determinante es igual a 0 decimos que la matriz es singular. No obstante, existe la posibilidad de calcular una inversa generalizada que es equivalente a imponer restricciones sobre alguna o algunas de las soluciones, p.e. que sean igual a 0. En el editor podemos escribir
determinantea=det(a); inversaa=inv(a); ginversaa=ginv(a); solucion=solve(a,vc);

obteniendo como resultado


DETERMINANTEA 1 row -2 INVERSAA 2 rows 0.5 0.5 GINVERSAA 2 rows 0.5 0.5 SOLUCION 2 rows 2 cols 0.5 -0.5 2 cols 0.5 -0.5 1 col 2 1 (numeric) (numeric) (numeric) 1 col (numeric)

Es de resaltar que las soluciones obtenidas son las que corresponderan a la resolucin del sistema de ecuaciones por mtodos algebraicos. Por otra parte, vemos cmo la inversa generalizada (ginversa) es igual a la inversa, al ser sta no singular (determinante igual a -2). En este caso, el uso de una u otra inversa para la resolucin del sistema habra sido indiferente. Otras operaciones con matrices La resolucin de las ecuaciones de modelo mixto implica la construccin de una matriz de coeficientes a partir de otras submatrices. En el caso ms sencillo dichas ecuaciones son
X' Z b X' y 2 1 h2 X' X , donde = e = . = 2 a h2 Z' X Z' Z + I a Z' y

Universitat Autnoma de Barcelona

Millora Gentica - JPA

Se dice que las submatrices estn concatenadas horizontalmente, p.e. XX y XZ, o verticalmente, p.e. XX y ZX. En lenguaje SAS podemos escribir respectivamente:
concathab=a||b; concatvab=a//b;

obteniendo como resultado


CONCATHAB 2 rows 1 1 CONCATVAB 4 rows 1 1 4 6 1 -1 18 -1 1 -1 2 cols 4 cols 4 6 (numeric) 18 -1 (numeric)

En el contexto del BLUP multicarcter se utiliza un tipo especial de producto, el producto directo o producto de Kronecker, que en SAS se escribe como
kroneckerac=a@c;

en el cual cada elemento de la primera matriz (A) es sustituido por el producto de dicho elemento por toda la segunda matriz, es decir, aiC. Si las dimensiones de las matrices originales son nm y rs, el resultado es una nueva matriz con dimensiones nr ms.
KRONECKERAC 4 rows 9 23 9 23 6 cols -2 42 -2 42 (numeric) 8 0 8 0 9 23 -9 -23 -2 42 2 -42 8 0 -8 0

Terminacin del programa


Deberemos cerrar el programa con la siguiente instruccin:
quit;

Nota prctica:
Es probable que al tratar de resolver nuestro problema, como consecuencia de diferentes ejecuciones sucesivas del programa, las ventanas log y output se llenen de informacin que se va aadiendo a la previamente existente. Podemos evitar este problema ponindonos en la ventana correspondiente, desplegando Edicin y ejecutando Borrar todo. Dos pginas web interesantes: http://javeeh.net/sasintro/intro107.html (para iniciarse) http://www.psych.yorku.ca/lab/sas/iml.htm (ms amplio)

Universitat Autnoma de Barcelona

Millora Gentica - JPA

Ejercicio Supongamos que tenemos ocho terneros de los que conocemos su identificacin, el rebao en el que han nacido y el peso al nacimiento. Los datos son los siguientes: Ternero 1 2 3 4 5 6 7 8 Rebao 1 2 1 2 1 1 2 1 Peso nacimiento, kg 43 41 45 38 40 42 39 43

Se pide realizar una evaluacin BLUP del peso al nacimiento, suponiendo que la heredabilidad del carcter es 0,25 y que las relaciones de parentesco son desconocidas.
Pistas 1. La matriz X relaciona el vector de observaciones con los niveles de los efectos fijos, 2 en este caso. Est constituida por ceros y unos, siendo sus dimensiones 82.

2. La matriz Z relaciona, tambin a travs de ceros y unos, las observaciones con los valores mejorantes, 8 en este caso, siendo sus dimensiones 88. 3. El vector de observaciones y es de dimensiones 81. 4. La matriz identidad debe ser de las mismas dimensiones que ZZ.

Universitat Autnoma de Barcelona