The Elements of Statistical Craftsmanship

En How Statistics lifts the fog of war in Syria se describe una solución al problema de estimar el número de víctimas en cierto lance de la guerra de Siria. Lo complicado del problema es que existen diversos recuentos independientes y las víctimas pueden aparecer en todos, alguno o ninguno. Me llama la atención que el método utilizado sea el de los bosques aleatorios (en particular, el randomForest de R). No sabría cómo utilizarlo para resolver este problema. Tampoco he tenido tiempo para entrar en los detalles. ...

3 de abril de 2014 · Carlos J. Gil Bellosta

Varimax: lo que se gana, lo que se pierde

Hoy hablaremos de exploratory factorial analysis y en particular aprovecharé para dejar constancia de que dejo resuelta una duda que siempre me ha dado pereza resolver: qué se pierde —lo que se gana ya nos lo han contado por doquier— al realizar una rotación varimax. Comencemos. Primero, voy a realizar un análisis factorial (exploratorio) basándome en ?varimax: fa <- factanal( ~., 2, data = swiss, rotation = "none") fa # Call: # factanal(x = ~., factors = 2, data = swiss, rotation = "none") # # Uniquenesses: # Fertility Agriculture Examination Education Catholic Infant.Mortality # 0.420 0.492 0.270 0.005 0.061 0.960 # # Loadings: # Factor1 Factor2 # Fertility -0.674 0.356 # Agriculture -0.648 0.297 # Examination 0.713 -0.471 # Education 0.997 # Catholic -0.178 0.953 # Infant.Mortality -0.104 0.169 # # Factor1 Factor2 # SS loadings 2.419 1.373 # Proportion Var 0.403 0.229 # Cumulative Var 0.403 0.632 # # Test of the hypothesis that 2 factors are sufficient. # The chi square statistic is 20.99 on 4 degrees of freedom. # The p-value is 0.000318 Usando factanal he creado dos factores sobre el conjunto de datos swiss y he optado por no usar nigún tipo de rotación. ...

2 de abril de 2014 · Carlos J. Gil Bellosta

Componentes principales para quienes cursaron álgebra de primero con aprovechamiento

Quienes cursaron su álgebra de primero con aprovechamiento —los que no, pueden ponerse al día en 3:47 minutos— aprendieron que una matriz $X$ puede descomponerse de la forma $$ \mathbf{X} = \mathbf{UDV}$$ donde $\mathbf{U}$ y $\mathbf{V}$ son matrices ortonormales y $\mathbf{D}$ es diagonal. Si los elementos de la diagonal de $\mathbf{D}$ son $d_1>d_2>\dots$ y los últimos son pequeños, entonces $$ \mathbf{X} \approx \mathbf{UD_0V}$$ donde $\mathbf{D_0}$ es la matriz en la que se han sustituido los $d_i$ despreciables por ceros. Si $\mathbf{D_0}$ tiene m elementos diagonales no nulos, solo hay m columnas de $\mathbf{U}$ y m filas de $\mathbf{V}$ que juegan un papel efectivo en la proximación anterior. Por lo tanto se puede reescribir de la forma ...

1 de abril de 2014 · Carlos J. Gil Bellosta

Graficaca en Gas Natural Fenosa

Hoy he querido entrar a la página de Gas Natural Fenosa para echarles un vistazo a mis facturas y he encontrado el siguiente y magnífico ejemplar de graficaca: Es un compendio de todas las cosas que no hay que hacer para representar datos gráficamente. Lo más grave que tiene es que las barras no corresponden a meses sino a periodos de duración desigual e indefinida. No hay forma de ver una evolución ni de realizar una comparación. ...

31 de marzo de 2014 · Carlos J. Gil Bellosta

Predictores con varianza casi nula, inflación, loterías y línea de comandos

Hoy viernes vuelvo a traer a mis páginas cuatro enlaces interesantes. El primero de ellos es como las malas películas: un arranque espléndido, un planteamiento prometedor y, al final, humo. Pero no trata de chico-conoce-chica sino de qué hacer con esas variables que tienen una varianza casi nula (a la hora de crear modelos estadísticos, se entiende). Me llegó tan oportunamente que pensé que alguien que vela por mí desde lo alto me lo enviaba para sacarme de mi semanal atolladero. Pero no fue el caso. ...

28 de marzo de 2014 · Carlos J. Gil Bellosta

Mapas: cosas casi increíbles que pueden hacerse con R

Nunca pude ser un erizo. Lo intenté durante años y acabé en el sicólogo. Si el cuerpo me hubiese dado, ahora, tal vez, como algunos compañeros de promoción, sería un experto en un área diminuta del conocimiento y corregiría exámenes los fines de semana. Descubrí con tiempo y muchas sesiones de a 60 euros la hora que había nacido para ser un zorro, un merodeador que olisquea aquí y allá. Una lectura superficial de estas páginas que escribo puede dar la impresión de que contienen conocimientos profundos (¡ojalá!). Una lectura profunda, que contiene superficialidades (¡convengo!). Son obra de un zorro. ...

27 de marzo de 2014 · Carlos J. Gil Bellosta

ykmeans, ¿broma, ironía o triste realidad?

Estar suscrito a las actualizaciones de CRAN le permite a uno estar al tanto de las novedades de R de otra manera. De vez en cuando uno encuentra pequeños paquetes que le solucionan un problema puntual. Mucho más frecuentemente, la verdad, uno se topa con aplicaciones muy específicas en áreas que le resultan remotas. Pero uno no espera nunca tropiezar con paquetes que no sabe si clasificar como una broma, una ironía bromas o como algo mucho peor: la constatación de una triste realidad. Es el caso de ykmeans. ...

26 de marzo de 2014 · Carlos J. Gil Bellosta

Totales agregados por bloques en tablas

En ocasiones uno quiere añadir un total calculado en ciertos bloques a una tabla. Por ejemplo, en la tabla set.seed(1234) ventas.orig <- data.frame( cliente = rep(1:10, each = 5), producto = rep(letters[1:5], times = 10), importe = rlnorm(50)) tenemos clientes, productos e importes. Y nos preguntamos por el porcentaje en términos de importe que cada producto supone para cada cliente. Una manera natural pero torpe de realizar este cálculo consiste en usar un objeto intermedio y merge: library(plyr) tmp <- ddply(ventas.orig, .(cliente), summarize, total = sum(importe)) ventas <- merge(ventas.orig, tmp) ventas$pct.producto <- 100 * ventas$importe / ventas$total No os asustéis, se puede hacer aún peor (p.e., usando sqldf). Pero existen dos maneras, cuando menos, de hacerlo mejor. La primera es usando data.table. ...

25 de marzo de 2014 · Carlos J. Gil Bellosta

Finalmente, se ha inaugurado Martina Cocina

Esta entrada tiene un notable contenido publicitario: el pasado viernes se inauguró Martina Cocina (nota: la página es provisional), una cafetería-restaurante en el que ostento una participación del 50%. Se trata de un lugar al que, por supuesto, mis lectores están invitados a descubrir en número 11 de la castiza plaza de Cascorro de Madrid. Pero como estoy en un foro al que me obligo a no traer temas extemporáneos, confesaré a mis lectores que tengo dos proyectos en mente que guardan relación tanto con Martina Cocina como con los asuntos que esperan encontrar en estas páginas. El primero es que (si me dejan) trataré de aplicar lo que Dan Arieli nos enseña en Predictably Irrational a, principalmente aunque no exclusivamente, el diseño de la carta y los precios de los productos para ayudaros a vosotros, los clientes a elegir, ejem, más convenientemente (¿para quién?). ...

24 de marzo de 2014 · Carlos J. Gil Bellosta

Cuatro enlaces sobre R: Excel, C++, CSV y paralelización

Hoy traigo a mis páginas cuatro enlaces que apuntan a recetarios y tutoriales sobre la solución a cuatro problemas que pueden encontrar los usuarios de R: Conectar R y Excel Importar grandes ficheros CSV (y falta LaF) Integrar R con C/C++ Paralelizar código con snow ¡Espero que os resulten útiles!

21 de marzo de 2014 · Carlos J. Gil Bellosta