Los pilares de mi simulación de la extensión del COVID19

No debería publicar esta simulación de la extensión del COVID19 o coronavirus porque puede disparar alarmas, provocar insultos, levantar ampollas… el caso es que yo llevo 7 días de aislamiento más que el resto de España porque sólo había que ver los datos de Italia para saber lo que iba a pasar y no avise a nadie para no disparar alarmas, provocar insultos, levantar ampollas… Y AL FINAL YO TENÍA RAZÓN. Así que os voy a exponer el motivo por el cual estoy muy asustado, bueno, hoy quiero mostraros el inicio de una simulación mala y sin fundamento que estoy realizando sobre la extensión en España del COVID19. Para hacerla vamos a emplear la siguiente información: ...

23 de marzo de 2020 · rvaquerizo

Gráficos de calendarios con series temporales

Cuando se realizan gráficos de series temporales se emplean gráficos de líneas donde el eje X contiene la fecha y el eje Y contiene el valor a representar. Hoy quiero traer al blog otra forma de representar series temporales, los gráficos de calendario y su realización con R. Para ilustrar el ejemplo vamos a emplear las cotizaciones históricas del índice bursátil IBEX35: require(quantmod) require(ggplot2) require(reshape2) require(dplyr) library(lubridate) # Obtenemos las cotizaciones del IBEX 35 desde 2010 getSymbols('^IBEX', from = '2010-01-01') # data frame de trabajo df<-data.frame(date=index(IBEX),IBEX) Mediante quantmod extraemos las cotizaciones del IBEX y creamos un data frame de trabajo que llamamos df. Vamos a realizar dos tipos de gráficos, un mapa de calor por años, meses, semanas y días y un calendario de un año puntual. ...

11 de enero de 2020 · rvaquerizo

Me rindo, es necesario trabajar en Agile

Agile sounds good y representa todo eso que critico. Tenía compuesta y preparada una canción que versiona el Me cago en el amor de Tonino Carotone, Me cago en el Agile se llamaba. ¿Por qué este cambio de opinión tan radical? Porque no se trabaja de forma horizontal, se trabaja de forma vertical y cada uno hace la guerra por su cuenta. Me voy a mi terreno**Agile Analytics** ...

23 de diciembre de 2019 · rvaquerizo

Inteligencia Arficial frente a un juego de niños. La partícula tonta de Nicolás

Pablo Picasso decía que en aprender a pintar como los pintores del renacimiento tardó unos años pero pintar como los niños le llevó toda la vida y en ocasiones creo que hacemos las cosas difíciles porque nos creemos que hacemos cosas difíciles y entonces llega un niño de nueve años y dice “Papá un punto que primero vaya a la izquierda y luego a la derecha no es tan difícil”. Os pongo en antecedentes, el pasado 7 de mayo fui al AWS Summit de Madrid porque Sergio Caballero iba a contar uno de los casos de uso. Los de AWS no se deben ni imaginar de las maravillas que ha hecho Sergio en el Ayuntamiento de Alcobendas porque sólo dejaron que hablara 10 minutos, muy torpes ellos, su trabajo es mejor escaparate que el planteado por Mai-Lan Tomsen, un error en el planteamiento de la jornada. El caso es que había una competición de vehículos que circulaban por un circuito guiados por complicados algoritmos de inteligencia artificial. Vimos algún bucanero serio de alguno de los participantes, ya sabemos reinforcement learning, pero reinforcement reinforcement. Otros participantes más o menos honrosos, en fin, distraído. Viendo la competición me entraron ganas de participar y al llegar a casa me siento a preparar un algoritmo que recorriera el circuito del Jarama de Madrid, no un circuito cualquiera un circuito donde yo he visto ganar carreras a Jorge Martínez Aspar. ...

16 de julio de 2019 · rvaquerizo

Longitud de las frases del `Quijote` con `rstats`

Siempre he querido hacer cosas con rstats y el Quijote y ayer se me ocurrió medir la longitud de las frases del Quijote y crear un histograma que describa esta longitud. Aunque confieso que no me lo he leído, me he quedado en el capítulo 7 u 8 (no recuerdo) el caso es que me pareció hipnótico con sus ritmos, es musical. Además tengo muchas ganas de meter mano al proyecto Gutemberg porque esos ritmos, esa musicalidad, el uso de palabras esdrújulas,… me llama la atención. Bueno, al lío, todo el código está subido al repositorio por si lo queréis, pero hay algunas funciones y algunas ideas que me parecen interesantes. ...

27 de febrero de 2019 · rvaquerizo

De estadístico a minero de datos a científico de datos…

Hace unos meses estuve en un data beers que organizó Accenture que mas parecía una reunión de viejas glorias de Neo Metrics y hablé sobre la transformación de un dinosaurio a un científico de datos, por cierto, me llamó la atención como el resto de compañeros hicieron sus presentaciones con software del siglo pasado y eso que yo era el dinosaurio… Hoy ha salido una noticia sobre el uso de la información de Facebook para tarificar en seguros que define hacía donde quiero ir y los problemas con los que he de lidiar. Así que hoy voy a escribir sobre mi y la transformación del dinosaurio al científico de datos. ...

3 de noviembre de 2016 · rvaquerizo

Regresión ridge o regresión contraída con R

Por lo visto no he estudiado lo suficiente. Tengo que redimirme y estudiar este verano determinadas técnicas avanzadas de predicción. Fundamentalmente tengo que trabajar con R y tener determinados conocimientos teóricos sobre estas técnicas. Así que he pensado que, a la vez que estudio yo, estudian todos mis lectores. Además es probable que genere debate. En esta primera entrega vamos a tratar la regresión contraída o regresión ridge. En el blog ya hablamos del problema que suponía la multicolinealidad cuando tenemos este problema una de las posibles soluciones es la regresión contraída o regresión ridge. Como ya dijimos el modelo lineal se expresa como $Y = X \cdot \beta + \text{Error}$ la estimación de nuestros parámetros $\beta$ por mínimos cuadrados ordinarios es $\beta = \text{inv}(X’X) \cdot X’Y$ cuando $(X’X)$ no es invertible tenemos un problema. La regresión ridge plantea una solución a este problema con unos parámetros $\beta_{\text{contraidos}} = \text{inv}(X’X + \lambda I) \cdot X’Y$ si $\lambda$ es 0 estamos ante mínimos cuadrados ordinarios, en otro caso estamos ante un estimador sesgado de $\beta$. Este estimador sesgado es solución al problema de mínimos cuadrados penalizados y lo que hace es contraer los $\beta$ en torno a 0. En resumen, metemos sesgo pero reducimos varianza. ...

9 de julio de 2014 · 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

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