Académique Documents
Professionnel Documents
Culture Documents
LICENCIATURA EN ESTADÍSTICA
INTRODUCCIÓN A SAS
1
INTRODUCCION A SAS
I. ¿Qué es SAS?
- lectura de datos
- transformaciones
- manipulación de datos
- edición y almacenamiento de la información
- elaboración de informes
- construcción de gráficos
- descripción estadística
- análisis estadístico
2
En esta vista, puede encontrarse una primera línea presentando opciones de menú:
3
El cambio de ventanas puede hacerse mediante el menú Windows ( )
En SAS se puede trabajar a través del menú o con un lenguaje de comandos que
permite elaborar programas para la ejecución de las tareas. Si bien el trabajo por
medio del menú no requiere conocimientos de programación de SAS, lo que resulta
una simplificación importante para los usuarios, las posibilidades son limitadas, por lo
que consideramos adecuado para los objetivos de la materia, desarrollar los elementos
esenciales de la programación por medio del lenguaje de comandos. Entonces, solo
excepcionalmente se hará referencia a las tareas posibles de realizar con el uso del
menú. En los próximos párrafos se expondrá el uso básico de SAS por medio de
lenguaje de comandos para la realización de tareas de lectura y depuración de datos y
tratamiento de los mismos para la obtención de los resultados deseados.
Para que los datos puedan ser tratados por SAS deben estar almacenados en lo que se
conoce como un “sas data set” (conjunto de datos SAS). Un conjunto de datos SAS
contendrá los datos organizados en una tabla rectangular donde las observaciones
corresponden a las filas y las variables a las columnas. Además, contendrá información
sobre las variables que se han registrado.
- Numéricas.
- Fecha.
4
- ingresando los datos en forma interactiva
Se presentan aquí, los comandos necesarios para la “carga” de los datos en las dos
primeras formas, ya que la tercera se llevará a cabo empleando opciones de menú.
Ejemplo 1:
Los siguientes datos corresponden a puntajes asignados por jueces a diferentes vinos,
los que correspondes a tres regiones:
5
1.0 6.8 5.0 6.0 14.9 C
0.8 5.0 5.7 5.5 13.5 A
0.8 3.5 4.7 4.2 12.2 A
DATA VINOS;
INPUT claridad aroma cuerpo sabor calidad region $;
CARDS;
“lista de valores”
;
RUN;
Para que los comandos sean ejecutados, se deberá escribir en el cuadro de diálogo de
la parte superior izquierda, SUBMIT, como se ilustra a continuación:
DATA VINOS;
INFILE “c:\rdtpi\vinos.dat”;
INPUT claridad aroma cuerpo sabor calidad region $;
RUN;
Cabe mencionar aquí, que en la lectura de los datos en la ventana Editor, o desde un
archivo ASCII con la sentencia INPUT, basta con que los diferentes valores de la
variable se encuentren separados por espacios en blanco. Ocurre a veces, que los
datos no están dispuestos de esa manera, por ejemplo categorías de una variable
cualitativa que se codifican con cadenas de caracteres que contienen espacios en
blanco intermedios, dando así lugar a confusión. También, podrían los datos de un
mismo registro, estar dispuestos sin separaciones. En esos casos, puede, en la
6
sentencia INPUT, especificarse las posiciones que en cada registro del archivo, ocupan
las variables. Para el caso de los datos que se están considerando, estás
especificaciones se escribirían como sigue:
INPUT claridad 1-3 aroma 4-10 cuerpo 11-17 sabor 18-24 calidad 25-32 region 33-37
$;
7
Ejemplos de programas en SAS:
data vinos;
input claridad aroma cuerpo sabor calidad region $;
cards;
data vinos2;
infile "\\Mathserver\RecDat\SAS datos\vinos.dat";
data vinos3;
infile "C:\Documents and Settings\alumnos\Mis documentos\SAS\vinos.dat";
input claridad aroma cuerpo sabor calidad region $;
run;
8
c) CONSTRUCCION DE UN SAS DATA SET A PARTIR DE OTRA CLASE DE
FICHEROS
Si se quiere construir un conjunto de datos SAS con estos datos, puede procederse del
9
Eligiendo el formato adecuado se debe pulsar el botón accediendo a un
nuevo cuadro de diálogo que permitirá seleccionar la ubicación del archivo y su
nombre.
10
Presionando se habrá concluido la tarea de importación. Pero, como se
observa en el cuadro de diálogo, este proceso se realizó empleando el PROC IMPORT,
solo que facilitado aquí por el uso de opciones de menús. Las instrucciones utilizadas
podrán almacenarse en un archivo de texto para, por ejemplo, utilizarse en forma
rápida, en otra ocasión. Eso se consigue completando el cuadro vacío con el sendero y
nombre de archivo con el que se desea grabar el conjunto de instrucciones. En este
caso, el procedimiento completo es:
Librerías
Los archivos de SAS creados de la forma en la que hasta aquí se ha visto, se eliminan
al finalizar la sesión. De ser necesaria su utilización en otra sesión de SAS, deberán
crearse nuevamente. La forma de crear archivos SAS que queden almacenados de
manera permanente en algún dispositivo de memoria es por medio del uso de librerías,
lo cual se expone en los párrafos siguientes.
Los conjuntos de datos de SAS llevan un nombre compuesto por dos partes separadas
por el carácter “.”; esas partes son el nombre de la librería y el nombre del archivo. El
nombre de la librería referencia una carpeta de Windows en la que almacenará el
archivo SAS creado. Si se observa la lista de comandos que fue necesario ejecutar
11
para crear el conjunto de datos SAS que se llamó “mundo”, se puede ver en la primera
línea del programa el texto “WORK.mundo” haciendo referencia al conjunto de datos
que se crea y allí se encuentra el nombre compuesto que se mencionó. WORK indica
que el conjunto de datos se almacena en la carpeta WORK, cuya existencia puede
verificarse con el explorador de Windows, y el conjunto de datos llevará el nombre
“mundo”.
Por ejemplo:
luego, se creará el conjunto de datos por medio, por ejemplo, del párrafo DATA,
indicando el nombre del archivo por su nombre compuesto:
DATA datos.vinos;
Se menciona por último, que podrá definirse más de una librería, en una misma sesión
de SAS. Esto será necesario si las operaciones de lectura y grabación se realizarán
sobre diferentes carpetas y/o dispositivos.
12
libname datos “C:\Documents and Settings\alumnos\Mis documentos\SAS";
Sentencia FILENAME
Por ejemplo, si se desea crear el DATA VINOS, pero por algún motivo se desea asignar
un nombre al archivo externo del cual se leerán los datos, se podrían escribir los
siguientes comandos:
13
Para finalizar lo tratado en este apartado se reitera que las sentencias posibles de
utilizar cuando se define un conjunto de datos SAS son: DATA, INPUT, CARDS, RUN,
LIBNAME, INFILE, y FILENAME. La elección de las sentencias que se utilizarán
dependerá del origen de los datos a guardar y de la forma en la que se desee su
almacenamiento.
DATA: dará comienzo a la tarea y en ella se dará un nombre al data set que será
creado.
SET: se indicará el nombre de un SAS data set existente del cual se leerán los datos.
Ejemplo:
En el ejemplo de los vinos, se desea crear un data set que contenga las mismas
variables con una nueva que se obtiene multiplicando “calidad” por 2.
data vinosnu;
set datos.vinos;
ncal=calidad*2;
run;
14
Creación y transformación de variables
Ejemplo: ncal=calidad*2;
Operadores aritméticos:
+: suma
-: resta
*: multiplicación
/:división
**: exponenciación
Operadores de comparación
= igual
^= distinto
> mayor
>= mayor o igual
<= menor o igual
< menor
Operadores lógicos
Otros operadores
>< máximo
<> mínimo
|| concatenación
Funciones
variable=nombre de función(argumentos)
Ejemplos:
raizd=sqrt(diam);
Algunas funciones:
15
ABS(“escalar”) valor absoluto
IF expresión lógica;
Ejemplo
data bvinosra;
set datos.vinos;
if (calidad gt 12) and (region="A");
run;
Quedará un nuevo data set que contendrá los vinos de la región A con puntajes de
calidad mayores de 12. La sentencia if selecciona los registros del data set original que
cumplen con la condición especificada.
Ejemplo:
data mvinosrc;
set datos.vinos;
if calidad gt 14 or region ne "C" then delete;
run;
En este caso, el nuevo conjunto de datos incluirá a los vinos de la región C con
puntajes de calidad menores o iguales a 14. La sentencia if combinada con la
expresión then delete, elimina los registros del data set original que cumplen con la
expresión lógica especificada.
Las opciones DROP y KEEP, de la sentencia DATA, permitirán eliminar o incluir las
variables que no se desean o si, incluir en un nuevo conjunto de datos SAS.
16
Ejemplo:
Con estas sentencias se obtendrá un data set que contiene las variables claridad,
aroma y cuerpo’. El mismo resultado se puede obtener con:
Puede ser necesario en muchos casos combinar dos conjuntos de datos similares, por
ejemplo datos de una misma encuesta para distintas regiones, datos clínicos
correspondientes a dos centros médicos diferentes, datos de productos
manufacturados correspondientes a dos máquinas distintas, etc.. La sentencia SET
ayuda a combinar los dos conjuntos de variables.
Es importante notar que se necesita que los dos conjuntos cuenten con las mismas
variables, en caso contrario se podrán generar datos faltantes.
Ejemplo:
data vinos_extendido;
set datos.vinos vinosd;
run;
17
MERGE dataset1 dataset2;
BY variable_en_común;
Es necesario una sentencia BY donde se especifique una variable que esté presente en
ambos conjuntos de datos, en este caso llamada variable_en_común. Esta variable es
necesaria para que los registros de los dos data sets se combinen para cada valor
distinto de la mencionada variable en común.
Ejemplo:
data vinos_completo;
merge vinos vinos_color;
by nro;
run;
El data set vinos_color cuenta con una nueva variable color para cada vino evaluado.
La variable nro corresponde al número de observación.
Para que la sentencia MERGE sea exitosa, es necesario que los data sets estén
ordenados de acuerdo a la variable en la sentencia BY.
Ejemplo:
En este caso las observaciones son ordenadas a través de los valores de la variable nro
en forma ascendente. En la sección siguiente veremos en más detalle este
procedimiento.
Algunos de los primeros procedimientos que son necesarios manejar para tareas
básicas se presentan a continuación.
18
IV.1. SORT
Este procedimiento ordena las observaciones de un data set, de acuerdo a los valores
de las variables que se indiquen. El conjunto de datos ordenados se puede archivar en
el mismo data set (si no se indica otra cosa) o en uno nuevo que se especifique.
OUT= nombre_del_nuevo_dataset
Ejemplo:
IV.2. CONTENTS
Ejemplo:
IV.3. LABEL
Es una sentencia que se utilizará en diferentes procedimientos y servirá para
establecer rótulos para cada variable. Esto rótulos no deben superar los 40 caracteres.
La forma de esta sentencia es:
LABEL variable1=”rótulo”
variable2=”rótulo”
.....
Variable10=”rótulo”;
run;
19
Ejemplo:
data vinos_etiquetas;
set datos.vinos;
label claridad="Puntaje de la variable Claridad"
aroma="Puntaje de la variable Aroma"
cuerpo="Puntaje de la variable Cuerpo"
sabor="Puntaje de la variable Sabor"
calidad="Puntaje de la variable Calidad"
region="Región de procedencia del vino"
;
run;
IV.3. PRINT
Proporciona un listado de las observaciones con algunas variables.
Se puede utilizar la sentencia VAR para indicar la composición del listado en cuanto a
las variables. Esta sentencia se utilizará también en otros procedimientos en los que
sea necesario indicar con que variables se desea trabajar.
Ejemplo:
VAR _numeric_;
VAR _character_;
Opciones
LABEL: utiliza los rótulos de las variables como encabezado de las columnas. En caso
de no utilizar esta opción, los encabezados serán los nombres de las variables.
Ejemplo:
proc print data=vinos n double;
var _numeric_;
run;
20
IV.4. CHART
Ejemplo:
21
La opción TYPE permite indicar el tipo de cantidad que se desea representar, como en
el caso anterior. La opción noheading permite suprimir el encabezado en inglés que es
impreso por defecto en el gráfico.
IV.5. GCHART
Permite generar gráficos simples con mejor definición, más dirigidos a la presentación
de un análisis descriptivo. Para una visión más amplia y extensa de la construcción de
gráficos, consultar el material de la materia Métodos Estadísticos I de la licenciatura en
estadística.
Se pueden obtener gráficos similares a los de la opción CHART, que incluyen los
siguientes tipos: barras horizontales, barras verticales, de sectores y de bloques.
Las cantidades que se pueden representar son: frecuencias, frecuencias acumuladas,
porcentajes o frecuencias relativas, porcentajes acumulados o frecuencias relativas
acumuladas, totales y medias.
Ejemplo:
En una nueva ventana GRAPH (distinta de las 3 ventanas mencionadas: editor, log y
output) se visualizará un gráfico de barras verticales que muestra la frecuencia
absoluta para cada nivel de la variable región. Los gráficos de barras se hacen para
cada nivel de una variable cualitativa (categórica).
IV.6. PLOT
22
hacia el análisis más apropiado de la información ya que los gráficos resultan muy
rudimentarios.
La forma de la sentencia PROC es:
Ejemplo:
PLOT variable del eje vertical*variable del eje horizontal=variable que contiene los
identificadores de observaciones / opciones;
Ejemplo:
Se pueden hacer varios gráficos con la misma sentencia y las opciones que se
especifiquen serán aplicadas a todos ellos. Se podrán también utilizar varias sentencias
PLOT dentro de un mismo PROC PLOT.
También es posible generar diagramas de dispersión para cada nivel de una tercera
variable cualitativa, consultar los programas provistos por la cátedra. En este
procedimiento es también necesario agregar la sentencia quit para que el
procedimiento termine de ejecutarse.
IV.7. GPLOT
Permite generar gráficos simples con mejor definición, más dirigidos a la presentación
de un análisis descriptivo. Se pueden obtener gráficos similares a los de la opción
PLOT. Este procedimiento utiliza una ventana GRAPH que se abre cuando se generan
los gráficos. Para más detalles sobre este procedimiento se debe consultar los
programas provistos por la cátedra.
23
IV.8. Algunas sentencias útiles para la programación
a) OPTIONS
OPTIONS opciones;
Entre las opciones figuran por ejemplo nodate y pageno. La forma en que operan
algunas de estas opciones se muestra en el siguiente ejemplo:
En este caso, con nodate se suprime la fecha cada vez que se genere una salida y con
pageno=1 (page number: número de página) se enumera cada página de la salida a
partir del número 1. SAS por defecto continua enumerando las páginas
consecutivamente para cada nueva ejecución del programa.
b) dm
Permite controlar las impresiones en las ventanas Log y Output. La forma utilizada en
los programas vistos en la materia es:
dm "log;clear;out;clear";
Permite borrar los contenidos de las ventanas Log y Output dejando solo las salidas
correspondientes al último programa ejecutado. SAS por defecto acumula todas las
salidas en ambas ventanas de cada una de las veces que se ejecuta un programa.
IV.9. UNIVARIATE
Entre las opciones se puede especificar el conjunto de datos a leer, seleccionar las
estadísticas a calcular, etc.. Por ejemplo:
24
Por ejemplo, el código:
proc univariate data=vinos ;
var aroma;
histogram aroma / midpoints= 3 to 8 by 1;
run;
La opción space determina el espacio entre barras y debe ser igual a cero en el caso
del histograma. La opción type=pct indica que se graficarán las frecuencias relativas y
la opción midpoints especifica el menor y el mayor de los valores de los puntos medios
de los intervalos. La sentencia by especifica la amplitud de los intervalos (y al mismo
tiempo la distancia existente entre los puntos medios de los mismos).
La opción PLOT permite obtener gráficos de tallo y hoja y gráficos de caja (box-plot).
En el siguiente ejemplo se obtendrían los mencionados gráficos para la variable aroma.
IV.10. FREQ
Por ejemplo:
25
proc freq data=alumnos ;
title3 "Distribución de los alumnos según la vble. Sexo y
Distribución de la vble. Sexo por Grado";
tables sexo sexo*grado;
run;
Las opciones nocum, nopercent, norow y nocol eliminan algunas de los valores que
imprime el procedimiento. La opción list muestra la tabla como una lista y agrega las
frecuencias absolutas y relativas porcentuales, conjuntamente con las acumuladas.
Las salidas que se generan en la ventana Output de SAS pueden ser extraídas y
utilizadas por otros programas en el caso que fuesen requeridas, por ejemplo en la
realización de un informe que presente los resultados de un determinado análisis.
Otra alternativa es utilizar la sentencia ods que permite controlar la salida de los
programas. La sentencia debe ser citada indicando el tipo de extensión del archivo
donde se almacenarán los resultados junto con la ubicación y el nombre del mismo. Es
necesario además presentar una sentencia de cierre del procedimiento. Todas las
salidas que se generen entre la sentencia ods y la sentenca de cierre serán
almacenados en el archivo indicado. Por ejemplo:
26
En el ejemplo anterior se genera un archivo de salida con extensión rtf llamado alu3.rtf
en la carpeta SAS del disco D. En ese archivo se almacenarán las tablas generadas por
el procedimiento freq y con la sentencia: ods rtf close; se delimita las salidas a incluir
en el archivo. El archivo generado puede ser abierto a través del procesador de texto
Word.
Para utilizar los gráficos generados en la ventana GRAPH1, estos se pueden exportar
con extensión .jpg o .bmp y luego ser importados en Word.
VI. ANEXO
Entre las opciones se puede especificar el conjunto de datos a leer y seleccionar las
estadísticas a calcular. Por ejemplo:
27