Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introduccion Al Manejo de Datos Utilizando SAS PDF
Introduccion Al Manejo de Datos Utilizando SAS PDF
O S
T
DA
DE
J O ®
N E AS
MA O S
AL AND
Ó N IZ
C I IL
U C UT
O D
T R
IN
CAPÍTULO 1
¿Por qué SAS®? .............................................................................................1
CAPÍTULO 2
Las ventanas de SAS® ...................................................................................3
CAPÍTULO 3
Archivos permanentes en SAS® ................................................................. 11
CAPÍTULO 4
Archivos temporales en SAS® .................................................................... 15
Para hacer comentarios.................................................................................. 16
Enhanced Editor ............................................................................................. 16
Creación de una base de datos en SAS® ...................................................... 17
Mensajes del “Log” ......................................................................................... 18
Cambiando de archivos temporales a permanentes....................................... 20
Ver la base de datos ....................................................................................... 21
Guardar los códigos........................................................................................ 22
Tamaño de las bases de datos guardadas en SAS® ..................................... 24
Acceso a los códigos guardados ....................................................................24
CAPÍTULO 5
Los programas de SAS®.............................................................................. 25
Acerca de los comentarios................................................................... 25
Recomendación ................................................................................... 27
Procedimientos y órdenes (o instrucciones) de SAS®......................... 28
Manejo de los resultados ..................................................................... 28
CAPÍTULO 6
La base de datos........................................................................................... 31
1. Importar bases de datos de Excel® ................................................. 32
2. Exportar bases de datos de SAS® hacia Excel® ............................ 39
3. Otras formar de importar o exportar (sin Wizard)............................. 43
CAPÍTULO 8.
Algunos procedimientos de SAS®.............................................................. 55
1. Para ordenar los datos................................................................................ 55
Proc sort .............................................................................................. 55
Para eliminar datos repetidos .............................................................. 56
2. Para verificar la calidad de los datos y/o resumir información
de los datos crudos..................................................................................... 56
Proc freq .............................................................................................. 56
Proc means.......................................................................................... 58
3. Para manejar la base de datos ................................................................... 61
Drop ..................................................................................................... 61
Keep .................................................................................................... 62
Rename ............................................................................................... 62
4. Para crear variables por medio de operaciones matemáticas .................... 63
5. Para unir dos o más bases de datos .......................................................... 65
Set ....................................................................................................... 65
Merge................................................................................................... 66
Otro uso de Merge ............................................................................... 68
CAPÍTULO 9
Más de manejo de datos en SAS® .............................................................. 71
Los condicionantes ......................................................................................... 71
If…then ................................................................................................ 71
Else if…then......................................................................................... 73
If…and/or….then.................................................................................. 74
Algunas funciones de SAS®........................................................................... 74
Fechas ................................................................................................. 74
Mes, año .............................................................................................. 75
Máximos, mínimos y sumatorias.......................................................... 76
Sumatoria ............................................................................................ 76
CAPÍTULO 10.
Algunos códigos de estadística.................................................................. 79
Proc glm ......................................................................................................... 80
Proc mixed...................................................................................................... 84
Proc univariate ............................................................................................... 84
Prog reg.......................................................................................................... 89
Para seleccionar el modelo de regresión múltiple más adecuado.................. 92
Proc corr ......................................................................................................... 93
Proc glm para análisis de varianza multivariado............................................. 94
Otras ordenes básicas.................................................................................... 95
“Where” en proc means ....................................................................... 95
Proc boxplot ......................................................................................... 95
Prueba de Chi-cuadrada en proc freq.................................................. 95
CAPÍTULO 11
Algunos códigos de diseños experimentales............................................ 97
1. Diseño completamente al azar ................................................................... 97
2. Comparación de tratamientos..................................................................... 98
3. Comparaciones múltiples ........................................................................... 99
4. Diseño de bloques completos al azar ......................................................... 99
5. Diseño de bloques al azar generalizados ................................................. 100
6. Diseño de bloques incompletos, incluyendo el diseño de bloques
completos al azar con observaciones perdidas ........................................ 100
7. Diseño de cuadro latino ............................................................................ 101
8. Diseño de cuadro latino con repeticiones ................................................. 101
9. Diseño de parcelas divididas (ejemplos) .................................................. 101
RECONOCIMIENTO
CRÉDITOS EDITORIALES
DIRECTORIO INSTITUCIONAL
Pág.
ÍNDICE DE CUADROS
Pág.
En sus inicios, el programa SAS® llevaba ese nombre por ser las siglas de
“Statistical Analysis System” (“Sistema de Análisis Estadísticos”). Sin embargo,
actualmente SAS® incluye toda una familia de programas, por ejemplo, para análisis
financieros y para manejo de datos sociales (entre muchos otros), y SAS/STAT es
sólo uno más entre sus múltiples funciones, de manera que el nombre “SAS” es
ahora sólo un nombre, sin que tenga un significado específico. El presente manual se
refiere a algunas funciones básicas de SAS/STAT, con mayor probabilidad de
utilizarse en investigación en las ciencias agropecuarias.
Con frecuencia, a las órdenes que se escriben para que SAS ejecute un
procedimiento, se les llama “programas” o “códigos” (la palabra que se utilizará con
más frecuencia será “código”). Hay varias maneras de obtener un mismo resultado
usando SAS®, pero en general, se mencionará una sola forma, para que sirva más
como una guía que como una fuente de confusión.
Esta obra dista mucho de ser un manual completo de SAS®. Existen literalmente
cientos de libros, y aún más sitios en Internet dedicados al uso de este poderoso
programa. Sin embargo, esperamos que el contenido del escrito sea de utilidad a
todos los lectores.
Una vez adquirida la licencia, usted tendrá, ya sea un enlace para bajar el programa,
o un número variable de CDs que contienen el programa de SAS®, dependiendo de
la versión, y del tipo de licencia que haya adquirido. La más básica, generalmente, es
suficiente para trabajar en todo lo relacionado con la investigación en ciencias
biológicas, agropecuarias y forestales. Uno de los CDs vendrá marcado como el
apropiado para iniciar la instalación. Sólo hay que introducirlo en la PC y seguir los
pasos que se vayan indicando.
El SAS® es un programa grande que requiere al menos de Windows 98, con mínimo
de 10 GB de capacidad en disco duro y RAM de 512, de manera que en cualquier
computadora actualmente puede instalarse el programa SAS®. Se debe tomar en
cuenta que la instalación puede tardar varios minutos. Una de las opciones de
instalación es el idioma en que se desea trabajar en SAS®. Sin embargo, sin
importar que idioma se elija, todas las instrucciones que se escriban para SAS® y la
mayoría de la información que se obtiene de la ventana del “Log” deben y van a estar
en inglés. Por lo anterior, y también para traducir ciertas opciones, el contenido de
esta obra hará referencia a la versión en inglés del programa.
Al abrir SAS®, se pueden ver varias ventanas y un menú (Figura 1). Las ventanas
más importantes son la del contenido, la del “Editor” (o “Enhanced Editor”), la del
“Log”, y la del “Output”; esta última, detrás de las dos anteriores. En algunas
versiones, al abrir SAS® aparece una ventana que ofrece tutorías en el uso del
programa, en diversos niveles de complejidad a escoger. El usuario puede decidir
abrir la ventana y aprovechar estas lecciones o cerrar la ventana e iniciar
directamente con el trabajo en SAS®. El ambiente de SAS®, es decir, todo el
conjunto de ventanas, puede encontrarse ya maximizado, o estar minimizado, al
momento de iniciar la sesión. En la esquina extremo derecha se encuentran los
símbolos para cerrar, minimizar y para maximizar el programa. Si se oprime el de
cerrar, el programa pregunta: “Are you sure you want to end the SAS session?”
(“¿Está usted seguro de que quiere cerrar la sesión de SAS?”). Si se oprime “Yes”
(“sí”), entonces, le preguntará, en inglés, si quiere guardar los cambios, y después de
guardarlos, o de que se le indique que no se desea guardar nada, sólo entonces, se
cierra el programa.
Figura 1. Ambiente de trabajo de SAS® tal como aparece al abrir el programa (después
de oprimir el icono con el logotipo de SAS®). La ventana de “Log” es en donde se
encuentran las letras azules. La ventana del “Editor” se encuentra debajo de la del
“Log”, y la ventana del “Output” está detrás de las dos anteriores.
b) La ventana del “Log” (ver Figura 1), que se encuentra arriba al abrir SAS®, tiene
información del copyright, de a quien pertenece la licencia de ese programa en
particular, y detalles del uso de los recursos de la computadora en el programa
SAS®.
Una vez trabajando, en “Log” van a aparecer los reportes del resultado del
programa o código, incluyendo una copia del código usado, el número de
observaciones leídas, los errores, si los hubiese, algunas veces con sus
correspondientes sugerencias de corrección, y el tiempo utilizado en la ejecución
del programa. En esta ventana también aparece la advertencia cuando la licencia
de SAS está a punto de vencerse, y alerta de que después de la expiración, no se
podrá utilizar el programa.
c) La ventana del “Editor” (es la ventana de abajo), es donde se escriben los códigos
y programas o se dan las instrucciones que se requiere sean ejecutadas. En las
últimas versiones de SAS ®, que es a las que se refiere esta obra, el que se abre
por default es el “Enhanced Editor”, que es una versión mejorada del “Editor”. Es
muy útil porque las instrucciones o códigos que se escriben van en colores
Puede haber más de una ventana del “Editor” abierta, cada una conteniendo
diferentes códigos. Para hacer que un código específico se ejecute, primero de
marca o sombrea el código utilizando el botón izquierdo del ratón, y luego
oprimiendo el icono de orden de correr (el icono de “Run”, como veremos). Si por
alguna razón, se cerrase(n) la(s) ventana(s) del “Editor” (o del “Enhanced Editor”),
y se deseara reabrirla(s), hay que hacer clic en “View” (una opción en el menú), y
seleccionar “Enhanced Editor”.
d) La ventana del “Output” se encuentra por default detrás de las de “Log” y del
“Editor” mientras no haya resultados que mostrar. Cuando se corre un programa
que genere resultados al “Output”, este se coloca por delante del “Log” y del
“Editor automáticamente. En esta ventana aparecen los resultados que se pueden
“imprimir”. Esto no significa que de esta ventana sea posible imprimir
directamente, sino que son resultados que aparecen, es decir, son impresos en
forma virtual. Hay muchos resultados que no necesariamente aparecen en el
“Output”, aunque muchos de ellos pueden solicitarse mediante un código. La
manera que se sugiere aquí para imprimir los resultados a papel, es copiar el
contenido del “Output”, pegarlo en Word®, efectuar las ediciones necesarias; por
ejemplo, cambiar color y tipo de letra, o cualquier otra edición que se desee, y
finalmente, imprimir.
En ambiente Windows, las ventanas horizontales (es decir, todas, excepto la del
ambiente de SAS®) pueden arrastrarse y moverse con el Mouse, y todas las
ventanas pueden abrirse o cerrarse, pero antes de cerrar la última ventana de
SAS®, el programa pregunta si quieres cerrar la sesión. Al menos una ventana
debe permanecer abierta para continuar con el programa SAS® en ejecución.
Del menú principal, que es una lista de ocho palabras (File, Edit, View, Tools,
Run, Solutions, Window, Help) que se encuentra horizontalmente al extremo
izquierdo de la pantalla de SAS, quiero resaltar el uso de “View”. Si se oprime
“View”, se abre el menú con el cual se pueden acceder todas las ventanas de
SAS, como se observa en la Figura 2, y si se selecciona “Contents only”, aparece
el contenido de “Libraries”, los archiveros.
Figura 2. Menú que se abre al oprimir la opción “View” del menú principal.
Escribir instrucciones u oprimir los dibujos da los mismos resultados, por lo que se
recomienda utilizar los dibujos. Los dibujos del menú son prácticamente iguales a los
de los programas de Microsoft “Word®” ó “Excel®”, etc. Incluyen, entre otros:
1. Documento nuevo
2. Abrir archivos
3. Guardar archivos
3. Imprimir
4. Copiar
5. Cortar
6. Pegar
Todos éstos son muy útiles para guardar o modificar códigos, pero no se van a
discutir aquí, pues es obvio su uso, como en el editor de textos Word®.
Exclusivos de SAS® son los comandos de ejecutar o correr programa (“Run”), crear
un archivo nuevo, ver la ventana del “Explorer”, y ayuda de SAS®. El usuario deberá
explorar poco a poco todas estas opciones. Sólo algunas de ellas, las más
esenciales, se tratarán aquí.
Para tener un lugar específico donde guardar las bases de datos permanentes para
utilizarse en SAS®, se utiliza el comando de creación de archiveros, cuyo dibujo de
enlace es un archivero amarillo con una estrella azul arriba. Al oprimir este enlace, se
abre una ventana o pantalla como la que se muestra en la Figura 3.
Figura 3. Ventana que se abre al oprimir el icono de creación de archivero nuevo (el
dibujo del archivero amarillo con una estrella azul).
3. Cerrar el fólder si estaba abierto, así como cualquier base de datos que
contenga.
1. Abrir SAS® y oprimir el dibujo de creación de archivero nuevo (el dibujo del
archivero amarillo, con su estrella azul), va a salir una pantalla como en la
Figura 3.
7. Oprimir “Ok”
En este capítulo vamos a ver como crear una base de datos, en este caso, temporal
(la opción “b” de la lista anterior). Una ligera modificación al código, indicándole a
SAS® donde guardar los datos (un archivero diferente de “WORK”), da la orden de
convertir la base de datos a permanente.
Los archiveros que se crean como se describió en el capítulo anterior, sirven para
guardar las bases de datos en forma “permanente” (aunque tanto los archivos como
los archiveros se pueden borrar en el momento que se desee, con “Delete”). Sin
embargo, con frecuencia la base de datos es pequeña y no se requiere guardarla en
SAS®. Es posible que ya se encuentre en algún otro programa, en Excel®, por
ejemplo, y que no se desee tener la información repetida, o que sea preciso
actualizar la información periódicamente, lo cual quizá resulte más fácil hacer en
Excel® que en SAS®. En SAS® no se puede modificar directamente la información
en las bases de datos; es decir, si en una celda se encuentra el número “3.001”, por
ejemplo, y el número está mal, no se puede llegar a ese número en particular con el
cursor, ni mediante algún otro artificio, y modificarlo directamente. Se puede, sin
Si en el menú (la línea que contiene las palabras: File, Edit, View, Tools, Run, etc.)
se oprime “View” y después se selecciona “Contents only”, aparece a la izquierda (si
no es que ya estaba ahí mismo, pues por default al abrir SAS® aparece esta ventana
vertical) el dibujo de un archivero amarillo (Libraries). Si se oprime este enlace
aparecen los archiveros que se tienen. SAS® incluye dos archiveros: “SASUSER” y
“WORK”. Nos ocuparemos únicamente del archivero “WORK”. En “WORK” se
guardan todas las bases de datos a las cuales no se les haya indicado en que
archivero van. Mientras esté en proceso la sesión de SAS ®, las bases de datos
están disponibles y pueden ser vistas al abrir el archivero “WORK” (sólo se da clic en
“WORK”, y después en la base de datos que se desee ver).
/ comentario / o comentario;
El comentario o cualquier otra cosa que se escriba entre los “/ /” ó “ ;” no va a ser
leído por SAS®. Incluso pueden escribirse códigos a usar bajo condiciones diferentes
del análisis actual, que no se van a leer si se ponen entre los / / o ;. Aquí siempre
se va a utilizar la forma comentario; para las notas o comentarios.
Enhanced Editor
Para este ejemplo se va a crear una base de datos. Se debe escribir todo lo que
sigue exactamente como aparece aquí, en la ventana del “Editor”. O se puede
escribir en Word® y después copiar a la ventana del “Editor”.
Ejemplo de código para crear una base de datos escrita en SAS® (Figura 4):
DATA ejemplo;
INPUT rana tam salto;
CARDS;
1 1 16
2 2 18
3 3 17
4 1 12
5 2 17
6 3 21
7 1 15
8 2 16
9 3 17
;
tamaño 1= chico, tamaño 2 = mediano, tamaño 3 = grande;
Run;
En este caso, se observa que aparece un mensaje en la ventana del “Log”, como
puede verse en la Figura 5 (la ventana del “Log” se hizo un poco más grande
utilizando el ratón, para que se vea todo el contenido, para propósitos de este
ejemplo); el contenido del “Log” se reproduce a continuación, para facilitar su lectura:
79 DATA ejemplo;
80 INPUT rana tam salto;
81
82 *tamaño 1= chico, tamaño 2 = mediano, tamaño 3 = grande;
Se observa que:
DATA ranas.ejemplo;
INPUT rana tam salto;
CARDS;
1 1 16
2 2 18
etc.
Para ver la base de datos o archivo (Figura 6), primero se abre la ventana de
“Libraries” (si la ventana del “SAS Environment” se encuentra cerrada, el proceso es
oprimir “View”, y después “Contents Only”, para que se abra “Libraries”) y se hace
Para ver los datos del archivo, se hace clic sobre el mismo (Figuras 6 y 7). Se
pueden tener abiertas simultáneamente dos o más bases de datos, pero es preciso
cerrarlas antes de que se ejecute un código. Es preferible abrir las bases de datos
una por una, e irlas cerrando después de verlas, para no olvidar cerrar alguna antes
de dar la instrucción de “Run”.
Figura 7. Los datos abiertos del archivo “Ejemplo” que se encuentra dentro del
archivero “WORK”.
Para guardar el código (todo lo que escribimos; en este ejemplo, desde DATA hasta
RUN;) se deber abrir el menú “File”, y seleccionar “Save As” (Figura 8). Luego se le
da un nombre al código y se elige la carpeta donde queramos que se guarde (Figura
9), o bien, se puede crear una carpeta, tal como se hace en el programa Word®.
Figura 9. Pantalla para dar nombre al código de SAS® que se desee guardar.
Prácticamente no hay límite para el tamaño de las bases de datos que se guarden en
SAS®. El límite es el tamaño del disco duro de la computadora. Por supuesto, para
bases de datos muy grandes, los procesos del programa pueden tardar minutos,
horas, o hasta días. Generalmente, esto sucede sólo cuando se manejan datos de
poblaciones muy grandes, como por ejemplo, datos de los habitantes de países
enteros. En ciencias agropecuarias, puede haber bases de datos muy grandes en
análisis genéticos, pero, para la mayoría de la investigación en agronomía y ciencia
animal, las bases de datos no son muy grandes, y el programa corre en fracciones
de segundo.
Los códigos guardados pueden encontrarse a través del dibujo del fólder amarillo
abierto, o con “File”, y luego “Open”. Cuando se abre un código que se encuentra
guardado, se abre en el “Editor”, por lo tanto, para ejecutarlo, basta oprimir “Run;” y
se ejecutarán todos los códigos guardados, en el orden de aparición en el “Editor”.
Por supuesto, si se desea ejecutar uno solo de una serie de códigos, basta con
sombrearlo y luego oprimir “Run;”.
Por lo anterior, cuando un programa no corra bien, primero hay que verificar que:
1. No se haya olvidado una “;”
2. Todas las palabras estén correctamente escritas, y
3. El orden de las palabras en los programas ó códigos.
DATA run;
INPUT rana tamaño salto;
CARDS; También puede escribirse “DATALINES”;
1 1 16
2 2 18
3 3 17
4 1 12
5 2 17
6 3 21
7 1 15
8 2 16
9 3 17
;
tamaño 1= chico, tamaño 2 = mediano; tamaño 3 = grande;
Run;
Para algunos casos de manejo o de análisis de datos, quizá sea preferible utilizar
códigos ya hechos con anterioridad, como una “receta de cocina”, que NO se debe
variar, excepto para cambiar nombres de variables, de base de datos y de archivos.
Recomendación
Cuando se manejan datos, especialmente cuando las bases de datos tienen muchas
observaciones y/o variables (miles o millones), a veces es necesario o aconsejable,
inventar una pequeña base de datos, correrla con el código que esté a prueba,
verificar que el código esté haciendo lo que se desea, y luego cambiar el nombre de
la base de datos con la que verdaderamente se quiere trabajar. También se
recomienda, antes de manejar los datos, hacer una copia de la base de datos
original, y luego manejar la copia, para que si hubiese algún problema, se tenga un
respaldo.
Si los códigos son muy largos, pueden escribirse primero en Word® y luego cortar y
pegar en el “Editor” de SAS. Sin embargo, es preferible hacer códigos sencillos y
cortos, y primero correrlos en archivos de prueba, que sirvan exclusivamente para
verificar que los programas realicen lo que se espera que hagan. Una vez que el
programa corrió con el archivo de prueba, se modifica la parte del código que se
refiere a que archivo debe leer SAS, y se le escriben los comentarios apropiados.
Para utilizar una opción, escriba la palabra OPTIONS como parte del código de SAS,
i.e.
Las opciones se pueden poner en la primera línea que se escriba, pero puede estar
en cualquier lugar del código, excepto en medio del mismo. Si se escribe otra opción
después, se cancelan las primeras.
La base de datos
Los archivos de datos en SAS® tienen una estructura bien definida: las variables se
encuentran en columnas (de hecho, a veces se les llama “columnas”), mientras que
las observaciones están en “hileras”, en forma parecida a las tablas de Excel®, como
se vio en el ejemplo de las ranas. Sin embargo, se pueden inter convertir las hileras
en columnas con “proc transpose” (que no se va a tratar en esta obra). En caso de
que se requiriese efectuar este tipo de manipulación de los datos, se recomienda
utilizar Excel®. Esto puede hacerse exportando los datos de SAS® hacia Excel®
(también utilizando la función del “Wizard”, como se verá después para la
importación de datos de Excel® hacia SAS®), efectuar el manejo que se desee en
los datos, y reimportando a SAS®, o bien, manipulando los datos originales desde el
principio en Excel®. Sin embargo, en este caso (y siempre), se debe cuidar que
todas las celdas de Excel® tengan el formato correcto; es decir, que no vaya a haber
un formato de texto donde debería haber un formato de fecha, o un formato de
moneda donde deba ser de número, etc. Cuando esto sucede, parte de la
información se va a transferir a SAS® en forma incorrecta o simplemente no se va a
transferir, ya sea toda, o parte de la tabla de Excel®.
2. Hacer que los nombres de las columnas (variables) tengan ocho o menos
letras y que no contengan espacios, guiones, puntos, etc. etc. El nombre debe
empezar con una letra, y se pueden incluir números y guión bajo.
3. Que en los datos perdidos (inexistentes en esta base de datos) haya espacio
en blanco, no puntos, ni ceros.
4. Que si hubiera alguna fecha (no en este caso) fuera seguro que el formato de
celda en Excel®, es de Fecha.
6. Eliminar las unidades de medida. Sólo deben quedar los nombres de las
variables y las variables.
Algunos programadores prefieren guardar sus bases de datos ya listas para ser
exportadas a SAS, en formato CSV (comma delimited). Todas las instrucciones que
siguen son válidas para esta opción, únicamente se elige, en lugar de “Excel”, “CSV”,
y todo lo demás se hace exactamente igual.
Figura 10. Archivo de datos de Excel® editado para ser exportado a SAS®.
Figura 12. Selección del programa de donde se van a importar datos a SAS®.
Una razón por la que se suelen exportar los datos de SAS® a Excel®, es porque las
gráficas en Excel® son más atractivas y fáciles de hacer. El procedimiento es
prácticamente el mismo (en reversa) que para importar utilizando el Wizard (Figuras
19 a 22).
Por ejemplo. Supongamos que tenemos una pequeña base de datos en SAS® y que
tenemos una base de datos más grande en Excel®. Para unir esas bases de datos
podemos:
Aparece una nueva ventana; ahí, debajo de “Choose the source SAS dataset”
(“seleccione la base de datos de origen”), en donde dice “Library:” seleccionar EJS, y
en donde dice: “Member”, seleccione el archivo llamado “Exportar”, y luego haga clic
en “Next”:
Dejamos los defaults, que incluyen exportar a Excel® y damos clic en “Next”.
Entonces se abre la ventana que sirve para buscar la carpeta de Excel® (haciendo
clic en “Browse”) en donde vamos a guardar la base de datos que queremos
exportar. En este caso, la carpeta se llama “Curso de SAS”. Al archivo le nombramos
“Masdatos”, y finalmente, damos clic en “Guardar”.
Se pueden importar y exportar datos sin utilizar el Wizard. Esto es un poco más
complicado y generalmente, el Wizard es la opción más indicada y suficiente. Sólo se
ofrecen en este capítulo algunos comentarios y un ejemplo como información
general.
Para que SAS sepa que hacer con una base de datos hay que especificar: que tiene
que ir a donde, o que tiene que venir de donde.
Se puede utilizar la orden PUT para exportar o INPUT para importar. En estos casos
es muy importante saber si los datos van a ser exclusivamente numéricos o si van a
contener otros caracteres.
Los datos numéricos contienen sólo números. Los números pueden ser positivos o
negativos, y contener decimales. Se pueden realizar operaciones matemáticas con
ellos, como sumas, restas, y todas las demás.
Por ejemplo, la identificación de animales (ID) puede contener sólo números: 00001,
y a veces números y letras: 0001ENE_04, si se desea informar, por ejemplo, que es
el primer animal o animal 1, y que nació en enero de 2004, o puede ser:
01HO_Ene05, para informar que fue el primer nacimiento, que fue Holstein, y que
nació en enero de 2005. Por supuesto, esto es un ejemplo, pues la identificación de
SAS® lee primero algunas observaciones de cada columna para decidir el formato
de toda la columna. Si no se especifica en el código que la variable a importar es de
carácter, y no aparece un carácter en las primeras líneas de datos, SAS® va a
suponer que es numérica, pues es el “default”, y todas las observaciones que
contengan algo más que números, se van a considerar datos perdidos. Para pedirle
a SAS que una variable sea considerada de tipo carácter, al nombre de la variable, le
debe seguir un signo $.
Como puede verse, no importa que las columnas de datos de las variables (ID y
peso) estén alineadas, y nótese que en las observaciones y hasta en el código, se
pueden entremezclar letras y números, y mayúsculas y minúsculas. Sin embargo, es
mejor guardar el mayor orden posible, pues además de que cuando hay errores de
programación y un programa no corre, es más fácil encontrar los errores (o “bugs”,
Es importante señalar que los nombres de las variables deben contener menos de 32
carácteres (en la versión 7 y anteriores, sólo se permitía un máximo de ocho). Cada
nombre debe empezar con una letra o con un guión bajo. Los nombres de variables
también pueden incluir números. Aquí vamos a restringirnos a nombres de ocho
En este capítulo se resumen las maneras de hacer que SAS lea los datos que se
necesiten trabajar. Los métodos más usuales ya han sido cubiertos. Este capítulo es
opcional. Puede pasarse al Capítulo 8 sin ningún inconveniente.
Con esta opción, los datos crudos (antes del análisis) son parte del código de SAS y
se escriben en el “Editor”.
El siguiente programa o código con la orden DATA crea un archivo de datos llamado
ENCUESTA con 10 observaciones y siete variables. Las variables se llaman ID,
SEXO, EDAD, ING, R1, R2, y R3. Los datos corresponden a una encuesta en donde
ING significa los ingresos anuales totales, en miles, R1 a R3 son la calificación con
que los individuos (ID) evaluaron a tres productos orgánicos que piensan lanzarse al
mercado. La palabra INPUT define a las variables que deben leerse en cada línea de
datos. La palabra DATALINES le indica a SAS que el proceso de la palabra DATA ha
sido completado y que la siguiente línea contiene datos reales. Nótese que las líneas
que contienen los datos no terminan en punto y coma. En lugar de la palabra
DATALINES se puede utilizar la palabra CARDS. Las dos son equivalentes. El punto
y coma antes de PROC PRINT es opcional, pero define mejor cuales son los datos.
Proc print se utiliza para que los datos aparezcan en el “Output”, de tal manera que
no sea necesario abrirlos desde su archivo para verlos, y para que puedan copiarse
a Word® e imprimirse.
options nocenter;
DATA encuesta;
INPUT id sexo $ edad ing r1 r2 r3 ;
DATALINES;
1 F 35 17 7 2 2
La variable SEXO en la orden INPUT está seguida por un signo de dólar ($) para
indicar que esta variable es de carácter. Si no se especifica la instrucción, SAS
supone que las variables son numéricas. Si entonces encuentra un carácter (una
letra o símbolo), le va a asignar un valor perdido (.) a esa observación. Por ejemplo,
si se quita el signo de dólar, como se ve en el siguiente código:
DATA encuesta;
INPUT id sexo edad ing r1 r2 r3 ;
DATALINES;
1 F 35 17 7 2 2
17 M 50 14 5 5 3
33 F 45 6 7 2 7
49 M 24 14 7 5 7
65 F 52 9 4 7 7
81 M 44 11 7 7 7
2 F 34 17 6 5 3
18 M 40 14 7 5 2
34 F 47 6 6 5 6
50 M 35 17 5 7 5
;
PROC PRINT; RUN;
A veces es útil decirle a SAS exactamente donde encontrar el inicio y el final de una
observación o columna. Por ejemplo, cuando los datos contienen una o más
variables de carácter con diferentes longitudes o que contengan espacios. Por
ejemplo, se desea importar las variables llamadas nombre, edad, ciudad y estado de
una base de datos:
data ejem_dos;
input nombre $ 1-20 edad ciudad $ 29-37 estado $ ;
datalines;
Oliver Schabenberger 33 Lansing MI
Juan E. Domínguez 37 New York NY
;
run;
proc print data= estosdat; run;
Para la segunda observación, SAS encuentra los carácteres 'New' y los asigna a la
variable CIUDAD suponiendo que el espacio entre 'New' y 'York' delimita a las dos
variables. Los carácteres 'York' son asignados a la siguiente variable de la orden
INPUT, que es ESTADO.
data XYZ;
input x y z;
datalines;
data XYZ;
input x y z @@;
datalines;
1 1 12.4 1 2 11.3 1 3 1.4
2 1 2.1 2 2 19.4
;
run;
Por el símbolo @@, SAS® lee cada línea de datos y va llenando las variables X, Y, y
Z en turno, y continuará llenando las variables hasta que llegue al final de la línea.
Sin el símbolo @@, se habría pasado a la siguiente línea tan pronto la última
variable estuviese llena, dejando fuera datos, como ocurrió en el ejemplo anterior
cuando leyó “New” y dejó fuera “York”, y evitó que el valor “NY” siquiera fuese leído.
Algunas veces se puede obtener gran cantidad de datos que se encuentran escritos
en archivos ASCII, que generalmente tienen extensión TXT. Esto ocurre con editores
de texto, como el Notepad de Microsoft, o muchos otros, que sirven específicamente
para guardar datos (existen editores de texto que se pueden obtener gratis desde
Internet). Algunos programas, como C, C++, Fortran, y otros, requieren que la
información se encuentre en archivos de extensión TXT. Sin embargo, generalmente
También es posible que los archivos que se deban analizar con SAS®, de origen
vengan en archivos ASCII. Con frecuencia, trabajar con ese tipo de archivos es más
conveniente que con archivos de hojas de cálculo, porque los archivos ASCII ahorran
espacio, y a veces son preferibles cuando las variables contienen muchas
observaciones.
Hay dos formas para hacer que SAS lea un archivo ASCII utilizando la orden DATA:
una es usando sólo la palabra INFILE y otra es con la palabra FILENAME más la
palabra infile.
Infile
data readasc;
infile 'D:\investig\Toxina\Data2007\DO.txt';
input lugar rancho muestra DO;
run;
Filename
Si las columnas del archivo de ASCII no están delimitadas por espacios (por ejemplo,
los archivos de MSExcel que se guardan como archivos de texto *.prn están
delimitados por comas), se pueden añadir las opciones de delimitantes dentro de la
declaración de INFILE. Por ejemplo, para especificar que los delimitantes entre
variables son comas, se escribe: delimiter = “,”; tal como se ve a continuación:
Muchos archivos contienen información del encabezado, que no debe ser parte de
los datos para SAS®, como en el caso de los datos en el Apéndice. Para saltarse
registros al principio del archivo, utilice la opción FIRSTOBS= . Para leer únicamente
un número específico de registros, utilice la opción OBS = . Por ejemplo:
filename toxic 'D:\Investig\Toxina\Data2007\DO.txt';
data readasc;
infile toxic delimiter=',' firstobs=12 obs=100;
input lugar rancho muestra DO;
run;
A partir de este capítulo, se dará una especie de lista de códigos. Todos estos deben
de escribirse en la ventana del “Editor”, y hacer referencia a los archivos que se
deseen manejar o analizar.
A veces sucede que se tienen los datos revueltos, ya sea por haberlos capturado
poco a poco a través del año, y/o haber unido varias bases de datos ya una vez
guardados en SAS®, o por cualquier otra causa. También puede ser útil ordenar o
reordenar las bases de datos por orden alfabético o por fecha de captura o por
alguna característica, como número de lactancia, etc., para revisar más fácilmente
los datos. Por otra parte, ordenar es un paso indispensable antes de utilizar ciertas
órdenes, como “merge” (página 66), por ejemplo. Para reordenar los datos, se utiliza
la orden “proc sort”.
Proc sort
2. Para verificar la calidad de los datos y/o resumir información de los datos
crudos
Proc freq
Con Proc freq se obtienen frecuencias de las variables de interés. De esta manera,
se puede verificar que se tengan suficientes datos para un análisis estadístico
confiable, además de que se pueden ver algunas tendencias generales de los datos.
El código de proc freq, que saca las frecuencias de las variables que se especifiquen,
a la ventana del “Output”, es:
The FREQ Procedure
Cumulative Cumulative
mo_brth Frequency Percent Frequency Percent
ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ
1 19855 6.83 19855 6.83
2 59485 20.45 79340 27.27
3 89286 30.69 168626 57.97
4 61783 21.24 230409 79.21
5 30699 10.55 261108 89.76
6 12257 4.21 273365 93.97
7 4216 1.45 277581 95.42
8 1325 0.46 278906 95.88
9 1361 0.47 280267 96.35
10 2020 0.69 282287 97.04
11 3355 1.15 285642 98.19
12 5254 1.81 290896 100.00
Frequency Missing = 26002
Si el archivo va a ser temporal, sólo hay que poner un nombre; si se prefiere que se
guarde el archivo en forma permanente en SAS®, entonces hay que indicar el
nombre del archivero en donde debe guardarse. Si, por ejemplo, el archivero se
llama: “datos” y el archivo queremos que se llame “results”, la orden sería:
out=datos.results.
Proc means
Con proc means es fácil constatar que los datos con que estamos trabajando estén
dentro de rangos razonables y que SAS esté tomando los datos con el formato
correcto. Por ejemplo, si se han importado datos de Excel®, en ocasiones una
columna que debería tener formato de números, es importada con formato de texto
(o viceversa), y aun cuando físicamente se pueda ver la tabla en SAS® con números,
es posible que tenga otro formato, y en este caso, de los datos de esa columna, no
se sacarán promedios.
Por ejemplo, supongamos que se tiene un archivo (temporal, pues no lleva el nombre
del archivero) llamado “j”, del cual queremos obtener información acerca de plantas
susceptibles a ser atacadas por plagas. Por razones de nuestra investigación,
necesitamos que la información sea por especie de planta atacada y tipo de insecto
plaga. Se requieren estadística descriptiva con los promedios, desviaciones
estándares y máximos, y mínimos de la cantidad de insectos (en cualquier estado de
evolución) encontrados en un muestreo y de la edad de las plantas atacadas.
Sin embargo, para poder utilizar esta opción de proc means, es necesario ordenar
los datos por las variables de las cuales pretendemos obtener información, de la
siguiente manera:
Nótese que existen más variables (está la edad, que en este caso no interesa) que
las que se utilizan en la orden de proc means.
El output sería:
The SAS System 1
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ especie=cedro insecto=grillo ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
The MEANS Procedure
Analysis Variable : cantidad
N Mean Std Dev Minimum Maximum
4 3.2500000 3.3040379 0 7.0000000
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ especie=cedro insecto=palomill‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
Analysis Variable : cantidad
N Mean Std Dev Minimum Maximum
4 8.7500000 5.8523500 2.0000000 15.0000000
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ especie=roble insecto=grillo ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
Analysis Variable : cantidad
N Mean Std Dev Minimum Maximum
4 3.5000000 1.2909944 2.0000000 5.0000000
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ especie=roble insecto=palomill ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
Analysis Variable : cantidad
N Mean Std Dev Minimum Maximum
4 5.2500000 2.2173558 3.0000000 8.00000004
El siguiente código ordena que los datos, una vez que hayan sido ordenados por ID,
se guarden en un archivo llamado “lactone”, y no permite que haya observaciones
repetidas por la variable ID.
A veces conviene modificar un archivo; por ejemplo para efectuar algún análisis, o
para obtener datos derivados de los originales, o para tener archivos separados
según su contenido. En esta sección se ofrecen algunas opciones para lograr lo
anterior.
Drop
data nuevo_nombre;
set nombre_anterior;
run;
Si es más fácil instruir a SAS® acerca de las variables que deban quedarse, en vez
de decirle cuales debe eliminar, entonces se puede utilizar la orden “keep”,
exactamente igual que “drop”:
Por ejemplo, de una base de datos grande, llamada “vacas.hol” que tiene muchas
variables y todas las lactancias de las vacas, queremos hacer un análisis únicamente
de la primera lactancia, y en el nuevo archivo queremos incluir sólo las variables id
(la identificación) breed (la raza) herdid (el hato) y lactno (el número de lactancia).
Esta nueva base de datos queremos que se llame new. Entonces escribimos en el
“Editor”:
Rename
Esta orden le cambia el nombre a una variable. Por ejemplo: en el archivo “new”
(recuerde: nada de acentos ni espacios ni símbolos en ningún nombre que se utilice
en SAS®), queremos renombrar algunas variables. Queremos que sus nombres
ahora estén en español en vez de en inglés. Específicamente queremos que en vez
de “breed”, la variable se llame “raza”, en lugar de “milk”, que sea “leche”, y en vez
de “fat”, sea “grasa”. Por precaución, primero copiamos la base de datos a otro
archivo, al que llamamos “new2”. La orden requiere que se escriba:
rename=(variable_antigua=variable_nueva).
En consecuencia, ésto es lo que escribimos:
¡Recuerde!
Tenga cuidado en la escritura del código, o mejor haga un archivo temporal, y si los
resultados son los esperados, entonces …. y sólo entonces, haga un archivo
permanente llamado, por ejemplo, analisis.new (o como realmente sea). Otro
ejemplo:
Por ejemplo, se tiene el dato del promedio semanal de producción de leche de unas
vacas, y en vez de eso, se desea obtener el total de leche producida en esa semana.
Como para sacar el promedio, lo que se hizo fue sumar las producciones de la
semana y después, dividir entre siete, se tiene que hacer la operación contraria, es
decir, multiplicar el promedio por siete. Esa operación se hace de la siguiente manera
en el archivo vacas.leche:
Data vacas.leche;
set vacas.leche;
LechAcum = promsem*7;
Run;
Vaca promsem
1 23.5
2 27.2
3 25.9
país = 52
ciudad = 12
apiario = 01
colmena = 25
cosecha = 01
Existen básicamente dos formas de unir datos: añadir las hileras de una base a las
de otra (s), o añadir las columnas de una base de datos a las de otra(s).
En el primer caso, se utiliza la orden “set”, parecido a como ya se vio antes para
hacer una base de datos igual a otra, pero con otro nombre (¿recuerdas? es: data
new; set old; run;).
Set
Por ejemplo, se tienen tres bases de datos para un estudio de eficiencia económica
de la utilización de tres tipos contrastantes de plantaciones forrajeras: una de maíz,
otra de sorgo, y otra de una leguminosa. Las bases se encuentran en el archivero
“Efic”, y para su análisis, se desea unirlas. Lo más lógico es unir sus hileras, es decir,
que quede la información de maíz bajo (o encima ) de la de sorgo y de la
leguminosa.
Esta orden sirve para unir dos o más bases de datos para formar un solo archivo que
contenga las variables de las bases de datos originales, es decir, se unen o
combinan columnas, de manera que la nueva base de datos tenga más variables.
En muchos casos se necesita unir columnas de una serie de bases de datos. Esto
ocurre, por ejemplo, cuando se estén efectuando estudios con mediciones repetidas,
y cuyas bases de datos se van colectando en forma separada por fecha. Si cada
individuo que se mide, digamos….. cada mes, o cada año, etc. tiene un número de
identificación, lo más lógico es que las bases de datos de las diferentes fechas se
vayan uniendo por el número de identificación.
Por ejemplo, en un estudio de crecimiento de árboles, éstos fueron medidos una vez
cada seis meses durante dos años (cuatro medidas). Los datos de cada día de
medición fueron guardados en archivos permanentes llamados, respectivamente:
medida.primera, medida.segunda, medida.tercera, y medida.cuarta. Ahora es preciso
analizar las cuatro bases de datos juntas, para lo cual, se va a formar el archivo
todos_datos:
Sin embargo, primero es necesario que cada una de las bases de datos del archivero
“medida” (primera segunda tercera y cuarta) se ordenen por la variable a unir, que es
id_arbol. Primero hay que escribir, para cada una de las bases de datos:
Si se dejan exactamente los mismos nombres en los cuatro archivos, al final se van a
tener los datos únicamente del último archivo añadido cuando los datos
correspondan a la misma observación, como se ve en la Figura 24.
data join;
merge check check2;
by id; run;
La orden Merge puede utilizarse para “filtrar” datos. Por ejemplo, supongamos que
nos llegan los datos productivos y reproductivos de cabras lecheras de toda una
región. Sin embargo, en un archivo aparte tenemos datos de pedigrí de cabras en
donde se indican quienes fueron sus padres y madres. Es preciso que formemos una
base de datos que incluya sólo a las cabras que tengan tanto los registros
productivos y reproductivos, como información de pedigrí, es decir, cabras que se
encuentren tanto en el primero como en el segundo archivo.
Otras opciones de las condiciones de unión (and, or) podrían ser, por ejemplo:
If a and NOT b, es decir, que estén en la base de datos a, pero no en la b;
If b and NOT a, es decir, que estén en la base de datos b, pero no en la a;
if a, es decir, la condición es que todos los datos del archivo a estén presentes;
if a or b, que estén los datos de a ó de b. Con frecuencia no es necesario utilizar
“or” porque es el default.
En general: si se usa “and” deben suceder las dos condiciones, y si se usa “or”
puede suceder una u otra condición para que los datos sean incluidos. Claro, puede
haber más de dos archivos que se deban unir, y por lo tanto, se tendrían archivos
llamados “a”, “b”, “c”, ….etc.
Los condicionantes
If…then
Esta es una orden que sirve para indicarle a SAS® que, si se cumple una condición
en los datos de alguna variable, tiene que actuar de tal o cual forma. Algunos
ejemplos de acciones, podrían ser: If……..algo…then:
Delete (entonces borra)
Output (entonces expónlo, muéstralo)
(alguna operación matemática, crear una variable, o lo que se necesite).
Por ejemplo, supongamos que estamos editando una base de datos de borregos
australianos. La base de datos es demasiado grande como para verificar si todos y
cada uno de los animales tiene identificación. Podemos en este caso utilizar la orden
if…then. Como siempre, primero creamos un archivo de prueba, y si todo sale bien,
entonces, y sólo entonces, haremos un archivo permanente:
Data=id_only; *nuestro archivo de prueba;
set austr.allsheep; *el archivo original;
if id = '.' then delete; *si no tiene “id”, entonces borra;
run;
o, alternativamente:
Data=id_only; *nuestro archivo de prueba;
set austr.allsheep; *el archivo original;
if id NE '.' then output; *si tiene “id”, puesto que NO es Igual a “.” (NE
es NOT EQUAL TO) entonces muestra los datos;
run;
= es igual a…
NE no es igual a…
> es mayor que… sólo para números
< es menor que….sólo para números
Por ejemplo, queremos que de un archivo que tiene datos de vacas Holstein y
Jersey, sólo nos quedemos con vacas Jersey, que están codificadas como "JE”:
data jerseys;
set milk.allcows;
if breed='JE' then output; *Conviene resaltar la orden con espacio;
*Notese que “JE” tiene comillas, porque no es un numero sino una variable de
caracter;
run;
De esta manera tendremos una base de datos (primero temporal, en “jerseys”, que
después podremos convertir a permanente) con los datos únicamente de las vacas
Jersey.
Ahora supongamos que para algunas vacas no tenemos el dato “Edad al parto”, que
vamos a codificar como “EP”, pero tenemos los días en lactancia, la fecha de
nacimiento y la fecha en la que se realizó la evaluación de las vacas, es decir, la
“fecha del muestreo”…
Los días en lactancia son los que han transcurrido desde el parto, lógicamente. La
edad de la vaca es, naturalmente, la fecha de muestro menos la fecha de nacimiento.
En consecuencia:
Else if … then
Cuando se tienen varias condiciones que realizar sobre una misma variables, es
preferible utilizar la opción “else if….then”, en lugar de únicamente “if..then”.
Por ejemplo. Supongamos que esta vez queremos añadir la variable “season”
(estación del año) a unos datos que vamos a analizar. Tenemos los meses de
nacimiento de las vacas (variable llamada “MONTH”). La variable MONTH está
codificada con números, que corresponden a 1 es enero, 2 es febrero, …, 12 es
diciembre.
Con los datos anteriores queremos formar la variable “season”, de tal manera que el
número 1 sea primavera, el 2, verano, el 3, otoño, y el 4, invierno.
NOTA: Es más sencillo manejar datos cuando todas, o casi todas las variables sean
numéricas o estén codificadas con números, en lugar de utilizar nombres.
Realiza acciones sólo si se cumple una condición de “y” (ambas condiciones deben
cumplirse) o de “o” (una u otra condición deben cumplirse). Más de dos condiciones
pueden incluirse en este caso de if…and/or…then.
Por ejemplo, suponemos que queremos una base de datos con todos los borregos
australianos que tengan tanto la identificación de su padre (“SIRE”), como la de su
madre (“DAM”). Un ejemplo de código, sería:
Data= pedigree;
Set austr.allsheep;
If SIRE NE ‘.’ and DAM NE ‘.’ then output;
Run;
Data cabras;
Set milk.cabras;
FORMAT fechnac MMDDYY8.;
FORMAT f_parto MMDDYY8.;
run;
Mes, año. En algunas ocasiones se tienen las fechas, pero es conveniente extraerle
el año y/o el mes. Existen muchas causas por las que esto puede ser importante en
las ciencias agropecuarias. Por ejemplo, el componente hato - año de nacimiento -
estación de nacimiento (llamado “herd-year-season” o hys en inglés) es casi
indispensable como parte de los modelos de evaluaciones genéticas en ganado,
porque es lo que da el componente de contemporaneidad. Para poder crear esta
variable de “hys”, con frecuencia se tienen que formar las estaciones a partir de los
meses, y extraer los años a partir de las fechas de nacimiento del ganado.
Data cabras;
Set milk.cabras;
Anho = YEAR(fechnac);
Mo = MONTH(fechnac);
run;
Y ¡listo!
Sumatoria. Por ejemplo, imaginemos que tenemos los datos de pesos de leche
producida por unas borregas y quisiéramos conocer el total de la leche producida en
la lactancia.
Los datos de los pesos de la leche se llaman “leche1 leche2…leche n ”. Sólo para
ilustración, voy a utilizar sólo dos días de la lactancia, a los que voy a llamar “b” y “c”.
Un código podría ser:
data look;
input id b c;
cards;
1 2 5
2 2 .
3 2 8
;
run;
data check;
set look;
add = SUM(of b,c);
run;
Máximos. Ahora supongamos que hay hembras que se tienen que inseminar
muchas veces para quedar preñadas. El archivo es una colección de fechas
periódicas de muestreo y en algunas fechas, el número de veces que se reporta que
la hembra ha sido inseminada, aumenta, porque no quedó cargada la vez anterior.
Una vez que la hembra queda cargada, se reporta cuantas veces fue inseminada y la
data ej;
set ejemplo;
maxIns = MAX(of insem1, insem2, insem3, insem4);
run;
Recomendaciones finales
5. Hay casi una infinidad de sitios web que te pueden ayudar a resolver
dudas de cómo efectuar algún trabajo en SAS®. Sin embargo, la mayoría están
en inglés, pero no hay que desanimarse. Si no sabe inglés, busque de todas
maneras, pues los sitios en español son cada vez más comunes.
SAS® ofrece una variedad enorme de procedimientos estadísticos para ser utilizada
en todo tipo de investigación aplicada, como la que generalmente se requiere en las
ciencias agropecuarias. La gama cubre desde análisis categórico, multivariado, de
modelos de riesgo o sobrevivencia, regresión, análisis de modelos mixtos, pruebas
no paramétricas, apoyo para simulaciones, y mucho más. Constantemente se hacen
mejoras a los programas.
Cada uno de los procedimientos tiene un respaldo teórico muy extenso, y su buen
uso requiere un profundo entendimiento de las bases y de los ámbitos de aplicación
correctos. Las bases son generales, y son: aleatorización, control del error (por
homogenización y/o bloqueo) y multiplicidad de repeticiones. Estos u otros conceptos
no van a ser explicados aquí; simplemente se mencionan para tratar de hacer
conciencia de la responsabilidad que le compete al usuario de un programa de
análisis estadístico. Tampoco se van a explicar los reportes (el contenido del
“Output”) que se obtienen cuando se ofrece la presentación de alguna corrida de un
ejemplo de código. La razón es porque sólo aquel que ya sabe que es lo que
significan, podrá apreciar su valor y es quien deberá/va a usarlos de todas maneras.
Proc glm
La orden CLASS se usa para designar las variables que son factores en el modelo.
Las variables en CLASS pueden ser numéricas o clasificatorias. Si no se incluye
CLASS, PROC GLM supondrá que las variables independientes designadas en
MODEL son numéricas y calculará un modelo de regresión en lugar de un modelo de
ANOVA.
La orden MODEL tiene la forma: variable dependiente = factor(es), que son sinónimo
de variables clasificatorias, de variables independientes, o de efectos.
Un código de glm debe contener el nombre del archivo a analizar (DATA), el modelo
con el que se va a analizar (MODEL) y la orden de ejecutar el programa (RUN). El
código de glm puede contener otras instrucciones, por ejemplo:
Una vez más, PROC GLM para datos balanceados, en forma general:
PROC GLM data = base_de_datos;
CLASS variables;
MODEL variable dependiente = variables independientes;
MEANS efectos /opciones; *Ver Cuadro 1;
ESTIMATE efectos/ opciones;
RUN; *En lugar de “Estimate” se puede pedir “CONTRAST”;
Data ejemplo;
input y factor $;
cards;
3 bajo
4 bajo
4 bajo
5 bajo
6 medio
7 medio
4 medio
3 alto
3 alto
6 alto
;
run;
proc glm;
class factor;
model y = factor;
estimate 1 0 -1;
run;
Proc univariate
Para estadísticas descriptivas: rango y percentiles, con o sin gráfica. El código es:
Para ilustrar el tipo de datos que se obtienen con un proc univariate simple, vamos a
pedir esta opción para la siguiente base de datos:
DATA ST4;
INPUT LGT OTHER PCM PDM ACTUAL;
DATALINES;
350 400 1516.8 5.0 656
850 800 2266.6 8.0 1382
1200 1100 2189.2 9.0 1666
1700 1600 2773.4 13.0 2392
2900 2800 3535.8 18.5 3901
450 500 1402.4 5.0 293
600 600 1673.0 7.5 1019
900 800 2146.6 9.0 1746
1600 1500 2243.2 10.5 2216
2000 1800 3128.0 18.0 3829
400 400 1543.2 4.5 536
750 650 1847.8 7.0 1382
The UNIVARIATE Procedure
Variable: LGT
Moments
N 30 Sum Weights 30
Mean 1395 Sum Observations 41850
Std Deviation 871.71551 Variance 759887.931
Skewness 0.68529167 Kurtosis ‐0.6015925
Uncorrected SS 80417500 Corrected SS 22036750
Coeff Variation 62.4885671 Std Error Mean 159.15275
Basic Statistical Measures
Location Variability
Mean 1395.000 Std Deviation 871.71551
Median 1200.000 Variance 759888
Mode 400.000 Range 2850
Interquartile Range 1100
Tests for Location: Mu0=0
Test ‐Statistic‐ ‐‐‐‐‐p Value‐‐‐‐‐‐
Student's t t 8.765164 Pr > |t| <.0001
Sign M 15 Pr >= |M| <.0001
Signed Rank S 232.5 Pr >= |S| <.0001
Quantiles (Definition 5)
Quantile Estimate
para la variable OTHER y lo mismo para cada una de las otras tres.
Ahora, se pide lo mismo, pero sólo para una de las variables, y con diagrama:
proc univariate plot data=ST4;
var actual;
histogram / normal;
run;
El resultado es el siguiente:
The UNIVARIATE Procedure
Variable: ACTUAL
Moments
Proc reg
Análisis de regresión (cuadrados mínimos ordinarios).
PROC REG usa la orden MODEL para definir el modelo teórico de la relación entre
las variables independientes y dependiente. Es posible tener más de una orden de
MODEL (esto es útil cuando se está tratando de encontrar el modelo que mejor se
ajusta a los datos).
Si usted necesita usar los valores que se hayan creado de la regresión (tales como
valores predichos, residuales, etc.) para otros propósitos además de gráficas, se
puede definir una nueva base de datos que contenga estos valores. Use el comando
OUTPUT OUT = nombre de la nueva base de datos.
Una lista de algunas de las opciones que se pueden solicitar para incluirse en una
gráfica (que se pide con “PLOT”) se muestra en el Cuadro 3.
Stepwise Realiza la regresión stepwise (las variables entran y/o salen paso a
paso).
Forward Realiza la selección forward (las variables entran una a una).
Backward Realiza la selección backward (del modelo completo, las variables se
van eliminando –o quedando- una a una).
MAXR Selecciona el modelo usando la máxima mejoría en R2.
Proc corr
Este procedimiento sirve para obtener una matriz de correlaciones entre las
variables. Este procedimiento calcula el coeficiente de correlación de Pearson y
produce estadísticas descriptivas – media, desviación estándar, mínimos y máximos
– para todas las variables de par en par, enlistadas en la orden VAR. También
calcula un p-value para probar si la correlación verdadera entre las dos variables es
cero. La orden WITH puede usarse para reducir el número de coeficientes de
correlación que se computen; en este caso, los pares de variables provienen de
aquellas enlistadas en la orden VAR cruzados con las enlistadas en la orden WITH.
Ejemplo:
proc corr data= nombre;
var var1 var2 var3;
Una lista de las opciones que se pueden utilizar con Proc corr se encuentra en el
Cuadro 4.
Proc boxplot
Se usa proc boxplot para obtener gráficos de bigotes. Por ejemplo, para la variable
leche” por niveles de “region”. Esto requiere que los datos s ordenen por region con
proc sort.
En este último capítulo se ofrece una lista de códigos que normalmente se utilizan en
diseños experimentales (Hinkelmann y Kempthorne, 1994). El procedimiento a
utilizarse para este propósito es proc glm (también podrían escribirse exactamente
igual para proc anova), con inicio y término del código tal como se describió en el
Capítulo 10, es decir, todos los códigos empiezan con “PROC GLM DATA =
NOMBRE;”, y finalizan con “RUN;”. Para utilizar correctamente estos códigos, como
en el capítulo anterior, también se requiere de un sólido respaldo en estadística.
Y ij = μ + τi + ε ij
CLASS Trt;
MODEL Y=Trt;
De esta manera se prueba Ho: Treat1 = Treat2 = …= Treatn , y se especifica que las
unidades experimentales, es decir, las repeticiones se encuentran anidadas dentro
de los tratamientos, por lo que Rep(Trt) es una descripción del componente error
experimental, ε ij .
2. Comparación de tratamientos
Los códigos son iguales tanto para CONTRAST, como para ESTIMATE. Se recuerda
que los coeficientes deben de sumar cero.
CLASS Trt;
MODEL Y= Trt;
CONTRAST “C1”
Trt 2 -1 -1;
CONTRAST “C2”
Trt 0 1 -1;
CONTRAST “C3”
Trt -1 0 1;
CLASS Trt;
MODEL Y=Trt;
CONTRAST “Trt Lineal”
Trt -3 -1 1 3;
CONTRAST “Trt Cuadratico”
Trt 1 -1 -1 1;
CONTRAST “Trt Cubico”
Trt -1 3 -3 1;
Lineal: -1 0 1
Cuadrática: 1 -2 1
3. Comparaciones múltiples
El código es el mismo para cualquier prueba de comparación. Por ejemplo, para
utilizar Duncan:
CLASS Trt;
MODEL Y=Trt;
MEANS Trt/DUNCAN;
Con submuestreo:
CLASS Bl Trt;
MODEL Y = Bl Trt Bl*Trt;
TEST H = Trt E = Bl*Trt;
MEANS Trt;
CLASS Bl Trt;
MODEL Y = Bl Trt BL*Trt;
MEANS Trt BL*Trt;
CLASS Bl Trt;
MODEL Y = Bl Trt;
LSMEANS Trt;
CLASS REP A B;
MODEL Y = REP A REP*A B A*B;
TEST H=A E = REP*A;
Esto ultimo para obtener un valor de F que pruebe Ho: α1 = α2 = …= αa
CLASS Rep A B;
MODEL Y = Rep A Rep*A B Rep*B A*B;
TEST H=A E = Rep*A;
TEST H=B E = Rep*B;
*
Se han hecho todos los esfuerzos porque la información y los códigos sean correctos. Sin
embargo, es posible que exista algún error de imprenta o que las versiones de SAS®
cambien en sus requerimientos de codificación, por lo que no nos hacemos responsables de
que todos y cada uno de los códigos funcionen.
Trat. Rep. IAF ALTP ALTM NoH RTFF RTFS RFSH RFST RFSM RH:T RH:M RT:M
No No i cm cm No kg/ha kg/ha kg/ha kg/ha kg/ha r r r
1 1 3.97 249 127 14 53125 13252 2916 4990 4906 58 59 102
1 2 4.84 252 129 14 54167 15553 3083 5928 5535 52 56 107
1 3 6.13 254 132 13 56250 15251 3273 5764 5598 57 58 103
1 4 5.11 249 121 13 51042 12728 2784 4600 4000 61 70 115
2 1 3.7 266 143 14 55208 14441 2462 6750 6380 36 39 106
2 2 5.05 258 129 14 47917 10885 3272 7646 6812 43 48 112
etc. etc. etc.
7 2 4.13 247 164 13 58333 15725 2826 6438 4760 44 59 135
7 3 3.61 258 164 14 54167 13324 2908 6802 5119 43 57 133
7 4 5.48 250 151 13 58333 15370 2440 6384 4126 38 59 155
Allison, P. D. 1995. Survival analysis using SAS®. A practical guide. Cary, NC: SAS
Institute Inc.
Delwiche, L. D. and Slaughter, S. J. 2000. The little SAS book: A primer. 2nd Ed. Cary,
NC: SAS Institute Inc.
Freund, R. and Littell, R. C. 2000. SAS System for regression. 3rd Ed. New York,
Chichester, Brisbane, Toronto, Singapore. Wiley Series in Probability and
Statistics.
Khattree, R. and Naik, D. N. 1999. Applied multivariate statistics with SAS software.
2nd Ed. Cary, NC: SAS Institute Inc.
Littell, R., Milliken, G. A., Stroup, W. W. and Wolfinger, R. D. 2006. SAS for mixed
models. 2nd Ed. Cary, NC: SAS Institute Inc.
Littell, R., Stroup, W. W. and Freund, R. 2002. SAS for linear models. Cary, NC: SAS
Institute Inc.
Stokes, M. E., Davis, C. S. and Koch, G. E. 2001. Categorical data analysis using the
SAS system. Cary, NC: SAS Institute Inc.
El material que se presenta ha sido recopilado en gran parte del sitio de internet del
Insituto SAS: www.sas.com, de la página (ya no disponible) del Dr. Oliver
Schabenberger* y de varios libros, entre los que destaca: The Little SAS Book, 2ª
edición, por Lora D. Delwiche y Susan J. Slaughter, y en el uso y práctica del
programa SAS.
*
Actualmente el Dr. Schabenberger labora en el desarrollo y mejora de programas de
SAS/STAT en el Instituto SAS, en Carolina del Norte.
COORDINADOR DE PRODUCCIÓN
Vicente E. Vega Murillo
EDICIÓN
Valentín A. Esqueda Esquivel
FORMACIÓN
Claudia Perdomo Montes
REVISIÓN TÉCNICA
Isaac Meneses Márquez
Rubén Loeza Limón
Bertha L. Rueda Maldonado
Ángel Ríos Utrera
Alfonso Ávila Durán
Julio C. Vinay Vadillo