Formación

Un peligro del análisis cluster

Quería plantearos un ejemplo de análisis cluster para observar el peligro que tiene agrupar observaciones en base a grupos homogéneos creados con distancias multivariantes. Para ilustrar el ejemplo trabajamos con R, creamos grupos en base a 2 variables, esto 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.1separacion=(x+y)

grupo3.1 = subset(grupo3.1,separacion>=80&separacion <=140,select=-separacion)

grupo3.1 = subset(grupo3.1,y>0)

grupo3.1grupo = 3
#UNIMOS TODOS LOS GRUPOS

total=rbind(grupo1,grupo2,grupo3.1)

plot(totalx,totaly,col=c(1,2,3)[total$grupo])

Los grupos parecen claros:

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 esta es una situación que ya hemos vivido:

morosidad_el_pais.PNG

Fuente: http://economia.elpais.com/economia/2012/06/18/actualidad/1340008960_456853.html

Mi amigo David se pregunta “¿Qué paso 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:

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 como crear este gráfico:

prima_riesgo_junio_1_anio.png

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, si no 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 pólitica 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.

Curso básico de R

Meritoria iniciativa de:

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 como 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/

Trucos SAS. Particionar y exportar a texto un dataset

Duda que plantea David. Exporta a csv una tabla SAS en varias partes. Ya habrá tiempo para comentarlo:

*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.)); run;

La nueva web de @jjgibaja

Estaba preparando una entrada con el recopilatorio de los videos de Gibaja pero es mucho mejor lo que ha hecho su autor:

http://jjgibaja.net/

Una web donde se recopilan todos los videos que ha realizado. Son muy didácticos e incluso entretenidos. Gran trabajo.

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:

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:

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: