Formación

Macros SAS. Asignar permisos en Unix

Hoy os presento una macro especialmente útil para aquellos que trabajéis en con SAS en arquitecturas Unix. En ocasiones generamos tablas SAS que han de ser modificadas por otros usuarios y éstos no disponen de los permisos adecuados para modificarlas. La siguiente macro los que hace es un «change mode», un chmod que modifica los permisos de las tablas SAS de una librería. Por defecto la macro hace un chmod file 777 que significa que owner, group y others tienen permiso de lectura, escritura y ejecución. Si pusieramos chmod 766 significaría que el owner tiene permiso de lectura, escritura y ejecución, y el group y others permiso de lectura y escritura. Chmod 744 significaría que el owner tiene permisos de lectura, escritura y ejecución, y group y others unicamente permisos de lectura.

Manual. Curso introducción de R. Capítulo 13: Análisis de la varianza. Diseños anidados

Continuamos con ejemplos de análisis de la varianza con R. En este caso trabajaremos con diseño de experimentos anidados. Definimos un factor B está anidado a un factor A si para nivel de B tenemos un único nivel de A asociado, es decir, A dos niveles, B tres niveles; A1 (B1,B2,B3) ; A2(B1,B2,B3). En este caso se dice que el nivel B está anidado a A. El modelo matemático viene expresado como:

Macros SAS. Primer y último día del mes de una fecha SAS

Me debo a vosotros, mis lectores. Y he tenido visitas que buscaban como obtener el primer y el último día de un mes con SAS. Como Análisis y Decisión es una web personalizada voy a dar respuesta a esas búsquedas. Para ello tengo os planteo dos macros de SAS, además nos servirán para entender mejor la función INTNX para operar con fechas. El siguiente ejemplo parte de la necesidad de obtener, dada una fecha, el primer y último día del mes de la fecha dada:

Transformar variables en SAS. Carácter a numérico

Muchas visitas a este sitio son búsquedas de Google que plantean la problemática que surge al transformar variables caracter a numéricas y viceversa con SAS. Las palabras habituales son «transformar texto a número SAS», «como paso de variable string a numerica en sas», «pasar de caracter a fecha en SAS», «sas transformar fecha numerica en texto», son todas búsquedas que han generado mucho tiempo de estancia en el sitio a pesar de que no existe un mensaje específico. En el siguiente monográfico vamos a tratar estas conversiones. De esta forma se crearán una serie de dos post que pueden ser un interesante material de consulta para profesionales y estudiantes que trabajen con SAS.

Macros SAS. Hacer 0 los valores missing de un dataset

La siguiente macro de SAS nos permite transformar los valores perdidos (missing) en valor 0 para todas las variables de un dataset. Para todas, para todas las numéricas. Esto es muy importante porque en ocasiones es necesario distinguir el valor 0 del valor missing(.). Pero puede ser muy práctica si vamos a emplear procedimientos que han de distinguir valores perdidos o, simplemente, si deseamos que nuestra tabla tenga otro aspecto.

Truco Excel. Nuestra propia función redondear en Excel

Hay operaciones que pueden ser muy habituales de hacer con Excel y necesitaríamos una función propia que la realizara. A continuación vamos a plantear una situación en la que es especialmente útil crear una función específica y guardarla en el libro de macros personal para utilizarla en nuestras sesiones SAS. En este caso concreto vamos a crear una función que nos redondeé un número a 0 o 0.5, es decir, 6,3 valdría 6 y 6,7 valdría 6,5. Para realizarlo sin una función específica emplaríamos múltiples funciones de Excel, por ejemplo:

Macros SAS. Transformar un numérico a fecha

A continuación vamos a plantear una macro de SAS bastante sencilla que nos permitirá transformar valores numéricos del tipo 20080607, fechas en formato AAAAMMDD pero que son numéricas, a valores fecha en SAS que nos permitirán realizar operaciones. Siguiendo el sistema de todos los mensajes de AyD trabajaremos con ejemplos para estudiar su utilidad.

Partimos de dos fechas en formato AAAAMMDD y desamos realizar una diferencia entre ellas:

data _null_;

 y=20070101;

 m=20080110;

 dif=m-y; put dif;

run;

En el log obtenemos que la diferencia entre estas 2 fechas es 10009, necesitamos transformarlas en variables numéricas pero del tipo fecha. Tenemos múltiples posibilidades para realizar esta transformación, pero en este caso voy a emplear la función de creación de fecha en SAS MDY(mes,día,año). Para conseguir del valor AAAAMMDD el mes, el día y el año emplearemos las funciónes MOD para calcular el módulo e INT para obtener la parte entera de una operación:

Trabajo con fechas SAS. Formatos de fecha SAS más utilizados

En esta nueva entrega del monografico de fechas SAS vamos a estudiar algunos formatos. Un formato es la forma en la que vemos una variable. 17327 es un valor sin significado, pero el 20 de junio de 2007 es una fecha. En la anterior entrega estudiamos como SAS guardaba las fechas como variables numéricas, como el número de días transcurridos desde el 1 de enero de 1960. Las fechas/horas se guardaban como el número de segundos transcurridos. Con los distintos formatos fecha/hora nosotros podremos visualizar estas variables numéricas de SAS. Por ejemplo:

Manual. Curso introducción de R. Capítulo 12: Análisis de la varianza. Diseños bifactoriales

En esta nueva entrega del manual de R vamos a ver un modelo ANOVA que analiza dos fuentes de variación. Si recordamos en el capítulo 11 estudiamos la diferencia entre los tratamientos que seguían determinados pacientes teníamos una variable respuesta en función de una variable factor, el diseño factorial aleatorizado. En este caso vamos a tener la variable respuesta en función de dos factores y podrá existir una interacción entre ambos. Con lo que la tabla ANOVA será del siguiente modo:

Manual. Curso introducción de R. Capítulo 11: Introducción al análisis de la varianza (ANOVA)

Para realizar la introducción al análisis de la varianza (ANOVA) con R comenzaremos estableciendo unos conceptos básicos. Lo primero que hacemos es plantear una hipótesis que va a motivar un experimento, elegimos el diseño para nuestro experimento y recogemos los datos y los analizamos mediante el análisis de la varianza que consiste en descomponer la variabilidad total de los datos en sumandos cada uno de ellos asignable a una fuente de variación; posteriormente ya sacamos conclusiones. Lo que se expone a continuación viene recogido en los libros:

Manual. Curso introducción de R. Capítulo 10: Funciones gráficas en regresión lineal

En esta nueva entrega del manual de R vamos a trabajar con más ejemplos de regresión lineal haciendo especial mención a las posibilidades gráficas de R. El ejemplo de partida será el mismo empleado en el capítulo 9.

Ejemplo 10.1:

Si recordamos en el capítulo 9 en el ejemplo 9.2 hicimos un modelo para predecir las notas finales a partir de las notas de los exámenes previos, el test y la puntuación del laboratorio. Teníamos una variable dependiente que era la nota final y cuatro variables regresoras. Vimos que el modelo presentaba múltiples lagunas (multicolinealidad, un modelo con un r cuadrado bajo,…). Pues ahora hemos de mejorar el modelo. Es difícil mejorarlo en precisión porque no tenemos más variables regresoras en el conjunto de datos por eso podemos mejorarlo haciéndolo más sencillo y recogiendo una cantidad de información lo más grande posible con un modelo lo más reducido posible, es decir, vamos a seleccionar un modelo de regresión. Para hacer esto contamos con la función step que selecciona el modelo a partir del criterio de información de Akaike (AIC, siglas en inglés). Creamos un estadístico que permite decidir el orden de un modelo. AIC toma en consideración tanto la medida en que el modelo se ajusta a las series observadas como el número de parámetros utilizados en el ajuste. Búscamos el modelo que describa adecuadamente las series y tenga el mínimo AIC. Comencemos a trabajar con R, el primer paso será obtener y preparar el conjunto de datos:

Como influyen los números máquina en nuestros programas

Es imposible no cometer un error a la hora de ajustar un número de máquina ya que todos los números tienen un espacio asignado y números con infinitos decimales no se pueden almacenar en memoria correctamente. Este «pequeño» error puede influir en nuestra programación. Vamos a crear una función en R que nos permita ejemplificar como pueden influir los errores de aproximación de los números de máquina en la programación. La siguiente función realiza la operación aritmética 1.1/11, 3.3/33,… y, mediante la función IFELSE creamos una condición:

Trucos SAS. Operar con fechas YYYYMM típicas de particiones Oracle

Este truco va orientado a programadores SAS que estén habituados a trabajar con Oracle. El SAS Tip de hoy nos permite parametrizar a la perfección la lectura de tablas históricas particionadas. En estos casos podemos crear parámetros con macrovariables de SAS para leer las tablas Oracle sin necesidad de modificar manualmente las fechas de partición. Un ejemplo:

1. sin parametrizar:

proc sql;

 create table maximo as select

 idcliente,

 max(importe) as importe_semestral

 from ora.tabla

 where f_particion in (200801,200806,200812);

quit;

2. parametrizado: