Download pdf - Manual Practica IML-BLUP

Transcript
Page 1: Manual Practica IML-BLUP

Millora Genètica - JPA

Universitat Autònoma de Barcelona . 1

PRÁCTICA 1 Aplicaciones del álgebra matricial en mejora genética Objetivos

1. Repasar conceptos elementales de álgebra matricial. 2. Aprender cómo se utiliza el procedimiento IML dentro del paquete estadístico SAS

para resolver operaciones elementales con matrices. 3. Resolver un BLUP Modelo Animal unicarácter.

Paquete estadístico SAS Al iniciar una sesión SAS nos encontraremos con la siguiente carátula:

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 ejecución del programa, así como de los errores de programación que hayamos podido cometer. Hay otra ventana, output (siguiente imagen) que recoge los resultados de la ejecución del programa, la cual se inicia mediante el icono que presenta a una figura humana caminando.

Page 2: Manual Practica IML-BLUP

Millora Genètica - JPA

Universitat Autònoma de Barcelona . 2

SAS proc IML Se trata de un procedimiento que permite la resolución de problemas matriciales. Para llamarlo es suficiente con escribir al principio del programa la instrucción siguiente:

proc iml;1. Al final de una sentencia hay siempre un punto y coma (;). Los programas pueden escribirse en mayúsculas o minúsculas, es indiferente. Sólo cuando hay títulos, SAS printa exactamente lo escrito entre comillas.

La sentencia reset print; nos permitirá ver todos los resultados intermedios de la ejecución 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; después de proc iml;. De esta manera, los resultados aparecerán en la ventana log cada vez que “cliquemos” el icono de ejecución, una vez escrita la sentencia correspondiente.

Un título para nuestro programa: title ‘Este es mi primer programa en SAS’;

el cual aparecerá encabezando todas las páginas de resultados.

DEFINICIÓN 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 corrección o modificación del mismo. Ésta es la única instrucción 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};

que corresponden a las matrices

=11

11A ,

=16

184B ,

−=

04223829

C , y al vector

columna

=

13

vc . Vemos así cómo los elementos de una misma fila se separan por

espacios, mientras que para iniciar una nueva fila se escribe una coma (,). La matriz A tiene dimensiones 2×2, es decir, dos filas y dos columnas, mientras que la matriz C es 2×3.

Para definir una matriz identidad (cuadrada) de 5×5 escribiremos: ident5=i(5);

1 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.

Page 3: Manual Practica IML-BLUP

Millora Genètica - JPA

Universitat Autònoma de Barcelona . 3

Debe observarse que una matriz puede nombrarse mediante un conjunto de caracteres alfanuméricos (cifras y letras), sin limitaciones en la extensión del nombre.

Los resultados2 que aparecen en la ventana output son los siguientes:

A 2 rows 2 cols (numeric) 1 1 1 -1

B 2 rows 2 cols (numeric) 4 18 6 -1

C 2 rows 3 cols (numeric) 9 -2 8 23 42 0

VC 2 rows 1 col (numeric) 3 1 IDENT5 5 rows 5 cols (numeric) 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1

OPERACIONES CON MATRICES

Suma y sustracción sumaab=a+b; restaab=a-b;

Es importante observar que se ha utilizado nombres nemotécnicos, los cuales son muy útiles para la programación. El resultado es el siguiente (ver output):

SUMAAB 2 rows 2 cols (numeric) 5 19 7 -2

RESTAAB 2 rows 2 cols (numeric) -3 -17 -5 0

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

2 Los resultados se presentan en la letra original de SAS.

Page 4: Manual Practica IML-BLUP

Millora Genètica - JPA

Universitat Autònoma de Barcelona . 4

Producto productoac=a*c;

Siendo el resultado PRODUCTOAC 2 rows 3 cols (numeric)

32 40 8 -14 -44 8 En el producto de matrices hay que tener en cuenta que éstas deben tener unas dimensiones que las hagan conformables para la multiplicación. Si las dimensiones de las dos matrices son n×m y r×s, debe cumplirse que m = r, siendo la dimensión de la matriz producto n×s. 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 añadiendo una T como superíndice 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 2 cols (numeric) 4 6 18 -1

PRODTBC 2 rows 3 cols (numeric) 174 244 32 139 -78 144

Sistemas de ecuaciones Para obtener las soluciones de las ecuaciones BLUP se necesita resolver sistemas de ecuaciones de muchas incógnitas, lo cual tiene una solución más fácil en términos 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 términos matriciales como

=

− 1

311

11yx

,

Page 5: Manual Practica IML-BLUP

Millora Genètica - JPA

Universitat Autònoma de Barcelona . 5

siendo la primera matriz (definida previamente como A), la matriz de coeficientes, la última (definida antes como vc), el término independiente, y la tercera matriz, el vector de incógnitas (soluciones). En términos 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 1 col (numeric) -2

INVERSAA 2 rows 2 cols (numeric) 0.5 0.5 0.5 -0.5

GINVERSAA 2 rows 2 cols (numeric) 0.5 0.5 0.5 -0.5

SOLUCION 2 rows 1 col (numeric) 2 1

Es de resaltar que las soluciones obtenidas son las que corresponderían a la resolución del sistema de ecuaciones por métodos algebraicos. Por otra parte, vemos cómo 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 resolución del sistema habría sido indiferente.

Otras operaciones con matrices La resolución de las ecuaciones de modelo mixto implica la construcción de una matriz de coeficientes a partir de otras submatrices. En el caso más sencillo dichas ecuaciones son

=

+ yZ'

yX'ab

IZZ'XZ'ZX'XX'

ˆ

ˆ

α, donde 2

2

2

2 1h

h

a

e −==

σσ

α .

Page 6: Manual Practica IML-BLUP

Millora Genètica - JPA

Universitat Autònoma de Barcelona . 6

Se dice que las submatrices están concatenadas horizontalmente, p.e. X’X y X’Z, o verticalmente, p.e. X’X y Z’X. En lenguaje SAS podemos escribir respectivamente:

concathab=a||b; concatvab=a//b;

obteniendo como resultado

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

CONCATVAB 4 rows 2 cols (numeric) 1 1 1 -1 4 18 6 -1 En el contexto del BLUP multicarácter 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, ai×C. Si las dimensiones de las matrices originales son n×m y r×s, el resultado es una nueva matriz con dimensiones nr × ms.

KRONECKERAC 4 rows 6 cols (numeric) 9 -2 8 9 -2 8 23 42 0 23 42 0 9 -2 8 -9 2 -8 23 42 0 -23 -42 0 Terminación del programa Deberemos cerrar el programa con la siguiente instrucción:

quit; Nota práctica: 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 información que se va añadiendo a la previamente existente. Podemos evitar este problema poniéndonos en la ventana correspondiente, desplegando Edición y ejecutando Borrar todo.

Dos páginas web interesantes:

http://javeeh.net/sasintro/intro107.html (para iniciarse)

http://www.psych.yorku.ca/lab/sas/iml.htm (más amplio)

Page 7: Manual Practica IML-BLUP

Millora Genètica - JPA

Universitat Autònoma de Barcelona . 7

Ejercicio

Supongamos que tenemos ocho terneros de los que conocemos su identificación, el rebaño en el que han nacido y el peso al nacimiento. Los datos son los siguientes:

Ternero Rebaño Peso nacimiento, kg 1 1 43 2 2 41 3 1 45 4 2 38 5 1 40 6 1 42 7 2 39 8 1 43

Se pide realizar una evaluación BLUP del peso al nacimiento, suponiendo que la heredabilidad del carácter 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 8×2.

2. La matriz Z relaciona, también a través de ceros y unos, las observaciones con los valores mejorantes, 8 en este caso, siendo sus dimensiones 8×8.

3. El vector de observaciones y es de dimensiones 8×1.

4. La matriz identidad debe ser de las mismas dimensiones que Z’Z.