Paquetes

modelplotr

R

Si leéis algo y tropezáis con un gráfico como

es que lo que lo rodea vale la pena. En este caso, lo que lo rodea es este texto que algún LLM me ha resumido así:

  • El texto analiza la importancia de evaluar el valor comercial de los modelos predictivos y las limitaciones de las métricas de evaluación tradicionales como la curva ROC.
  • Presenta cuatro gráficos de evaluación (ganancias acumuladas, elevación acumulada, respuesta y respuesta acumulada) y tres gráficos financieros (costos e ingresos, ganancias y retorno de la inversión) que pueden ayudar a explicar el valor comercial de un modelo.
  • El texto proporciona ejemplos de cómo utilizar el paquete R modelplotr para crear estos gráficos.

Cortos (casi todos sobre R)

I.

¿Que solo me haya enterado que existe la función coplot en R en 2024? Se habla de ella aquí y aquí. En el fondo, son los pequeños múltiplos de toda la vida con algunas pequeñas diferencias interesantes.

II.

Nota para mí: en mi próximo proyecto de predicción (de series temporales), acudir a Open Forecasting y darle una oportunidad antes y en lugar de aterrizar por inercia, por defecto y por pereza en Forecasting: Principles and Practice.

Nueva (y espero que última) versión de MicrodatosEs

R

El otro día visité el museo de ciencias naturales de Madrid. Constaté que aún no he perdido mi extraño interés por esas pocas especies que dizque convivieron con los dinosaurios. MicrodatosEs es casi una criatura de esa época. No tanto, pero casi.

Me sorprende, de hecho, que tuviese algún usuario; que este, además, encontrase un bug y que, finalmente, diese noticia de él. La versión que lo soluciona es la que ahora figura y ocupa espacio en CRAN.

¿Dejar morir pxR?

R

¿Dejar morir pxR? He ahí la cuestión.

pxR es un paquete de R en CRAN en el que figuro como mantenedor. Es un subproducto de mis antiguas inclinaciones hacia el procomún. Me fue útil para alguna que otra actividad inútil.

El paquete sirve para importar a R datos en el formato Px. Este formato fue concebido en una época en la que aún no existían cosas mejores y mejor pensadas —XML, JSON, datos tidy, etc.—, los ficheros se intercambiaban en disquette (¿se escribía así? ya no recuerdo bien) y casi todo el mundo usaba Windows. Era lo que había y hay que entenderlo; de otra manera, no se comprende casi ninguna de las decisiones de diseño del formato. Que, por otra parte, parece basado en la siguiente pareja de principios funcionales:

¿Por qué vivimos tantos españoles a tanta altitud?

Perdóneseme haber usado lenguaje causal en el título de esta entrada siendo así que no encontrará el lector indicios sólidos de respuesta en lo que sigue. Y, sobre todo, que no se confunda y me tome por un sociólogo a la violeta o un economista posmo: no, soy matemático.

Quiero simplemente hacer constar un pequeño ejercicio de análisis espacial usando los paquetes sf y terra de R motivado, eso sí, por una pregunta que se planteó en cierto foro a raíz de esta captura de la Wikipedia:

Aún más sobre propagación de errores (y rv)

[Menos mal que se me ha ocurrido buscar en mi propio blog sobre el asunto y descubrir —no lo recordaba— que ya había tratado el asunto previamente en entradas como esta, esta o esta.]

El problema de la propagación de errores lo cuentan muy bien Iñaki Úcar y sus coautores aquí. Por resumirlo: tienes una cantidad, $latex X$ conocida solo aproximadamente en concreto, con cierto error e interesa conocer y acotar el error de una expresión $latex f(X)$.

PCA robusto

Esta semana he descubierto el PCA robusto. En la frase anterior he conjugado el verbo en cursiva porque lo he pretendido usar con un significado que matiza el habitual: no es que haya tropezado con él fortuitamente, sino que el PCA robusto forma parte de esa inmensa masa de conocimiento estadístico que ignoro pero que, llegado el caso, con un par de clicks, una lectura en diagonal y la descarga del software adecuado, puedo incorporarlo y usarlo a voluntad.

Un viejo truco para que R vuele

R

Existe un viejo truco —mas no por ello conocido— para que R vuele. Lo aprendí en una conferencia de uno de los padres de R (aunque ya no recuerdo quién era) en la primera década del siglo. El problema que tenía entre manos era el de ajustar unos cuantos miles de regresiones logísticas. Además de hacer uso de los métodos de paralelización, aún muy rudimentarios en la época, uno de los trucos más efectivos que utilizaba era el de desnudar las funciones.

Análisis de eventos recurrentes

He sido fan del análisis de los eventos recurrentes desde antes incluso de saber que existía tal cosa formalmente.

Es una extensión del análisis de la supervivencia donde resucitas y vuelves a morirte a lo Sísifo. Es decir, en el análisis de la supervivencia, te mueres y ya; por eso, si quieres extender el análisis de la supervivencia a asuntos tales como compras de clientes es necesario usar el calzador muy heterodoxamente.

Una herramienta para el análisis no paramétrico de series temporales

R

Sí, es un ejemplar de mi colección de rarezas estadísticas, técnicas que no entran dentro del currículo estándar pero que pudieran resultar útiles en algún momento, para algún caso particular.

Hoy, perfiles matriciales para series temporales, una técnica que sirve esencialmente, para identificar formas que se repiten en series temporales, como

Entiendo además que, como consecuencia, también para señalar aquellos ciclos en que se produzcan perfiles anómalos, para su evaluación. Pero dejo que consultéis la información en, por ejemplo, aquí y aquí.

Contrariamente a lo que creía recordar, "Hot deck" != LOCF

Imputación (que es algo en lo que muy a regañadientes estoy trabajando estos días).

Si de verdad tienes que imputar datos en una tabla (y solo en ese caso), solo hay un criterio: construye un modelo para predecir los valores faltantes en función del resto y reemplaza el NA por la su predicción.

El modelo puede ser tan tonto como

lm(my_col ~ 1, na.rm = T)

que resulta en la popular estrategia de reemplazar los NAs por la media del resto de las observaciones. Cambiando lm por otras cosas funciones más molonas y la fórmula por otras más complejas en que intervengan otras columnas se obtienen métodos más potentes. Se pueden usar GAMs (como en mtsdi) o random forests (como en missForest), pero la idea está clara. Es solo la naturaleza del problema la que nos invita a decantarnos por una u otra opción.

Por supuesto que tengo más variables que observaciones... ¿y?

He intentado replicar los resultados de la entrada de ayer con GAM (vía mgcv) así (véase el enlace anterior para la definición de los datos):

library(mgcv)
modelo_gam <- gam(
    y ~ x + s(id, bs = "re"),
    data = datos,
    method = "REML",
    family = "poisson")

Y nada:

Error in gam(y ~ x + s(id, bs = "re"), data = datos, method = "REML", : Model has more coefficients than data

Sí, ya sé que tengo más variables que observaciones. Pero, ¿no es para eso que estoy usando efectos aleatorios?