Trucos SAS. Primer y último elemento de un array

Breve entrada sobre el uso de arrays en SAS. Dada una tabla SAS como esta con una variable mes1, mes2, … mesN:

arrays_sas.PNG

Necesitamos identificar el primer y el último elemento no nulo de un array y el número de elementos no nulos de ese array. Veamos el ejemplo:

data datos;

input id mes1 mes2 mes3 mes4 mes5 mes6;

datalines;

1 . . . . . .

2 162.18 88.41 919.62 891.25 837.73 163.14

3 . 790.52 160.03 . 60.31 343.30

4 . . 482.45 755.39 . .

5 265.17 963.53 . . 392.06 .

6 . 214.95 616.17 183.01 778.48 57.42

7 191.52 . 208.50 50.55 705.72 .

8 711.76 . . . 193.20 658.45

9 782.67 172.49 539.42 663.28 4.53 358.51

10 695.12 367.74 . 573.47 366.30 951.98

;

run;

Para este proceso creamos un array que recorreremos 2 veces, una hacia delante para identificar el primer elemento y otra a hacia atrás para identificar el último elemento:

Test de Levene con SAS

El Test de Levene se aplica para la igualdad de varianzas. Es un análisis de la varianza de las desviaciones de los valores muestrales respecto a una medida de tenedencia central. Parte de la hipótesis nula de igualdad de varianzas. Para realizar este test en SAS emplearemos el PROC GLM en combinación con la opción HOVtest. En la línea habitual vemos un ejemplo:

data datos;

 input presion @@;

 if _n_<=5 then grupo=1;

 else if _n_<=10 then grupo=2;

 else if _n_<=15 then grupo=3;

 else if _n_<=20 then grupo=4;

 else grupo=5;

cards;

180 172 163 158 147 173 158 170

146 152 175 167 158 160 143 182

160 162 171 155 181 175 170 155 160

;

run;

 Proc GLM Data=datos ;

  Class grupo;

  Model presion = grupo;

  Means grupo/HOVTest;

  ODS select HOVFTest;

 Quit;

Vemos que se trata de un código sencillo donde modelizamos con GLM la variable dependiente con la variable grupo y en MEANS indicamos con HOVtest que deseamos que se realice el test de Levene, con ODS seleccionamos sólo esa salida. Este código podemos parametrizarlo y crear una macro que nos permita replicar el código:

Sentencia del Tribunal de Justicia de la UE sobre el caso WPS y SAS

El caso de WPS y SAS por fin tiene un final. World Programing Software ha vencido (por fin) al todo poderoso SAS Institute Inc. La sentencia establece que:

De este modo, procede señalar que no puede haber infracción del derecho de autor sobre el programa de ordenador cuando, como sucede en el caso de autos, el adquirente legítimo de la licencia no ha tenido acceso al código fuente del programa de ordenador correspondiente a esa licencia, sino que se limitó a estudiar, observar y verificar ese programa con el fin de reproducir su funcionalidad en un segundo programa.

La distribución tweedie

tweedie.png

Reconozco que hace muy poco tiempo que trabajo con las distribuciones tweedie. Un viejo dinosaurio que trabaja sobre todo con SAS se hace el sordo cuando le hablan de la distribución tweedie. Quizá sea el trabajo con SAS el que me ha nublado. Pero ahora que empiezo a trabajar con otras herramientas… Para comprender mejor la base teórica para este tipo de distribuciones os enlazo a la wikipedia. Pero despierta mi interés debido a que se puede considerar una gamma con punto de masa en el 0 ¡toma aberración matemática! Aspecto interesante.

Trucos SAS. Errores y formatos

Un truco SAS que puede ayudar a todos aquellos que estén empezando a programar en SAS. Hay ocasiones que trabajamos con datasets que tienen formatos y nos encontramos con el error: « formato FMT no se ha encontrado o no se ha podido cargar». ¿Qué hacer? Lo primero es jugar con la opción FMTERR:

options nofmterr;

Esta opción de SAS nos permite trabajar con conjuntos de datos SAS con formatos aunque no estén cargados porque no se tienen en cuenta los errores. Por otro lado podemos emplear PROC DATASETS para eliminar todos los formatos (entrada y/o salida) de un conjunto de datos SAS, el código es el siguiente:

R cayendo en la lista TIOBE

No me ha gustado esta sorpresa en la lista TIOBE de abril de 2012 :

lista_tiobe_r.PNG

R cae por debajo del puesto 30 y se ve superado tanto por SAS como por MATLAB. ¿Será una tendencia? Hay que seguir esta evolución en los próximos meses.

Los recortes en educación, ¿implican peor calidad del sistema educativo?

Mucho se está hablando de los recortes en educación que va a llevar a cabo el Gobierno español. Es evidente que la educación en España no funciona muy bien. No lo digo yo, lo dice el informe PISA:

http://www.oecd.org/dataoecd/54/12/46643496.pdf

Pero España invierte un 4,6% del PIB en educación. Un % que a mi me parecía poco:

http://epp.eurostat.ec.europa.eu/statistics_explained/index.php/Educational_expenditure_statistics

¿Es poco? ¿Dónde se sitúa España? Manos a la obra: Excel, BuscarV, gráfico de dispersión y JWalk Chart Tools. Con estos ingredientes tenemos:

Trucos SAS. Pasar fecha a caracter en SAS

Pasar números a carácter en SAS es un tema reiterativo tanto en entradas al blog como en búsquedas. Pero que se le puede dar otra vuelta de tuerca. Se trata de transformar fechas a variables alfanuméricas, pero en este caso vamos a poner las fechas en formato español. Ejecutad este ejemplo en SAS:

data uno;

y = '30jan11'd;

c0 = put(y,ddmmyy10.);

c1 = upcase(put(y,ESPDFDD.));

c2 = upcase(put(y,ESPDFDE.));

c3 = upcase(put(y,ESPDFDN.));

c4 = upcase(put(y,ESPDFDT.));

c5 = upcase(put(y,ESPDFDWN.));

c6 = upcase(put(y,ESPDFMN.));

c7 = upcase(put(y,ESPDFMY.));

c8 = upcase(put(y,ESPDFWDX.));

c9 = upcase(put(y,ESPDFWKX.));

run;

Imagino que todos tenéis el NLS de SAS instalado y no tenéis problemas con estos formatos. Resumamos que nos ofrece cada una de estas transformaciones:

Trucos Excel. Mapa de México por Estados

mapa_excel_mexico1.png

Hoy os presento la versión inicial delmapa de México por Estados Federales para que le podáis usar en Excel, Powerpoint, Word o alguna de las herramientas habituales de ofimática. Se trata de un archivo Excel con macros que os podéis descargar en este enlace. La hoja Mapa contiene una serie de shapes que están nombrados para poder cambiar de color en función de una variable tramo. Este Excel inicial está preparado para poder pintar hasta 5 tramos, si deseáis más tramos tenéis que meteros en el código Excel que modifica el color de cada uno de los 32 shapes que componen el mapa, posteriormente lo repasamos de forma rápida. Por otro lado tenemos la división de los estados, el nombre de los shapes y los tramos que previamente habremos preparado. Este ejemplo no pinta nada concreto. La hoja Mapa además dispone de dos botones asociados a las dos macros que contiene el Excel. Por un lado tenemos una macro que nos deja los Estados en blanco y por otro tenemos la macro que nos pinta de cada color elegido el mapa.Un vistazo sobre estos elementos de la hoja Excel:

Data mining, Business intelligence (y/o la nube)

Hace tiempo que quería publicar una entrada en respuesta a estos comentarios escritos en el blog. Se trata de analizar las búsquedas en Google a través de Google Trends de los términos: Business Intelligence, Data Mining, Cloud Computing y NOSQL. El resultado es más que interesante:

busquedas_google.png

En rojo tenemos Data Mining, en azul tenemos Business Intelligence, en naranja Cloud Computing y en verde NOSQL. A la vista de este gráfico cabe preguntarse ¿es R en la nube el futuro de la profesión?

Sobremuestreo y pesos a las observaciones. Ahora con R

De nuevo volvemos a la entrada de ayer para replicar el código SAS utilizado en R. Se trata de realizar 3 modelos de regresión logística con R para estudiar como influyen en los parámetros el uso de un conjunto de datos con sobremuestreo o el uso de un conjunto de datos donde asignamos pesos a las observaciones. El programa es sencillo pero tiene un uso interesante de la librería de R sampling. Aquí tenéis el código:

En la regresión logística ¿el sobremuestreo es lo mismo que asignar pesos a las observaciones?

Hoy vamos a volver sobre el tema del sobremuestreo. Respondemos a un lector, Roberto, que hace mucho tiempo planteó una duda al respecto. La duda se puede resumir: En un modelo logístico, ¿equivale entrenar un modelo con las observaciones sobremuestreadas a entrenar el modelo poniendo un peso a cada observación? Esta cuestión nunca me la había planteado. Siempre había realizado un sobremuestreo de las observaciones adecuando la población de casos negativos a la población de casos positivos. Si estás habituado a trabajar con Enterprise Miner de SAS es habitual asignar pesos a las observaciones para realizar el proceso de sobremuestreo. ¿Obtendremos distintos resultados?