Cuidado con el p-valor. Depende del tamaño de la muestra

El otro martes, Teresa mi profesora de la Facultad de Estudios Estadísticos, dijo una frase que me dejó helado.“Ojo con el p-valor porque depende del tamaño muestral” Estábamos estudiando regresión logística y test de independencia. Ahora que uno mismo vuelve a estudiar que es lo que hay detrás de la salida de los programas estadísticos se plantea muchas dudas. Por definición el p-valor depende del tamaño muestral y es una medida que la tomamos como un axioma para todo: El p-valor nunca miente hasta que tenemos mucha exposición. Voy a utilizar un ejemplo que vi en clase con Teresa ligeramente retocado (no creo que se enfade, no creo ni que lea esto). Trabajo con SAS porque estoy más acostumbrado a la salida que ofrece. Se trata de realizar un test de independencia para una tabla 2x2. La H0 o hipótesis nula es que existe independencia entre el factor de nuestro estudio y la variable dependiente en nuestro caso H0 es no hay relación entre la utilización de un pesticida y la presencia de una enfermedad frente a H1 hay relación entre la utilización del pesticida y la presencia de la enfermedad. Simulamos los datos con SAS: ...

17 de diciembre de 2013 · rvaquerizo

El seguro de Salud suma y sigue

Si nos damos una vuelta por ICEA podremos sacar la tabla que tenemos arriba (espero que no se enfaden conmigo por sacarlo tal cual, no he cambiado ni los formatos). Vemos que a lo largo de 2012 el seguro directo en España está sufriendo, especialmente en Autos, casi todos los ramos registran pérdidas de prima a excepción de Hogar y Salud. El tema de Hogar lo trataremos en otra entrada con más cuidado, es un ramo que tiene mucho recorrido debido a que la penetración en España todavía es muy baja, además tendremos que escribir sobre revalorización de capitales, la famosa REVA. Hoy nos centraremos en la otra gran estrella de la tabla que nos ofrece ICEA, el Seguro de Salud. ...

18 de abril de 2013 · rvaquerizo

Analisis cluster con SAS. La importancia de las semillas en las k-medias

El PROC FASTCLUS en SAS nos permite realizar análisis de agrupamiento dirigido mediante el algoritmo de las k-medias. Este algoritmo tiene algunos problemas pero nos puede servir para agrupar de forma multivariante observaciones. Es rápido, sencillo de explicar y con algunas lagunas no funciona mal. Como aproximación a nuestras segmentaciones puede ser muy práctico. Hoy se va a utilizar para identificar a los clientes más complicados de segmentar, a aquellas observaciones que quedan en las zonas grises. (http://www.datanalytics.com/blog/2011/08/03/clustering-iii-sobresimplificacion/) Estas zonas grises en muchos casos son más importantes que la segmentación en sí. Si estamos con un problema de taxonomía (clasificar especies) puede ser menos importante, pero si clasificamos inversiones, clientes,… ¿qué pasa con aquellos que no sabemos ubicar? Escribimos segmentar en un buscador y tenemos esta imagen: ...

15 de abril de 2013 · rvaquerizo

¿Cuándo tenemos BIG DATA?

No es que sea yo un gurú del tema precisamente, pero considero que llevo más de 12 años haciendo Big Data, por ello a lo peor alguno toma en serio mis reflexiones. Entonces, ¿cuándo tenemos, hacemos, trabajamos Big Data? La respuesta parece sencilla, “cuando tenemos muchos datos”. Pues no, este es un nombre con mucha pegada (como me han dicho hoy en la comida) es un nombre acertado desde un punto de vista “marketiniano”. Pero muchos datos tiene el operacional de un banco y no creo que un entorno Mainframe haga Big Data. Big Data tenemos cuando accedemos a datos desestructurados. Ya la dimensionalidad pasa a un segundo plano y las tecnologías tradicionales/actuales y sus hechos, metadatas, cubos y demás dejan de tener sentido. Hay Big Data cuando no se prepara la información. Anteriormente el acceso a los datos necesitaba un periodo previo para adaptarlo a una estructura, ahora no, ahora accedemos (por ejemplo) a un sistema operacional sin necesidad de pasar por una capa previa. En realidad hacemos lo mismo, tabulamos, graficamos, modelamos pero sobre datos que no están preparados. Eso es Big Data. ...

3 de abril de 2013 · rvaquerizo

Trucos SAS. Medir la importancia de las variables en nuestro modelo de regresión logística

Hoy quería proponeros una forma poco ortodoxa de medir la importancia de las variables en un modelo de regresión logística con SAS. La cuestión es: dado un modelo de regresión logística crear un ranking con las variables más importantes dentro del modelo. Para esta tarea recomiendo el uso de random forest, pero puede ser imposible disponer de un software que realice este tipo de modelos. Imaginemos un caso concreto, disponemos de SAS STAT y nos da reparo trabajar con R. Para este caso podemos emplear el siguiente truco. El AIC (criterio de información de Akaike) es un estadístico que relaciona el cociente de la verosimilitud con el número de parámetros del modelo que ajustamos. Cuanto menor sea este cociente mejor será nuestro modelo. Si eliminamos una variable del modelo ¿cuánto empeora este modelo? Esa será la filosofía que emplearemos para analizar la importancia de las variables presentes en nuestro modelo. En la línea habitual hacemos un ejemplo para que podáis copiar y pegar en vuestro SAS: ...

27 de febrero de 2013 · rvaquerizo

Nos hemos terminado de reinventar. Acabamos con el Data Mining y empezamos con el Big Data

Google Trends y buscamos los términos Big Data y Data Mining y obtenemos la figura de arriba. Ya convergen las búsquedas. Muchos opinamos que estamos trabajando con Big Data desde hace muchos años sin embargo es ahora cuando este trabajo parece que se está dando a conocer. Y las escuelas de negocio son conscientes de ello. El sector de las tecnologías de la información tiene que estar continuamente renovándose. A lo largo de los años han habido mas revoluciones conceptuales que verdaderamente tecnológicas, sin embargo este nuevo concepto de Big Data si trae consigo una nueva visión de acceso a la información. ...

23 de febrero de 2013 · rvaquerizo

La macro iterlist para automatizar código SAS

Impresionante macro de SAS que nos puede ahorrar picar mucho mucho código SAS. La macro se llama iterlist y la he encontrado en este enlace. Es código SAS muy avanzado: %macro iterlist(code =,list =); %*** ASSIGN EACH ITEM IN THE LIST TO AN INDEXED MACRO VARIABLE &&ITEM&I ; %let i = 1; %do %while (%cmpres(%scan(&list., &i.)) ne ); %let item&i. = %cmpres(%scan(&list., &i.)); %let i = %eval((&i. + 1); %end; %*** STORE THE COUNT OF THE NUMBER OF ITEMS IN A MACRO VARIABLE: &CNTITEM; %let cntitem = %eval((&i. - 1); %*** EXPRESS CODE, REPLACING TOKENS WITH ELEMENTS OF THE LIST, IN SEQUENCE; %do i = 1 %to &cntitem.; %let codeprp = %qsysfunc(tranwrd(&code.,?,%nrstr(&&item&i..))); %unquote(&codeprp.) %end; %mend iterlist; El funcionamiento es muy complejo, destacaría el uso de `%qsysfunc`. El caso es que nos permite poner listas de código. Imaginemos que tenemos que hacer la siguiente tarea: ```sas data importes sasuser.importes; drop i j; array importe(10) ; do i=1 to 20000; do j=1 to 10; importe(j)=ranuni(8)*1000; end; grupo=ranpoi(4,5); output; end; run; proc summary data=importes nway; class grupo; output out = agr_grupo (drop=_type_ _freq_) mean(importe1)=media_importe1 mean(importe2)=media_importe2 ... mean(importe10)=media_importe10 sum(importe1)=suma_importe1 ... sum(importe10)=suma_importe10; quit; Necesitamos hacer un `proc summary` de 10 variables y de ellas vamos a calcular media y suma, tendremos que poner _sum_ y _mean_ por tantas variables como correspondan. Estamos repitiendo un código. Pues bien, esta macro nos permite repetir el código dada una lista, en este caso la lista se la pasamos como una macro: ```sas %let lista = importe1 importe2 importe3 importe4 importe5 importe6 importe7 importe8 importe9 importe10; proc summary data=importes nway; class grupo; output out = agr_grupo (drop=_type_ _freq_) %iterlist(list = &lista., code = %str( mean(?)=media_? )) %iterlist(list = &lista., code = %str( sum(?)=suma_? )); quit; Impresionante. Donde ponemos `?` la macro pone los elementos de la lista y en el parámetro code ponemos el código que se repite con `%str`. A este que escribe ahora mismo se le han caído los pantalones ante semejante genialidad. Impresionante.

17 de octubre de 2012 · rvaquerizo

Cuánto dinero pierdo jugando a la lotería. Una simulación poco seria con R

Esta pantalla es muy habitual en mi televisor todos los jueves por la noche. Son los resultados de la Lotería Nacional de España, el sorteo de los jueves. Mi mujer insiste en comprar lotería para dejar de ser pobres. No es una buena opción. Aunque por lo menos ahora compramos lotería nacional. Antes jugábamos a eso de la Bonoloto, las probabilidades de que te toque son menores que la cantidad de sustancias dopantes que le encontraron al gran Alberto Contador. Eso lo entendió, pero había que jugar. ¿Y cuánto nos cuesta jugar? ...

18 de septiembre de 2012 · rvaquerizo

Macro SAS. Variables de un dataset en una macro variable

Hoy os presento una macro de SAS que nos permite recoger en una macro variable las variables de un conjunto de datos SAS. Tiene como particularidad que nos sirve para seleccionar aquellas variables que tienen un determinado patrón, del tipo consumo2010, consumo2011,… Es un código un poco más complejo de lo habitual pero tiene aspectos interesantes: options mlogic mprint; %macro lista_variables (ds= , nombre_mv= , patron=); *ES NECESARIO QUE LA MACROV FINAL SEA GLOBAL; %global &nombre_mv.; *PUEDE SER QUE LA LIBRERIA SEA WORK O PERMANENTE; data _null_; length lib tab $255.; if index("&ds.",".")=0 then lib="WORK"; else lib=scan("&ds.",1,".") ; put lib=; call symput('libreria',lib); tab=scan("&ds.",2,".") ; call symput('tabla',tab); run; *BUSCAMOS EN DICTIONARY DE SAS; proc sql noprint; select compress(name) into:&nombre_mv. separated by " " from sashelp.vcolumn where libname=upcase("&libreria.") and memname=upcase("&tabla.") and /*PODEMOS APLICAR UN PATRON*/ upcase(name) like '%'||"%upcase(&patron.)"||'%'; quit; %mend; El elemento principal de esta macro es una consulta a una de las tablas DICTIONARY de SAS. O mejor dicho, a una de las vistas que tenemos en SASHELP. Siempre he prefererido consultar las vistas de SASHELP. La vista consultada es VCOLUMN de donde extraemos la columna NAME y como condicionantes pasamos la librería en LIBNAME y el nombre de la tabla de la que deseamos obtener las variables en MEMNAME. Como particularidad podemos aplicar patrones. ...

6 de septiembre 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 en base 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 sólo dos variables, 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