Macro (fácil) de SAS. Longitud de la parte decimal de un número

Muy sencillo; vemos el programa y posteriormente lo transformamos in una macro de SAS: data aleat; do i = 1 to 100; aleatorio = ranuni(8) * 1000; largo_decimal = length(scan(put(aleatorio, best32.), 2, ".")); output; end; run; Sencillo: pasamos de número a carácter con PUT y buscamos el punto con SCAN, extraemos la segunda parte del carácter separado por punto y vemos su longitud con LENGTH. Esto pasado a una macro: %macro largo_decimal(num); length(scan(put(&num., best32.), 2, ".")) %mend; data aleat; do i = 1 to 100; aleatorio = ranuni(8) * 1000; largo_decimal = %largo_decimal(aleatorio); output; end; run; Sencillo; a mí hoy me ha sido útil. Saludos.

23 de agosto de 2012 · rvaquerizo

Trucos Excel. Gráficos dot plot, representando un ranking gráficamente

Los gráficos de puntos (dot plots) son muy prácticos para representar de una forma visual rankings (por ejemplo). En Excel, su realización no es inmediata como con otras herramientas (R, por ejemplo). Para ilustrar el ejemplo, se van a presentar los 20 primeros puestos de la lista TIOBE de mayo de 2012 (la entrada estaba en la nevera). Entramos en la lista y, sin más, copiamos y pegamos los datos de tabla HTML a tabla Excel: ...

6 de agosto de 2012 · rvaquerizo

Solventamos los peligros del análisis cluster con SVM

Retomamos un asunto tratado en días anteriores: los peligros de realizar un análisis de agrupamiento basado en las distancias entre observaciones. ¿Cómo podemos evitar este problema? Empleando máquinas de vectores de soporte, traducción de Support Vector Machines (SVM). Esta técnica de clasificación, de la que ya hablamos en otra entrada, nos permite separar observaciones con base en la creación de hiperplanos que las separan. Una función kernel será la que nos permita crear estos hiperplanos; en el caso que nos ocupa, tenemos solo dos variables y necesitamos crear líneas de separación entre observaciones. En la red tenéis una gran cantidad de artículos sobre estas técnicas. ...

1 de agosto de 2012 · rvaquerizo

Un peligro del análisis cluster

Quería plantearos un ejemplo de análisis cluster para observar el peligro que tiene agrupar observaciones in base a grupos homogéneos creados con distancias multivariantes. Para ilustrar el ejemplo, trabajamos con R; creamos grupos in base a dos variables, lo que nos facilita los análisis gráficos. Simulamos el conjunto de datos con el que trabajamos: # GRUPO 1 x <- runif(500, 70, 90) y <- runif(500, 70, 90) grupo1 <- data.frame(cbind(x, y)) grupo1$grupo <- 1 # GRUPO 2 x <- runif(1000, 10, 40) y <- runif(1000, 10, 40) grupo2 <- data.frame(cbind(x, y)) grupo2$grupo <- 2 # GRUPO 3 x <- runif(3000, 0, 100) y <- runif(3000, 0, 100) grupo3.1 <- data.frame(cbind(x, y)) grupo3.1$separacion <- (x + y) grupo3.1 <- subset(grupo3.1, separacion >= 80 & separacion <= 140, select = -separacion) grupo3.1 <- subset(grupo3.1, y > 0) grupo3.1$grupo <- 3 # UNIMOS TODOS LOS GRUPOS total <- rbind(grupo1, grupo2, grupo3.1) plot(total$x, total$y, col = c(1, 2, 3)[total$grupo]) Los grupos parecen claros: ...

16 de julio de 2012 · rvaquerizo

Lecciones de economía de un ignorante: Solución: ¡TRABAJAR MÁS Y COBRAR MENOS!

Mi buen amigo David lleva varios días realizando un interesante análisis de la situación económica actual. Hoy quiero concentrar en pocas líneas este análisis. La hecatombe bancaria se produce debido al incremento de la morosidad; sin embargo, ésta es una situación que ya hemos vivido: Fuente: Morosidad - El País David se pregunta: “¿Qué pasó para que a partir del 93 un indicador de situaciones de crisis como la morosidad bajara de forma tan espectacular como subió?”. La respuesta en: ...

28 de junio de 2012 · rvaquerizo

Lecciones de economía de un ignorante. España está salvando a Alemania, pero Alemania no está salvando Europa

Observemos cuánto le cuesta financiarse a España y cuánto le cuesta financiarse a Alemania en el último año. Ya hablamos de cómo crear este gráfico: El plan le ha salido a Alemania. Se financia a un $1,5%$, mientras que España se financia al $7%$. Así funciona Europa. Algo falla. Algo huele mal. No es Europa quien ha salido al rescate de España, sino que parece que es España la que está amortiguando la crisis de deuda pública. ¿El motivo? Está menos expuesta, no necesita emitir tanta deuda para financiarse como Alemania. Pero el problema de todo esto es que a Alemania se le ha ido de las manos y está mirando al otro lado. ¿Y cómo se frena esto? Desde la intervención política sobre eso que denominan MERCADOS. Por una vez pienso que este problema no lo solucionan los tecnócratas; esto se soluciona impidiendo que un inversor pueda hundir un país. Lo que pasa es que no se atreven, y eso es lo que se me escapa.

17 de junio de 2012 · rvaquerizo

Curso básico de R

Meritoria iniciativa de: jjgibaja.net datanalytics.com/blog O, lo que es lo mismo, Juan José Gibaja y Carlos J. Gil Bellosta. Me hago eco de la noticia un poco tarde. Es curioso cómo hay personas que comparten de forma altruista su conocimiento; aunque me creáis exagerado, es el camino para que todos seamos un poco mejores: el conocimiento no el derecho. Ya escribiré sobre el tema si tengo tiempo. Acceded al curso aquí —> http://cursorbasico.usar.org.es/ ...

5 de junio de 2012 · rvaquerizo

Trucos SAS. Particionar y exportar a texto un dataset

Duda que plantea David: exportar a .csv una tabla SAS en varias partes. Aquí el código necesario: * TABLA SAS DE EJEMPLO; data total; do i = 1 to 10000; importe = ranuni(8) * 100; output; end; run; /* MACRO QUE RECORRE LA TABLA, PARTE Y EXPORTA CADA PARTE. NECESITA EL CONJUNTO DE DATOS Y EL TAMAÑO DE CADA PARTE */ %macro parte(ds, tamanio); %do i = 1 %to 10000 %by &tamanio.; data parte; set &ds. (firstobs = &i. obs = %eval(&i. + &tamanio. - 1)); run; proc export data=work.parte outfile="C:\TEMP\parte&i..csv" dbms=csv replace; run; proc delete data=parte; run; %end; %mend; %parte(total, 1000); Ya habrá tiempo para comentarlo. Saludos.

5 de junio de 2012 · rvaquerizo

La nueva web de jjgibaja

Estaba preparando una entrada con el recopilatorio de los vídeos de Gibaja, pero es mucho mejor lo que ha hecho su autor: http://jjgibaja.net/ Una web donde se recopilan todos los vídeos que ha realizado. Son muy didácticos e incluso entretenidos. Gran trabajo.

27 de mayo de 2012 · rvaquerizo

Trucos SAS. Primer y último elemento de un array

Breve entrada sobre el uso de array en SAS. Dada una tabla SAS como ésta con una variable mes1, mes2… mesN: 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 dos veces: una hacia adelante para identificar el primer elemento y otra hacia atrás para identificar el último elemento: ...

21 de mayo de 2012 · rvaquerizo