<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Carlos J. Gil Bellosta</title><link>https://datanalytics.com/</link><description>Recent content on Carlos J. Gil Bellosta</description><generator>Hugo -- gohugo.io</generator><language>es</language><lastBuildDate>Thu, 16 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://datanalytics.com/index.xml" rel="self" type="application/rss+xml"/><item><title>El imán de Millikan: Feynman y el peligro de «corregir hasta que parezca correcto»</title><link>https://datanalytics.com/2026/04/16/feynman-correccion-datos/</link><pubDate>Thu, 16 Apr 2026 00:00:00 +0000</pubDate><guid>https://datanalytics.com/2026/04/16/feynman-correccion-datos/</guid><description>&lt;p&gt;Hay un pasaje en el libro &lt;a href="https://en.wikipedia.org/wiki/Genius:_The_Life_and_Science_of_Richard_Feynman"&gt;&lt;em&gt;Genius: The Life and Science of Richard Feynman&lt;/em&gt;&lt;/a&gt; donde se lee (con mi traducción):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[&amp;hellip;] científicos de Caltech advirtieron cómo la mera presencia de Feynman ejercía una especie de presión moral sobre sus resultados y métodos. Era implacablemente escéptico. Le gustaba hablar del famoso experimento de la gota de aceite del primer gran físico de Caltech, Robert Millikan, que &lt;a href="https://es.wikipedia.org/wiki/Experimento_de_Millikan"&gt;midió la carga elemental indivisible del electrón al aislarla en diminutas gotas de aceite en suspensión&lt;/a&gt;. El experimento era correcto, pero algunos de los valores numéricos estaban equivocados, y el resultado de los experimentos posteriores supuso una vergüenza permanente para la física: no se agruparon en torno al resultado correcto, sino que se fueron acercando lentamente a él. El error de Millikan ejercía una atracción psicológica, como un imán distante que desviaba las observaciones de su centro.&lt;/p&gt;
&lt;p&gt;Si un experimentador de Caltech le contaba a Feynman un resultado obtenido tras un proceso complejo de corrección de datos, Feynman nunca dejaba de preguntar cómo había decidido el experimentador en qué momento dejar de corregir, y si esa decisión se había tomado antes de poder ver qué efecto tendría sobre el resultado final. Era demasiado fácil caer en la trampa de corregir hasta que la respuesta «pareciera» correcta. Evitarlo requería una familiaridad íntima con las reglas del juego del científico. También exigía no solo honestidad, sino la conciencia de que la honestidad requiere esfuerzo.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Las estimaciones a las que se refería Feynman son:&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://upload.wikimedia.org/wikipedia/commons/6/67/Electron_charge_measurements_1913-1951.png#center"&gt;&lt;/p&gt;
&lt;p&gt;Algo parecido sucedió con las &lt;a href="https://datanalytics.com/2020/10/26/intervalos-de-confianza-y-la-velocidad-de-la-luz/"&gt;estimaciones históricas de la velocidad de la luz&lt;/a&gt;, aunque en este caso, el problema radicaba en la varianza más que en el sesgo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nota:&lt;/strong&gt; todo lo anterior está extraído y adaptado de &lt;a href="https://statmodeling.stat.columbia.edu/2025/08/14/feynman-corner-we-have-access-to-a-lot-more-examples-than-we-used-to/"&gt;&lt;em&gt;Feynman corner: We have access to a lot more examples than we used to&lt;/em&gt;&lt;/a&gt;, donde se advierte sobre el peligro de «permitir que el resultado condicione el método».&lt;/p&gt;</description></item><item><title>Notas (16) sobre economía: de la paradoja de Simpson al lujo irracional</title><link>https://datanalytics.com/2026/04/14/cortos-economia/</link><pubDate>Tue, 14 Apr 2026 00:00:00 +0000</pubDate><guid>https://datanalytics.com/2026/04/14/cortos-economia/</guid><description>&lt;p&gt;Escribí hace ya unos años sobre &lt;a href="https://datanalytics.com/2019/06/03/un-esquema-simpsoniano-para-repensar-el-presunto-incremento-de-la-desigualdad/"&gt;&lt;em&gt;un esquema simpsoniano para repensar el presunto incremento de la desigualdad&lt;/em&gt;&lt;/a&gt;, una entrada que invita a tener presente la &lt;a href="https://datanalytics.com/tags/paradoja-de-simpson/"&gt;paradoja de Simpson&lt;/a&gt; a la hora de analizar la desigualdad económica.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://davidoks.blog/p/how-the-spreadsheet-reshaped-america"&gt;&lt;em&gt;How the spreadsheet reshaped America&lt;/em&gt;&lt;/a&gt; relata la transformación de la economía y la cultura laboral en EEUU (y diríase que la de otros sitios también). Se centra, en particular, en cómo estas herramientas permitieron crear modelos financieros en masa y cómo esto, a su vez, permitió el despegue del llamado «capital privado». Aunque también se refiere a sus efectos epistemológicos y a la consolidación de&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;la convicción inquebrantable de que la manera como funciona el mundo puede representarse por medio de filas y columnas de números y fórmulas.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;David Rosenthal advierte acerca de la inevitabilidad de la &lt;a href="https://blog.dshr.org/2026/03/metastablecoin-fragmentation.html"&gt;fragmentación de las &lt;em&gt;stablecoins&lt;/em&gt;&lt;/a&gt; en múltiples &lt;em&gt;blockchains&lt;/em&gt;, lo que acarrea un debilitamiento de los efectos de red y de la interoperabilidad del dinero digital.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://curia.europa.eu/site/upload/docs/application/pdf/2026-03/cp260038es.pdf"&gt;«Una solicitud de acceso a los propios datos personales puede considerarse abusiva y denegarse si se presenta con el único fin de solicitar posteriormente una indemnización por una supuesta infracción de la GDPR»&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Jesús Alfaro sobre Jerry Z. Muller sobre Adam Smith y &lt;a href="https://derechomercantilespana.blogspot.com/2026/03/las-consecuencias-imprevistas-de-la.html"&gt;las consecuencias imprevistas de la acción humana&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;El artículo &lt;a href="https://www.nber.org/papers/w34843"&gt;&lt;em&gt;How Do Workers Think About The Costs and Benefits of Freelance Work?&lt;/em&gt;&lt;/a&gt; concluye que los trabajadores autónomos suelen valorar la flexibilidad, pero tienden a subestimar significativamente sus cargas fiscales y gastos operativos; y que, además, al recibir información precisa sobre sus ingresos netos reales, la percepción de los beneficios del trabajo por cuenta propia disminuye considerablemente.&lt;/p&gt;
&lt;p&gt;Hace un tiempo leí &lt;a href="https://piensoluegohesobrevivido.es/2026/cortos-55/"&gt;sobre el potencial efecto beneficioso de los vehículos autónomos en el tráfico rodado&lt;/a&gt;. Hay más información sobre el asunto por ahí, obviamente. Es previsible que esta tecnología acabe teniendo un impacto sobre el urbanismo, igual que lo hizo la de los coches tradicionales. Pero ahora, &lt;a href="https://www.worksinprogress.news/p/its-time-to-tax-driverless-cars"&gt;Works in Progress advierte que este pudiera ser negativo&lt;/a&gt; dado que estos nuevos vehículos eliminan las restricciones de tiempo y coste que supone conducir actualmente. Es decir, que habría más coches circulando en un momento dado en unas calles que dan para lo que dan. De modo que, para evitar esta «tragedia de los comunes», propone nada menos que crear un impuesto específico por km para coches sin conductor que contribuya a mitigar la demanda.&lt;/p&gt;
&lt;p&gt;Scott Sumner escribe &lt;a href="https://scottsumner.substack.com/p/the-end-of-economics"&gt;&lt;em&gt;The end of economics?&lt;/em&gt;&lt;/a&gt; sobre un &lt;a href="https://tylercowen.com/marginal-revolution-generative-book/"&gt;nuevo libro de Tyler Cowen&lt;/a&gt; que diagnostica el declive del análisis marginalista y la teoría de precios en la economía moderna.&lt;/p&gt;
&lt;p&gt;Finalmente, &lt;a href="https://paulgraham.com/brandage.html"&gt;&lt;em&gt;The Brand Age&lt;/em&gt;&lt;/a&gt;, de Paul Graham, tiene dos partes. Una, interesante en sí misma, sobre la historia de la industria de los relojes en Suiza. La segunda, a la que la primera sirve de pie, sobre cómo los productos pasan de competir por rendimiento a hacerlo por prestigio de marca. La tesis es que vivimos en una era donde el diseño óptimo converge (véase la similaridad de los coches, por ejemplo) y que eso induce a las empresas a introducir en sus productos rasgos distintivos e irracionales (&lt;a href="https://en.wiktionary.org/wiki/anti-feature"&gt;&lt;em&gt;antifeatures&lt;/em&gt;&lt;/a&gt;) con el único fin de mantener su estatus de lujo. (Y pienso, ¿cómo aplica esto al universo Apple?)&lt;/p&gt;</description></item><item><title>Kepler ∩ Bayes</title><link>https://datanalytics.com/2026/04/09/kepler-bayes/</link><pubDate>Thu, 09 Apr 2026 00:00:00 +0000</pubDate><guid>https://datanalytics.com/2026/04/09/kepler-bayes/</guid><description>&lt;p&gt;En los relatos acerca de las tribulaciones de los científicos se suele hacer referencia a estimaciones puntuales: X determinó que el Y era Z. Luego, además, se suele aclarar que ahora se sabe que el valor de Y no es Z sino tal vez el doble o un 10% menos. Pero ahí queda la cosa.&lt;/p&gt;
&lt;p&gt;Es extraño porque hoy en día, si todo el mundo piensa que Y es 0 y alguien propone un valor Z, no se le hace el menor caso si no proporciona un intervalo de confianza alrededor de Z que, entre otras cosas, excluya el 0. No está para nada claro que los astrónomos de la época tuviesen que hacer caso a pie juntillas a los Galileos, Keplers, etc. de la época. Con los estándares de hoy, no habrían podido publicar ninguno de sus resultados.&lt;/p&gt;
&lt;p&gt;Hace algo más de 400 años, Kepler estimó la excentricidad de la órbita terrestre en 0.017, que es un valor próximo a cero. La diferencia entre una órbita con excentricidad de alrededor de 0.017 y una circular es más o menos la que muestra la siguiente figura:&lt;/p&gt;
&lt;p&gt;&lt;img alt="excentricidad órbita terrestre" loading="lazy" src="https://datanalytics.com/img/2026/excentricidad_orbita_terrestre.png#center"&gt;&lt;/p&gt;
&lt;p&gt;Así que he rehecho el análisis de Kepler usando estadística bayesiana y publicado todo &lt;a href="https://github.com/cjgb/datanalytics_code/blob/main/2026-kepler-numpyro/estimate_earth_orbit.ipynb"&gt;aquí&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;En realidad, no he usado los mismos datos que Kepler porque no he dado con ellos. Es sabido que Kepler usó para el fin que me propongo seis observaciones obtenidas de Tycho Brahe por medios poco ortodoxos. Yo he usado once obtenidas de la NASA y &lt;a href="https://github.com/LucaCanali/Miscellaneous/tree/master/Data_Analyses/Kepler"&gt;preprocesadas por Luca Canali&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Pero tanto la idea como el método son los mismos. Y el error de las observaciones que uso es no mucho mayor que el de las de Brahe (estimadas en alrededor de 0.0003 radianes).&lt;/p&gt;
&lt;p&gt;Lo interesante de este análisis es constatar cómo la incertidumbre en las observaciones se traslada a la de la estimación de la excentricidad, de la que la distribución a posteriori que obtengo es:&lt;/p&gt;
&lt;p&gt;&lt;img alt="estimaciones excentricidad órbita terrestre" loading="lazy" src="https://datanalytics.com/img/2026/excentricidad_orbita_terrestre_estimations.png#center"&gt;&lt;/p&gt;
&lt;p&gt;No quiero alargarme más en el asunto porque los detalles ya están escritos en el cuaderno de Python que he enlazado antes.&lt;/p&gt;</description></item><item><title>Notas (15) sobre estadística: apuntes sobre publicaciones y noticias recientes de interés</title><link>https://datanalytics.com/2026/04/07/cortos-estadistica/</link><pubDate>Tue, 07 Apr 2026 00:00:00 +0000</pubDate><guid>https://datanalytics.com/2026/04/07/cortos-estadistica/</guid><description>&lt;p&gt;David Oks advierte de que &lt;a href="https://davidoks.blog/p/a-lot-of-population-numbers-are-fake"&gt;las cifras de población de muchos países son falsas&lt;/a&gt;. Aunque no hay que dar pábulo a teorías conspiranoicas sobre las cifras de población globales, hay evidencias sólidas de que las que proceden de muchos países pobres (menciona explícitamente Papúa Nueva Guinea, Nigeria, China, la India y Paraguay) tienen sesgos importantes.&lt;/p&gt;
&lt;p&gt;Saloni Dattani ha escrito un &lt;a href="https://www.scientificdiscovery.dev/p/salonis-guide-to-data-visualization"&gt;tutorial de visualización de datos&lt;/a&gt; que tiene muy buena pinta.&lt;/p&gt;
&lt;p&gt;Dos sobre análisis clínicos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Adam Kroetsch analiza &lt;a href="https://learninghealthadam.substack.com/p/why-clinical-trials-are-inefficient"&gt;por qué los ensayos clínicos son tan ineficientes&lt;/a&gt;, apuntando problemas como la desconfianza institucional, la incertidumbre regulatoria y la fragmentación de la industria, que, entre otras cosas, dificultan la labor de reclutar participantes.&lt;/li&gt;
&lt;li&gt;Bloomberg trae un artículo que alimenta el escepticismo acerca de estas pruebas. Indica cómo los &lt;a href="https://archive.is/newest/https://www.bloomberg.com/news/articles/2026-03-19/obesity-drug-tests-upended-by-placebo-patients-quitting-early"&gt;ensayos de fármacos contra la obesidad&lt;/a&gt; se están viendo afectados por el abandono temprano de pacientes en los grupos de placebo: debido a la alta eficacia de medicamentos ya aprobados, los participantes que no pierden peso identifican rápidamente que no reciben el fármaco activo y optan por dejar el estudio. ¿Por qué se siguen comparando los medicamentos con placebos y no con el «gold standard»?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dos relacionados de José R. Berrendero:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El primero compara dos métodos de &lt;a href="https://verso.mat.uam.es/~joser.berrendero/caminos_aleatorios/posts/032-ic-exp/"&gt;bootstrap para calcular intervalos de confianza&lt;/a&gt;, el básico y el basado en la distribución t, usando como ejemplo la media de una distribución exponencial. El artículo concluye que el método bootstrap t es significativamente más fiable y estable, especialmente cuando la distribución de los datos es asimétrica.&lt;/li&gt;
&lt;li&gt;El segundo analiza &lt;a href="https://verso.mat.uam.es/~joser.berrendero/caminos_aleatorios/posts/023-correlacion-media-var/"&gt;distribuciones en que hay relación entre la media muestral y la varianza muestral&lt;/a&gt;, demostrando que la correlación entre ambas magnitudes depende directamente de la asimetría y la curtosis de la población. A partir de esta relación se deriva la desigualdad de Pearson, que establece un límite inferior para la curtosis en función del cuadrado de la asimetría. En la entrada del punto anterior se usa una distribución asimétrica, la exponencial, donde el uso del método &lt;em&gt;bootstrap&lt;/em&gt;, que usa tanto la media como la dispersión de la distribución, contribuye a mejorar los intervalos de confianza.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sobre software y métodos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bob Carpenter escribe sobre &lt;a href="https://statmodeling.stat.columbia.edu/2026/03/12/sparsenuts-precondition-hierarchical-hmc-sparse-laplace/"&gt;SparseNUTS&lt;/a&gt;, un nuevo método de muestreo para el MCMC que, se ve, es particularmente útil para el ajuste de modelos jerárquicos.&lt;/li&gt;
&lt;li&gt;Uri Simonsohn presenta en Data Colada el paquete de R &lt;a href="https://datacolada.org/132"&gt;&lt;code&gt;statuser&lt;/code&gt;&lt;/a&gt;, diseñado para hacer que funciones estadísticas comunes sean más legibles y fáciles de usar para los humanos.&lt;/li&gt;
&lt;li&gt;Nicholas Clark explica cómo &lt;a href="https://ecogambler.netlify.app/blog/plant-community-dirichlet/"&gt;modelar datos composicionales&lt;/a&gt; (que deben sumar uno necesariamente) utilizando regresión de Dirichlet con procesos gaussianos en el paquete &lt;code&gt;brms&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Una &lt;a href="https://analisisydecision.datanalytics.com/blog/una-fabulilla-sobre-prim-con-multiples-moralejas/"&gt;fabulilla sobre PRIM&lt;/a&gt; (&lt;em&gt;Patient Rule Induction Method&lt;/em&gt;), que escribí hace años en otro blog. El mundo ha dado muchas vueltas y la fe que deposité en el método ha resultado ser infundada. Ya nadie sabe qué es PRIM, pero conviene saber que existe y para qué podría servir.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Alex Trembath critica en &lt;a href="https://asteriskmag.com/issues/13/merchants-of-certainty"&gt;&lt;em&gt;Merchants of Certainty&lt;/em&gt;&lt;/a&gt; ciertos aspectos de la ciencia del cambio climático y, en particular, cómo la disciplina ha pasado de gestionar la incertidumbre científica a exigir certezas absolutas, con el pretendido fin de forzar acciones políticas. El autor aboga por «recuperar la humildad epistémica y trabajar dentro de los marcos democráticos, aceptando que la ciencia debe informar a la sociedad en lugar de limitarla» (cita del resumen de un LLM). Me da cierto miedo hacerme eco de este artículo que trata un tema tan delicado como el del cambio climático desde una perspectiva, además, crítica. Pero lo he hecho por dos motivos: que trata una cuestión, la incertidumbre, que es sobre la que en el fondo gira todo este blog y porque fue publicado en Asterisk, una publicación muy, muy alejada de posturas acientíficas y conspiranoicas.&lt;/p&gt;
&lt;p&gt;ABC publica &lt;a href="https://www.abc.es/sociedad/invierno-calido-seco-prediccion-aemet-sirve-publico-20260225042256-nt.html"&gt;&lt;em&gt;¿Un invierno cálido y seco? La predicción de la Aemet que no sirve de nada al público general&lt;/em&gt;&lt;/a&gt;, donde AEMET se defiende de las críticas que recibió al describir el invierno pasado como &lt;em&gt;cálido y seco&lt;/em&gt;. Que pueden extenderse a muchos otros casos en los que los resultados de estudios estadísticos «macro» crean contradicciones con respecto a lo que se observa en nichos «micro» (entre otras cosas). Puede también consultarse &lt;a href="https://climatica.coop/a-pesar-lluvias-bulos-invierno-calido-aemet/"&gt;esto&lt;/a&gt; con datos desglosados y un análisis más detallado de la cuestión.&lt;/p&gt;
&lt;p&gt;¿Alguien conoce al autor de &lt;a href="https://rprogrammingbooks.com/quantitative-horse-racing-r-calibration-backtesting-deployment/"&gt;esto&lt;/a&gt;? Es español y, sin duda, un tipo muy curioso.&lt;/p&gt;</description></item><item><title>Cuando hables con los LLMs, usa «la lengua del imperio»</title><link>https://datanalytics.com/2026/04/02/llms-lenguaje/</link><pubDate>Thu, 02 Apr 2026 00:00:00 +0000</pubDate><guid>https://datanalytics.com/2026/04/02/llms-lenguaje/</guid><description>&lt;p&gt;Al trabajar con LLMs, la elección del idioma tiene efectos en términos de precisión, precio y fiabilidad. La evidencia empírica está alineada con lo que se esperaría razonando desde primeros principios: en inglés funcionan mejor.&lt;/p&gt;
&lt;p&gt;En términos de precisión, existe una degradación sistemática fuera del inglés que se acentúa en lenguas minoritarias y exóticas. Esto es así por el sobremuestreo de los contenidos en inglés en el entrenamiento, que, además, es mucho más sustancial en disciplinas científicas y técnicas. Por lo tanto, se especula que los modelos «internalizan» mejor los patrones semánticos y las estructuras argumentativas en ese idioma. La conclusión operativa es que si la tarea requiere exactitud (análisis, programación, medicina, etc.), usar el inglés reduce el riesgo de error.&lt;/p&gt;
&lt;p&gt;Además, se especula que en la arquitectura interna e implícita de los LLMs hay una doble traducción (al y del inglés) que puede producir pérdidas de información. Existe evidencia anecdótica de que algunos modelos pueden encontrar la respuesta correcta si se interactúa con ellos en inglés pero equivocarse si se usa otro idioma.&lt;/p&gt;
&lt;p&gt;En términos de coste, los &lt;em&gt;tokens&lt;/em&gt; no son neutrales al idioma. La eficiencia de la tokenización depende fuertemente del idioma. Usar el inglés permite una tokenización más sucinta y, por lo tanto, más económica. Así que usar inglés no solo mejora la calidad, sino que también reduce el coste directo de uso de los LLMs.&lt;/p&gt;
&lt;p&gt;Cualquiera puede pedir a su LLM favorito que le aporte enlaces a la literatura que discuten los asuntos arriba planteados. Así que dejaré eso como tarea para el lector interesado. Pero quiero hacer una excepción con el artículo de febrero de 2026 &lt;a href="https://www.sciencedirect.com/science/article/abs/pii/S088523082500124X"&gt;&lt;em&gt;IberBench: LLM evaluation on Iberian languages&lt;/em&gt;&lt;/a&gt;, cuyo resumen traduzco:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A pesar de su notable éxito, los LLMs siguen siendo difíciles de evaluar de manera exhaustiva, especialmente en idiomas distintos al inglés, en los que escasean los datos de alta calidad. Los &lt;em&gt;benchmarks&lt;/em&gt; y los &lt;em&gt;rankings&lt;/em&gt; actuales se centran predominantemente en el inglés, y solo unos pocos abordan otras lenguas. Estos marcos de evaluación presentan deficiencias en varias áreas clave: pasan por alto la diversidad de las variedades lingüísticas, priorizan las capacidades fundamentales del Procesamiento del Lenguaje Natural (NLP) sobre tareas de relevancia industrial y son de naturaleza estática.&lt;/p&gt;
&lt;p&gt;Por eso hemos construido IberBench, un &lt;em&gt;benchmark&lt;/em&gt; exhaustivo y extensible diseñado para evaluar el rendimiento de los LLMs tanto en tareas de NLP fundamentales como de relevancia industrial, en los idiomas hablados en la península Ibérica e Iberoamérica, incluyendo español, portugués, catalán, vascuence, gallego e inglés, además de variedades del español como el mexicano, uruguayo, peruano, costarricense y cubano. IberBench integra 101 conjuntos de datos procedentes de campañas de evaluación y benchmarks recientes, cubriendo 22 categorías de tareas como el análisis de sentimientos y emociones, la detección de toxicidad y la generación de resúmenes.&lt;/p&gt;
&lt;p&gt;Este &lt;em&gt;benchmark&lt;/em&gt; aborda limitaciones clave en las prácticas de evaluación actuales, como la falta de diversidad lingüística y las configuraciones de evaluación estáticas, al permitir actualizaciones continuas y el envío de modelos y conjuntos de datos por parte de la comunidad, moderados por un comité de expertos. Evaluamos 23 LLMs que van desde los 100 millones hasta los 14.000 millones de parámetros y aportamos perspectivas empíricas sobre sus fortalezas y limitaciones. Nuestros hallazgos indican que:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Los LLMs rinden peor en tareas de relevancia industrial que en las fundamentales.&lt;/li&gt;
&lt;li&gt;El rendimiento es, de media, menor para el gallego y el euskera.&lt;/li&gt;
&lt;li&gt;Algunas tareas muestran resultados cercanos al azar.&lt;/li&gt;
&lt;li&gt;En otras tareas, los LLMs rinden por encima del azar pero por debajo de los sistemas diseñados específicamente para tareas compartidas (shared tasks).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;IberBench ofrece implementaciones de código abierto para todo el proceso de evaluación, incluyendo la normalización y el alojamiento de conjuntos de datos, la evaluación incremental de LLMs y una tabla de clasificación accesible al público.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Nota final:&lt;/strong&gt; Como el artículo menciona una tabla de clasificación accesible al público, la he buscado, &lt;a href="https://huggingface.co/spaces/iberbench/leaderboard"&gt;la he encontrado&lt;/a&gt;, pero no he podido ver resultado alguno porque, se ve, debido a la falta de tráfico (e interés por la cosa), el proveedor que la aloja, HuggingFace, la había &lt;em&gt;desactivado&lt;/em&gt;. He pulsado el botón de &lt;em&gt;reactivar&lt;/em&gt; y si de aquí a unos días deja de girar el circulito de carga, lo comento.&lt;/p&gt;</description></item><item><title>Notas (14) sobre LLMs: apuntes sobre publicaciones recientes</title><link>https://datanalytics.com/2026/03/31/cortos-llms/</link><pubDate>Tue, 31 Mar 2026 00:00:00 +0000</pubDate><guid>https://datanalytics.com/2026/03/31/cortos-llms/</guid><description>&lt;p&gt;El autor del paquete &lt;code&gt;revss&lt;/code&gt; de R para el análisis estadístico de muestras pequeñas, &lt;a href="https://www.avrahamadler.com/2026/03/18/revss-robust-estimation-for-small-samples-in-r-updated-v310/"&gt;anuncia&lt;/a&gt; una actualización importante explicando en particular el uso de LLMs para reescribir el motor de cálculo en Fortran y C, optimizando el rendimiento de manera significativa. No todo va a ser &lt;em&gt;slop&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Semianalysis se pregunta &lt;a href="https://newsletter.semianalysis.com/p/are-ai-datacenters-increasing-electric"&gt;si los centros de datos de la IA van a incrementar el precio de la electricidad para los hogares de los EEUU&lt;/a&gt; y mediante un análisis comparativo concluye que las subidas de precios que se observan en ciertas regiones se deben más a errores en el diseño del mercado y a los problemas que supone la planificación centralizada que a la demanda de estos nuevos consumidores.&lt;/p&gt;
&lt;p&gt;Existieron varios &lt;a href="https://en.wikipedia.org/wiki/AI_winter"&gt;«inviernos de la IA»&lt;/a&gt;. Ahora, &lt;a href="https://gus1365199.substack.com/p/the-ai-ethics-winter"&gt;&lt;em&gt;The AI Ethics Winter&lt;/em&gt;&lt;/a&gt; observa una deriva hacia la irrelevancia de la disciplina de la ética de la IA motivada por su obsesión con los riesgos en lugar de preocuparse por cómo la tecnología puede contribuir activamente al bienestar y florecimiento humano.&lt;/p&gt;
&lt;p&gt;The Economist discute &lt;a href="https://www.economist.com/science-and-technology/2026/03/18/top-ai-models-underperform-in-languages-other-than-english"&gt;la brecha de rendimiento de los LLMs en idiomas distintos al inglés&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Simon Willison se hace eco acerca de la polémica sobre la &lt;a href="https://simonwillison.net/2026/Mar/5/chardet/"&gt;reescritura de librerías usando LLMs&lt;/a&gt; para cambiar sus licencias de LGPL (menos permisiva) a MIT (más permisiva). Discute también acerca de la &lt;a href="https://simonwillison.net/2026/Mar/9/not-so-boring/#atom-everything"&gt;preferencia de los LLMs por tecnologías «aburridas»&lt;/a&gt;, aquellas que más se usan y están mejor documentadas, aunque advierte que los LLMs modernos son capaces de aprender herramientas nuevas o de nicho fácilmente.&lt;/p&gt;
&lt;p&gt;Stephen Wolfram &lt;a href="https://writings.stephenwolfram.com/2026/02/making-wolfram-tech-available-as-a-foundation-tool-for-llm-systems/"&gt;sostiene&lt;/a&gt; que los LLM necesitan un motor simbólico para tareas que requieren precisión técnica y factual (y, cómo no, sugiere el uso de los productos que desarrolla su empresa a tal efecto).&lt;/p&gt;
&lt;p&gt;Creo que todo el mundo sabe que &lt;a href="https://www.youtube.com/watch?v=Q8Fkpi18QXU&amp;amp;t=6s"&gt;Terence Tao fue entrevistado por Dwarkesh Patel&lt;/a&gt; y que hablaron largo y tendido sobre el uso de la IA en matemáticas. Se ha escrito mucho al respecto, pero casi todo en términos de anécdotas. La única perspectiva &lt;em&gt;categorial&lt;/em&gt;, sistemática, que conozco sobre el asunto es la de Tao (véase, por ejemplo, &lt;a href="https://terrytao.wordpress.com/2025/11/05/mathematical-exploration-and-discovery-at-scale/"&gt;esto&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Dynomight describe su experiencia usando &lt;a href="https://dynomight.net/coffee/"&gt;LLMs para predecir la velocidad del enfriamiento de su café&lt;/a&gt; y encuentra que, aunque los modelos generan curvas matemáticas plausibles, tienen serias dificultades para ajustarlas a la realidad.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://hugoreichardt.com/pdf/tstc_compadvantage.pdf"&gt;&lt;em&gt;Task-Specific Technical Change and Comparative Advantage&lt;/em&gt;&lt;/a&gt; argumenta que la IA «democratiza» el trabajo cualificado (es decir, reduce sustancialmente la desigualdad salarial) al permitir que trabajadores de distintos niveles de formación y experiencia rindan a niveles mucho menos diferentes que antaño.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://americanaffairsjournal.org/2025/11/innovation-under-pressure-chinas-semiconductor-industry-at-a-crossroads/"&gt;&lt;em&gt;Innovation under Pressure: China&amp;rsquo;s Semiconductor Industry at a Crossroads&lt;/em&gt;&lt;/a&gt; describe detalladamente la respuesta de China a las restricciones a la importación de tecnología puntera para la fabricación de &lt;em&gt;chips&lt;/em&gt;. El resumen: China podría alcanzar volverse autosuficiente de este tipo de herramientas antes de lo previsto.&lt;/p&gt;
&lt;p&gt;El artículo &lt;a href="https://cpwalker.substack.com/p/context-engineering-why-hayeks-knowledge"&gt;&lt;em&gt;Context Engineering: Why Hayek&amp;rsquo;s Knowledge Problem Survives AI&lt;/em&gt;&lt;/a&gt; está relacionado con &lt;a href="https://datanalytics.com/2026/03/12/llm-conocimiento-legible/"&gt;lo que escribí sobre el conocimiento legible&lt;/a&gt; planteándolo en términos de si la IA puede resolver &lt;a href="https://en.wikipedia.org/wiki/The_Use_of_Knowledge_in_Society"&gt;el problema de la información en la sociedad&lt;/a&gt; (argumentando, &lt;a href="https://www.thepublicdiscourse.com/2021/07/76963/"&gt;como tantos otros&lt;/a&gt;, que no).&lt;/p&gt;
&lt;p&gt;También relacionado con lo anterior, en &lt;a href="https://meaningness.substack.com/p/when-engineering-gets-100-percent-meta-rational"&gt;&lt;em&gt;When engineering gets 100% meta-rational&lt;/em&gt;&lt;/a&gt; se argumenta que, a medida que la IA automatiza las tareas de código rutinarias, la habilidad humana más valiosa será lo que llama la «meta-racionalidad»: el futuro de la ingeniería de &lt;em&gt;software&lt;/em&gt; residirá en la capacidad de navegar requisitos nebulosos y orquestar flotas de agentes para resolver problemas complejos.&lt;/p&gt;
&lt;p&gt;John Cook &lt;a href="https://www.johndcook.com/blog/2026/03/04/an-ai-odyssey-part-2-prompting-peril/"&gt;advierte&lt;/a&gt; una vez más sobre el indeterminismo inherente de los LLM, donde cambios sutiles en las instrucciones pueden generar resultados contradictorios.&lt;/p&gt;
&lt;p&gt;Finalmente, &lt;a href="https://www.seascapemodels.org/posts/2026-03-17-prompting-llms-stats-paper-published/"&gt;&lt;em&gt;Prompting large language models for quality ecological statistics&lt;/em&gt;&lt;/a&gt; ofrece guías para realizar análisis estadísticos válidos en el campo de la ecología usando LLMs. El consejo fundamental es que las instrucciones que se le den a los modelos sean sumamente específicas para lograr que estos elijan las pruebas correctas y generen código reproducible y revisable.&lt;/p&gt;</description></item><item><title>¿Existe tal cosa como el «PIB fantasma»?</title><link>https://datanalytics.com/2026/03/26/pib-fantasma/</link><pubDate>Thu, 26 Mar 2026 00:00:00 +0000</pubDate><guid>https://datanalytics.com/2026/03/26/pib-fantasma/</guid><description>&lt;p&gt;En febrero de 2026, en el blog de Citrini Research se publicó &lt;a href="https://www.citriniresearch.com/p/2028gic"&gt;The 2028 Global Intelligence Crisis&lt;/a&gt;, un ejercicio de economía-ficción distópica &amp;mdash;fechado en junio de 2028&amp;mdash; que describía un mundo en el que la IA había arrasado el empleo de cuello blanco con tal rapidez que el flujo circular de la economía se había roto. Muchos trabajos se habían desvanecido mientras los beneficios empresariales se disparaban y, sobre el papel, el PIB seguía creciendo.&lt;/p&gt;
&lt;p&gt;El escenario es paradójico: si los extrabajadores no pueden comprar ni pagar hipotecas (arrastrando a los bancos a la ruina), ¿cómo podría estar creciendo la economía? Los autores lo mencionan de pasada:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Los expertos popularizaron la expresión «PIB fantasma»: producción que figura en la contabilidad nacional pero que no circula en la economía real.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;El artículo fue discutido hace un tiempo hasta la saciedad y varios economistas se manifestaron especialmente acerca de ese peculiar concepto. Le he pedido a un LLM que me resuma algunas de las aportaciones más significativas y (con mi traducción y edición) me ha dicho esto:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Pierre Yared, entonces presidente en funciones del Consejo de Asesores Económicos de la Casa Blanca, lo calificó como «una interesante pieza de ciencia ficción» que «viola algunos de los principios básicos de la contabilidad económica». El analista Carlo Iacono señaló que el marco del «PIB fantasma» introduce implícitamente la suposición de que las ganancias de productividad no tienen ningún mecanismo de reciclaje, que el dinero ahorrado en salarios simplemente desaparece en lugar de fluir hacia la inversión, precios más bajos o ingresos fiscales. Paul Krugman comentó el texto tratándolo con el escepticismo que suele reservar para escenarios apocalípticos. El veredicto general entre los economistas profesionales fue consistente: las preocupaciones distributivas eran legítimas, pero la contabilidad subyacente era defectuosa. Las ganancias de productividad no se desvanecen en el aire. Van a algún sitio.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Sin embargo, es cierto que el PIB contiene un componente «fantasma» significativo, producción que efectivamente se contabiliza sin que nadie compre o venda nada, aunque no es en absoluto ficticia. Que es lo que voy a discutir en esta entrada de hoy.&lt;/p&gt;
&lt;p&gt;En primerísima aproximación, el PIB se calcula con una gran caja registradora: cada vez que el dinero cambia de manos por un bien o servicio, el contador sube. Una gran parte del PIB tiene ese tipo de origen, pero la realidad es más compleja. El PIB pretende captar el valor total de la producción económica y en áreas importantes de la economía existe producción sin intercambio monetario.&lt;/p&gt;
&lt;p&gt;En lo que sigue, voy a comentar algunas de esas partidas menos conocidas por el público para llegar finalmente a la que creo que Citrini Research tenía en mente.&lt;/p&gt;
&lt;h2 id="los-servicios-públicos"&gt;Los servicios públicos&lt;/h2&gt;
&lt;p&gt;La mayor parte de la producción del sector público &amp;mdash;escuelas, hospitales, tribunales, limpieza urbana, defensa&amp;mdash; no se vende a precios de mercado. Por definición, no hay precio observable. Se valora a coste de producción. Una escuela pública que duplica profesores y aulas duplica su contribución medida al PIB, independientemente de si los alumnos aprenden más o menos. Entre el 15% y el 20% del PIB en la mayoría de los países de la OCDE &amp;mdash;la parte atribuible al sector público&amp;mdash; se valora sin referencia a precios de mercado.&lt;/p&gt;
&lt;h2 id="los-servicios-bancarios"&gt;Los servicios bancarios&lt;/h2&gt;
&lt;p&gt;Los bancos plantean otro problema. Cuando pides un préstamo, pagas un tipo de interés. Cuando depositas dinero, recibes uno más bajo. La diferencia (o margen) es la principal fuente de ingresos bancarios. Pero el banco no cobra una comisión explícita observable, lo que plantea una complicación a la hora de evaluar la producción del sector bancario. La solución es un constructo llamado FISIM (servicios de intermediación financiera medidos indirectamente). Los estadísticos estiman la comisión implícita comparando los tipos de interés con una tasa de referencia, y contabilizan ese valor como producción. En la UE, el FISIM ha representado aproximadamente entre el 1% y el 2% del PIB en los últimos años. Su tamaño depende en gran medida de supuestos sobre la “tasa de referencia”.&lt;/p&gt;
&lt;h2 id="el-alquiler-que-te-pagas-a-ti-mismo"&gt;El alquiler que te pagas a ti mismo&lt;/h2&gt;
&lt;p&gt;Los dos apartados anteriores se refieren a componentes del PIB que están alejados del concepto del «PIB fantasma» en tanto que conciernen a actividades económicas reales, donde alguien realiza un servicio y el único problema reside en su valoración. Lo mismo podría predicarse del tráfico de drogas o la prostitución, actividades económicas en las que, me cuentan, no es común facturar con IVA.&lt;/p&gt;
&lt;p&gt;No es habitualmente conocido, sin embargo, que un gran componente del PIB en la mayoría de los países ricos es el llamado alquiler imputado de viviendas ocupadas por sus propietarios. El motivo de su inclusión es el siguiente: si alquilas un piso, tu pago mensual aparece en el PIB como consumo de servicios de vivienda. Pero si eres propietario, no te pagas un alquiler aunque consumes exactamente el mismo servicio: un lugar donde vivir. Si se excluyera este «alquiler fantasma», el PIB caería cada vez que un inquilino comprara su vivienda sin que se hubiese modificado la economía real. Otro motivo es el de poder realizar comparaciones significativas del PIB entre países con tasas de vivienda en propiedad y alquiler distintas. Para evitarlo, los estadísticos estiman cuánto pagarían los propietarios si se alquilaran su propia vivienda a sí mismos, y contabilizan esa cifra como producción y consumo. El peso de esta partida es importante: el sector de la vivienda aporta alrededor del 12% del PIB en España y el alquiler imputado es su mayor componente.&lt;/p&gt;
&lt;p&gt;El alquiler imputado es uno de los mayores componentes individuales de la economía, y representa algo que ningún propietario ha pagado ni cobrado nunca. Además, obviamente, si suben los alquileres (por encima del deflactor del PIB, como me cuentan que ha ocurrido alguna vez) y se actualizan los imputados, la economía crece sin que nadie haya apretado un tornillo.&lt;/p&gt;
&lt;p&gt;Una cosa que algún economista debería explicarnos es por qué se procede así con los alquileres y no con la limpieza de los retretes o con las tortillas de patata. En algunas viviendas, la limpieza del retrete contribuye al PIB (porque lo hace una señora filipina a la que se le paga un salario) y en las más, no.&lt;/p&gt;
&lt;h2 id="la-activación-de-costes"&gt;La «activación» de costes&lt;/h2&gt;
&lt;p&gt;Pero la partida &lt;em&gt;fantasmal&lt;/em&gt; del PIB más próxima a la que entiendo que quería aludir Citrini Research es la resultante de la llamada «activación de costes». Se entiende mejor con un ejemplo (real).&lt;/p&gt;
&lt;p&gt;Una empresa con la que tuve cierto contacto el año pasado se enorgullecía del hecho de haber sido rentable y haber dado beneficios durante los últimos diez o quince años a pesar de los vaivenes del mercado. Sin embargo, en el año 2024, debido, se ve, a algún tipo de regularización contable, se le imputaron de repente una serie de pérdidas extraordinarias que amenazaban con torcer la racha. Lo solucionó &lt;em&gt;activando&lt;/em&gt; costes.&lt;/p&gt;
&lt;p&gt;La empresa tenía un equipo de programadores que habían ido desarrollando unos sistemas propios a lo largo del tiempo. Hasta el 2024, esta empresa computaba los salarios de estos equipos de desarrollo como gasto (en salarios). Pero en 2024 necesitaba &lt;em&gt;aflorar&lt;/em&gt; beneficios de alguna parte. Así que creó en sus cuentas una partida nueva de inversión de varios millones de euros que recogía el presunto valor de los sistemas de &lt;em&gt;software&lt;/em&gt;. Desde una perspectiva contable, esa imputación de valor representaba un incremento en el valor de la empresa &amp;mdash;sobre el papel, sin que existiese ningún tipo de transacción económica material que la sustentase&amp;mdash; de varios millones que compensaban las pérdidas extraordinarias y permitían arrojar un beneficio neto modesto pero positivo.&lt;/p&gt;
&lt;p&gt;Esos millones de euros, además, se agregan al PIB como inversión. Efectivamente, hasta los años 90, el &lt;em&gt;software&lt;/em&gt; usado por las empresas era considerado un gasto intermedio, como el papel o la electricidad que consumen las empresas, que no sumaba directamente al PIB final para evitar la doble agregación. A partir de alrededor de 2000, comenzó a permitirse contabilizar la inversión en &lt;em&gt;software&lt;/em&gt; como «formación bruta de capital fijo». Pero alrededor de 2015 se amplió el concepto de &lt;em&gt;intangibles&lt;/em&gt; para incluir partidas adicionales, lo que hizo, por ejemplo, que el PIB de EEUU creciese de repente un 3.6% y el español alrededor del 1.2%. Además, parece que a partir de muy pronto, se espera que el valor de las bases de datos y la información generada por la IA empiece a computarse como inversión, lo que volverá a inflar las cifras del PIB de los países más avanzados.&lt;/p&gt;
&lt;p&gt;Así las cosas, el concepto de «PIB fantasma» &amp;mdash;inflado, además, por la implantación masiva de sistemas de IA en el escenario del artículo mencionado más arriba&amp;mdash; no parece tan descabellado.&lt;/p&gt;</description></item><item><title>Notas (13) sobre ciencia: de la confianza en los resultados científicos al declive de la ciencia alemana</title><link>https://datanalytics.com/2026/03/16/cortos-ciencia/</link><pubDate>Mon, 23 Mar 2026 00:00:00 +0000</pubDate><guid>https://datanalytics.com/2026/03/16/cortos-ciencia/</guid><description>&lt;p&gt;Tyler Cowen plantea la pregunta del millón: &lt;a href="https://marginalrevolution.com/marginalrevolution/2025/12/which-published-results-can-you-trust.html"&gt;¿En qué resultados científicos (publicados) podemos confiar?&lt;/a&gt;. Supongo que la respuesta está condicionada por el hecho de que es economista y que está anclado en su disciplina, que no es precisamente la química o las matemáticas.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://deevybee.blogspot.com/2025/11/the-inner-workings-of-paper-mill.html"&gt;Csaba Szabo describe el funcionamiento interno de las «fábricas de artículos científicos»&lt;/a&gt;, que venden autorías y manipulan datos para lograr publicaciones.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://sciencepolicyinsider.substack.com/p/the-hypothesis-trap"&gt;&lt;em&gt;The Hypothesis Trap&lt;/em&gt;&lt;/a&gt; nos recuerda una vez más cómo los científicos tienden a apegarse emocionalmente a sus propias hipótesis, lo que genera sesgos y resistencia al cambio.&lt;/p&gt;
&lt;p&gt;Tres aportaciones recientes y mutuamente contradictorias sobre el &lt;a href="https://es.wikipedia.org/wiki/S%C3%ADndrome_de_Kessler"&gt;síndrome de Kessler&lt;/a&gt; (un escenario en el cual el volumen de basura espacial orbitando la tierra alcanza niveles tan altos que haría inevitable la destrucción temprana de los satélites que quisiéramos lanzar al espacio):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=8ag6gSzsGbc"&gt;La de Sabine Hossenfelder&lt;/a&gt;, que advierte sobre el riesgo inminente de colisiones por la saturación orbital.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.dshr.org/2026/02/the-kessler-syndrome.html"&gt;La de David Rosenthal&lt;/a&gt;, que analiza la historia y los fallos regulatorios en la gestión de la basura espacial.&lt;/li&gt;
&lt;li&gt;Y &lt;a href="https://www.johndcook.com/blog/2026/02/02/satellites-have-a-lot-of-room/"&gt;la de John D. Cook&lt;/a&gt;, que sostiene que el espacio disponible es aún inmenso.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="https://statmodeling.stat.columbia.edu/2026/01/28/ok-i-reread-that-classic-paper-by-paul-meehl-and/"&gt;Andrew Gelman reflexiona sobre un trabajo clásico de Paul Meehl&lt;/a&gt; acerca de una paradoja metodológica: mientras que en física la precisión dificulta validar una teoría, en psicología la facilita. Esto sucede porque en ciencias sociales casi cualquier hipótesis nula es falsa si se mide con suficiente detalle.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://substack.com/inbox/post/181983552"&gt;&lt;em&gt;Why I&amp;rsquo;m taking Science Policy Insider International&lt;/em&gt;&lt;/a&gt; discute los aspectos culturales de la ciencia y, en particular, cómo diferentes culturas mantienen criterios distintos sobre cómo crear y validar conocimiento científico.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.overcomingbias.com/p/culture-is-coordination"&gt;Robin Hanson sugiere que la cultura debe entenderse como un mecanismo de coordinación&lt;/a&gt; que permite a los individuos actuar de forma coherente en grupo. Apunta cómo muchas convenciones culturales no son necesariamente óptimas, pero su valor reside en que todos las sigan para evitar conflictos.&lt;/p&gt;
&lt;p&gt;Otro &lt;a href="https://www.youtube.com/watch?v=JvgaZ_myFE4"&gt;vídeo de Sabine Hossenfelder&lt;/a&gt; sobre cómo la IA ha pasado de analizar datos a proponer teorías y derivar resultados complejos en física de partículas. Plantea un futuro hipotético en el que el papel del físico humano podría mutar de descubridor a intérprete de los modelos generados por la IA.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://radiandando.es/2026/03/04/pseudoterapias-y-anti-5g-en-la-facultad-de-medicina-de-la-ucm/"&gt;Pseudoterapias y anti-5G en la Facultad de Medicina de la UCM&lt;/a&gt; critica que instituciones oficiales den cabida a teorías sin base científica que confunden tanto al alumnado como al público general.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://realimaginedprogress.substack.com/p/what-if-germany-isnt-very-good-at"&gt;&lt;em&gt;What if Germany isn’t very good at research?&lt;/em&gt;&lt;/a&gt; cuestiona la premisa habitual de que Alemania destaca en investigación científica. Sostiene que lo hace todavía en áreas alejadas de las aplicaciones tecnológicas (como el cambio climático o arqueología) pero flaquea en aquellas que tienen un impacto potencial en la economía. Alemania ha dejado de ser ejemplo de nada.&lt;/p&gt;</description></item><item><title>El análisis de la supervivencia aplicado al tiempo de resolución de las conjeturas matemáticas más famosas</title><link>https://datanalytics.com/2026/03/19/supervivencia-conjeturas-matematicas/</link><pubDate>Thu, 19 Mar 2026 00:00:00 +0000</pubDate><guid>https://datanalytics.com/2026/03/19/supervivencia-conjeturas-matematicas/</guid><description>&lt;p&gt;Se publicó hace un tiempo un &lt;a href="https://aiimpacts.org/resolutions-of-mathematical-conjectures-over-time/"&gt;análisis bastante curioso sobre la supervivencia de las conjeturas matemáticas&lt;/a&gt; a lo largo del tiempo. Es de agradecer que su autora haga explícitas las objeciones que a cualquiera se le ocurren sobre el universo muestral y el método de muestreo:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Estamos utilizando los tiempos de resolución de las &lt;em&gt;conjeturas recordadas&lt;/em&gt; como un &lt;em&gt;proxy&lt;/em&gt; de los tiempos de resolución de todas las conjeturas. El tiempo de resolución de las conjeturas recordadas puede estar sesgado de varias maneras: las conjeturas antiguas quizá tengan más probabilidades de ser recordadas si han sido resueltas que si no lo han sido; las conjeturas resueltas muy recientemente probablemente también tengan más probabilidades de ser recordadas (aunque esto solo importa porque la tasa a la que se formulan conjeturas probablemente ha cambiado con el tiempo); y las conjeturas que fueron especialmente difíciles de resolver también pueden resultar más notables. El último siglo contiene pocos datos, lo que hace particularmente fácil que las estimaciones correspondientes sean inexactas.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Así que no abundaré más sobre el asunto.&lt;/p&gt;
&lt;p&gt;Lo curioso es cómo ajusta la función de supervivencia, supongo que condicionada por el hecho de usar Google Sheets:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Calcula la curva de Kaplan-Meier, la aproximación empírica a la función de supervivencia.&lt;/li&gt;
&lt;li&gt;Usa la función &lt;code&gt;LOGEST&lt;/code&gt; de Google Sheets, para ajustar $k = a_1 \times a_2^t$.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;La función &lt;code&gt;LOGEST&lt;/code&gt; ajusta esos datos tomando logaritmos y ajustando el modelo lineal (OLS) correspondiente, $\log k = \log a_1 + t \log a_2$. Así obtiene la aproximación&lt;/p&gt;
&lt;p&gt;$$S(t) \approx 0.9668239749 \times 0.9940802592^t = 0.9668239749 \exp(-0.005937332 t).$$&lt;/p&gt;
&lt;p&gt;La &lt;em&gt;vida media&lt;/em&gt; de las conjeturas matemáticas la estima entonces en $116.74$ años (el resultado de $\log(.5) / \log(0.9940802592)$), aunque, en puridad, debería haber hecho&lt;/p&gt;
&lt;p&gt;$$(\log(.5) - \log(0.9668239749) )/ \log(0.9940802592) = 111.06$$&lt;/p&gt;
&lt;p&gt;Con R, el problema podría resolverse así:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-r" data-lang="r"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;survival&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;raw&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="nf"&gt;read.csv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;datos.csv&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;dat&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="nf"&gt;data.frame&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;time&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;raw&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;Length&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;dat&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;censor&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="nf"&gt;is.na&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dat&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;dat&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;time[dat&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;censor]&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="n"&gt;raw&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;Years.ago.posed[dat&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;censor]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;dat&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;status&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;dat&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;status[dat&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;censor]&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;dat&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;time2&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="n"&gt;dat&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;time&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;dat&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;time2[dat&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;time2&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="n"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="m"&gt;.01&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;m0&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="nf"&gt;survreg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;Surv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;time2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;status&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;~&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dist&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;exponential&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;dat&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;El coeficiente del modelo es $5.07398$, que corresponde al parámetro $\lambda$ de la exponencial $1 / \exp(5.07398) = 0.006257457$ y, por tanto, la función de supervivencia&lt;/p&gt;
&lt;p&gt;$$S(t) = \exp(-0.006257457 t).$$&lt;/p&gt;
&lt;p&gt;La estimación de la semivida es $(\log 2) / 0.006257457 = 110.77$ años.&lt;/p&gt;
&lt;p&gt;El análisis anterior me sugiere dos comentarios. El primero es que resulta muy instructivo proceder por primeros principios: estimar la curva de supervivencia primero, tratar de ajustarla después de la mejor manera posible. A veces se nos olvida que, en el fondo, estamos haciendo &lt;em&gt;precisamente&lt;/em&gt; eso cuando usamos &lt;code&gt;survreg&lt;/code&gt; directamente. El otro &amp;mdash;como este análisis ilustra fehacientemente&amp;mdash; es cómo reinventamos la rueda innecesariamente tantas veces.&lt;/p&gt;</description></item><item><title>Notas (12) sobre economía: paradojas en la inversión en educación y algunos asuntos más</title><link>https://datanalytics.com/2026/03/16/cortos-economia/</link><pubDate>Mon, 16 Mar 2026 00:00:00 +0000</pubDate><guid>https://datanalytics.com/2026/03/16/cortos-economia/</guid><description>&lt;p&gt;Sobre la evolución relativa de las economías de Europa y los EEUU, dos visiones contrapuestas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.worksinprogress.news/p/why-europe-has-stagnated"&gt;&lt;em&gt;Why Europe has stagnated&lt;/em&gt;&lt;/a&gt;, de Works In Progress.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://paulkrugman.substack.com/p/europe-v-america-whos-really-winning"&gt;&lt;em&gt;Europe v America: Who’s Really Winning?&lt;/em&gt;&lt;/a&gt;, de Paul Krugman.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="https://www.slowboring.com/p/is-a-new-teacher-better-off-in-mississippi"&gt;Matthew Yglesias recoge la siguiente paradoja&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;El gasto en educación nos presenta una especie de paradoja. Sabemos, a partir de estudios a pequeña escala, que los incrementos marginales en el gasto escolar producen resultados positivos para los niños. En particular, intervenciones bastante prosaicas, como mejorar los sistemas de climatización de los colegios, mejoran el rendimiento de los estudiantes, especialmente en centros con alumnado de bajo nivel socioeconómico.&lt;/p&gt;
&lt;p&gt;Así que parece que, para muchas escuelas, existe un “fruto al alcance de la mano” que podría abordarse de manera al menos parcialmente eficaz mediante una inyección de dinero.&lt;/p&gt;
&lt;p&gt;Por otro lado, si se observan cortes transversales a gran escala de las escuelas estadounidenses, simplemente no es cierto que niveles más altos de gasto estén fuertemente relacionados con los resultados de los estudiantes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Existe una larga tradición de modelos de crecimiento económico que se examinan grandes variables agregadas como la inversión, la depreciación, el consumo, etc. Otros más modernos se atreven a incluir otras más sutiles como la innovación, el conocimiento, etc. e incluso otros tan lábiles como la cultura o la calidad institucional. The Economist, &lt;a href="https://www.economist.com/finance-and-economics/2026/03/05/to-understand-why-countries-grow-look-at-their-firms"&gt;aquí&lt;/a&gt;, se hace eco de investigaciones recientes que examinan el comportamiento y el crecimiento de las empresas así como las barreras que estas encuentran para desarrollarse como determinantes del crecimiento económico.&lt;/p&gt;
&lt;p&gt;Asterisk ha publicado &lt;a href="https://asteriskmag.com/issues/13/the-institute-behind-taiwan-s-chip-dominance"&gt;&lt;em&gt;The Institute Behind Taiwan’s Chip Dominance&lt;/em&gt;&lt;/a&gt; donde argumenta que el éxito de la industria de semiconductores de Taiwán se debe en gran medida al Instituto de Investigación de Tecnología Industrial (ITRI), un organismo que se creó para facilitar la transferencia de tecnología y que estuvo detrás de la creación de gigantes como TSMC mediante una colaboración estrecha entre el gobierno y el sector privado. Además, le ocurrió algo que no es para nada habitual tratándose de instituciones públicas: una vez cumplió su cometido, fue disuelto.&lt;/p&gt;
&lt;p&gt;Para argumentar que la tecnología no acaba con los trabajos manuales se suele recurrir al caso de los cajeros (humanos) en los bancos cuando se introdujeron los automáticos: el nivel de empleo no se vio afectado. Sin embargo, esa no es toda la historia, como explica &lt;a href="https://davidoks.blog/p/why-the-atm-didnt-kill-bank-teller"&gt;&lt;em&gt;Why the ATM didn’t kill bank teller jobs, but the iPhone did&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Hannah Ritchie, en &lt;a href="https://hannahritchie.substack.com/p/china-vs-us-electricity"&gt;&lt;em&gt;Does China have a huge electricity advantage over the United States?&lt;/em&gt;&lt;/a&gt; muestra gráficas de la evolución del consumo de electricidad global, per cápita y per cápita en la industria de los EEUU, China y Europa. Se aprende mucho de ellas.&lt;/p&gt;
&lt;p&gt;En el boletín de finanzas de Matt Levine se mencionan a veces noticias relacionadas con el contenido de estas páginas. Por ejemplo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;En &lt;a href="https://www.bloomberg.com/opinion/newsletters/2026-03-10/bill-ackman-wants-your-money-again"&gt;este&lt;/a&gt; se habla de cómo, si todo el mundo le pide consejos de inversión a los mismos LLMs, todo el mundo comprará las mismas acciones, por lo que podrían aparecer correlaciones anómalas en los mercados.&lt;/li&gt;
&lt;li&gt;En &lt;a href="https://www.bloomberg.com/opinion/newsletters/2026-03-11/private-credit-gets-marked-down"&gt;este otro&lt;/a&gt; menciona un artículo en el que se propone el uso de información bursátil de alta frecuencia para generar números aleatorios de alta calidad.&lt;/li&gt;
&lt;li&gt;Finalmente, &lt;a href="https://www.bloomberg.com/opinion/newsletters/2026-03-12/lever-the-predictions"&gt;este&lt;/a&gt; discute una peculiar variable para el análisis del riesgo de crédito de empresas: el ratio entre el precio del reloj del CEO y su vivienda.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Los LLMs y la devaluación del conocimiento legible</title><link>https://datanalytics.com/2026/03/12/llm-conocimiento-legible/</link><pubDate>Thu, 12 Mar 2026 00:00:00 +0000</pubDate><guid>https://datanalytics.com/2026/03/12/llm-conocimiento-legible/</guid><description>&lt;p&gt;A la hora de evaluar el potencial impacto de los LLMs en el mercado laboral, tanto en general como en el más concreto de la ciencia de datos y la estadística, es conveniente distinguir entre tipos de conocimiento. En esta entrada voy a considerar una dimensión muy particular en la que la inteligencia de los LLMs y la humana operan de manera muy distinta: la de la legibilidad de la información y el conocimiento.&lt;/p&gt;
&lt;p&gt;Es &lt;em&gt;legible&lt;/em&gt; una información o unidad de conocimiento cuando es universal, pública, fácilmente accesible y tiene &lt;em&gt;contornos regulares&lt;/em&gt;. Son perfectamente legibles el teorema de Pitágoras, cómo leer ficheros JSON en Python o el primer artículo de la constitución española.&lt;/p&gt;
&lt;p&gt;Son &lt;em&gt;ilegibles&lt;/em&gt; los estatutos de mi comunidad de vecinos, las intenciones últimas de ese mensaje de Slack tan críptico o si le intereso a esa chica que me gusta. Hacen ilegible a una información aspectos tales como:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Que no se sepa dónde está.&lt;/li&gt;
&lt;li&gt;Que los agentes tengan interés en ocultarla, tergiversarla o plantar señales engañosas respecto a ella (por ejemplo, en una negociación).&lt;/li&gt;
&lt;li&gt;Que sea particular de un grupo pequeño y cerrado de personas.&lt;/li&gt;
&lt;li&gt;Que sea contrafáctica (como la curva de la demanda de un producto).&lt;/li&gt;
&lt;li&gt;Que sea conocimiento tácito, ese al que el hermano de Polanyi se refería cuando decía que &lt;em&gt;sabemos más de lo que podemos expresar&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Los LLMs están entrenados con información altamente legible y la utilizan eficazmente. Usando términos prestados de Kahneman, para los LLMs, el equivalente al sistema 1 de los humanos, sería ese que razona y argumenta sobre información legible. Es lo que hacen de manera más natural y eficiente.&lt;/p&gt;
&lt;p&gt;Sin embargo, cuando un LLM se enfrenta a un problema que requiere información no legible, tiene que activar su sistema 2 (de haberlo): usar información contextual de sus &lt;em&gt;prompts&lt;/em&gt;, recurrir a técnicas como el RAG, etc. Utilizan un modo de pensamiento distinto que exige, además, la colaboración de herramientas externas que coloquen en su contexto información de la que no disponen de serie. Además, esto solo puede ocurrir cuando esta información está disponible y puede ser explicitada de alguna manera: existe un buscador que explora una base de conocimiento local, etc. Pero como se ha dicho más arriba, existe información muy ilegible e inasequible a la automatización.&lt;/p&gt;
&lt;p&gt;Luis Garicano, en su &lt;a href="https://www.siliconcontinent.com/p/a-new-years-letter-to-a-young-person"&gt;carta de año nuevo &lt;em&gt;a un joven&lt;/em&gt; del 2 de enero de 2026&lt;/a&gt;, le recomienda buscar &lt;em&gt;messy jobs&lt;/em&gt;, esos que involucran conocimiento ilegible, y añade:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;El jefe de ingeniería de una planta de fabricación [&amp;hellip;] debe decidir a quién contratar, qué máquinas comprar, cómo distribuirlas en la planta, negociar con los trabajadores y los directivos las soluciones propuestas y movilizar los recursos para implementarlas. Esa tarea es extraordinariamente difícil de automatizar. La IA convierte el conocimiento codificado en una &lt;em&gt;commodity&lt;/em&gt;: libros de texto, demostraciones, sintaxis. Pero no interactúa de manera significativa con el conocimiento local, que es donde se crea una parte mucho mayor del valor en los trabajos complejos y desestructurados.&amp;quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Los matemáticos (y estadísticos, científicos de datos y científicos e ingenieros en general) hemos tenido trabajo históricamente ocupándonos de tareas que tensaban hasta el extremo el sistema 2 de los legos (o, que directamente, quedaban más allá de su potencia). Pero lo que es sistema 2 para los humanos, es sistema 1 para las máquinas (no siempre, en puridad, pero existe una correlación muy alta) y es, precisamente, el que se va a ver devaluado hasta el extremo.&lt;/p&gt;
&lt;p&gt;Parece que tendremos que buscarnos un trabajo que le hubiese parecido bien a Jane Jacobs, porque el resto será todo para Claude.&lt;/p&gt;
&lt;h2 id="coda"&gt;Coda&lt;/h2&gt;
&lt;p&gt;Le he pedido a un LLM que evalúe los puntos flojos de la discusión anterior y ha señalado, esencialmente, dos:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Que no he usado &lt;em&gt;legibilidad&lt;/em&gt; en exactamente los mismos términos que usaba James C. Scott en &lt;a href="https://en.wikipedia.org/wiki/Seeing_Like_a_State"&gt;&lt;em&gt;Seeing Like a State&lt;/em&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Que no hay diferencia fundamental entre los que llamo sistema 1 y sistema 2 de razonamiento de los LLMs.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;No voy a entrar en la primera porque creo haber explicado lo suficientemente bien para los buenos entendedores lo que quiero llamar aquí &lt;em&gt;legible&lt;/em&gt;. De todos modos, el concepto de &lt;em&gt;legibilidad&lt;/em&gt; que uso está más próximo &lt;a href="https://en.wikipedia.org/wiki/The_Use_of_Knowledge_in_Society"&gt;al de Hayek&lt;/a&gt; que al de Scott.&lt;/p&gt;
&lt;p&gt;Pero sí que quiero abundar en el segundo. En mi cerebro (humano) la información &lt;em&gt;legible&lt;/em&gt; y &lt;em&gt;no legible&lt;/em&gt; se procesa de manera similar: unas neuronas saben del teorema de Pitágoras; otras la distancia entre mi cuarto y la cocina y otras reconocen la cara de la portera del edificio. Aunque esto pudiera no ser cierto y pudiese motivar la crítica de un neurólogo, es cierto que sentimos estar activando mecanismos distintos de pensamiento para razonar sobre lo abstracto y lo concreto.&lt;/p&gt;
&lt;p&gt;Sin embargo, en un LLM, el conocimiento de lo legible está contenido en un sitio, los pesos que se ajustan durante su periodo de entrenamiento, en tanto que lo ilegible (o contextual):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tiene que proporcionarse en el contexto o &lt;em&gt;prompt&lt;/em&gt; extendido, por lo que tiene una forma distinta: &lt;em&gt;tokens&lt;/em&gt; vs pesos.&lt;/li&gt;
&lt;li&gt;Tiene que ser proporcionado por herramientas externas al LLM, que lo integran en el &lt;em&gt;prompt&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;La capacidad de razonar sobre los fenómenos contextuales está condicionada por el proceso de aportación de información contextual.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Además, un LLM es capaz de albergar en sus pesos cantidades ingentes de información; sin embargo, su capacidad para almacenar información local está condicionada por el tamaño de su contexto, muchos órdenes de magnitud inferior. Algo que no ocurre con los humanos (hasta el extremo de que, podría decirse, el 99% del conocimiento del 99% de la población es meramente contextual).&lt;/p&gt;</description></item><item><title>Notas (11) sobre LLMs: sistemas de productividad personal, aplicaciones para la investigación, etc.</title><link>https://datanalytics.com/2026/03/09/cortos-llms/</link><pubDate>Mon, 09 Mar 2026 00:00:00 +0000</pubDate><guid>https://datanalytics.com/2026/03/09/cortos-llms/</guid><description>&lt;p&gt;Con cada nueva tecnología, aparece al menos un estudio que la usa para tratar de &lt;a href="https://datanalytics.com/tags/frenolog%C3%ADa/"&gt;revivir la frenología&lt;/a&gt;. El turno ahora es para &lt;a href="https://www.nber.org/papers/w34808"&gt;&lt;em&gt;AI Personality Extraction from Faces: Labor Market Implications&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;El economista &lt;a href="https://www.grumpy-economist.com/p/refine"&gt;John Cochrane ha probado Refine&lt;/a&gt;, un agente diseñado específicamente para revisar críticamente artículos académicos, y nos cuenta cómo los comentarios recibidos son mejores que los de la mayoría de los revisores humanos, destacando la capacidad de Refine para identificar contradicciones y lagunas.&lt;/p&gt;
&lt;p&gt;Hay gente publicando la descripción de sus sistemas de productividad (personal, laboral, etc.) basados en LLMs, entre ellos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://marginalrevolution.com/marginalrevolution/2026/01/the-molly-cantillon-manifesto-a-personal-panopticon.html"&gt;Molly Cantillon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://psantanna.com/claude-code-my-workflow/"&gt;Pedro Sant&amp;rsquo;Anna&lt;/a&gt;, más orientado al trabajo académico.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://x.com/karpathy/status/2024987174077432126"&gt;A. Karpathy&lt;/a&gt; sobre sus inicios con los &lt;em&gt;claws&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Simon Willison ha comenzado a escribir &lt;a href="https://simonwillison.net/guides/agentic-engineering-patterns/"&gt;&lt;em&gt;Agentic Engineering Patterns&lt;/em&gt;&lt;/a&gt;, una colección de técnicas para exprimir al máximo herramientas tales como Claude Code.&lt;/p&gt;
&lt;p&gt;En &lt;a href="https://www.daniellitt.com/blog/2026/2/20/mathematics-in-the-library-of-babel"&gt;&lt;em&gt;Mathematics in the Library of Babel&lt;/em&gt;&lt;/a&gt;, Daniel Litt reflexiona sobre cómo los LLMs están transformando la investigación matemática, facilitando la demostración de lemas rutinarios, pero también amenazando con &lt;em&gt;contaminar&lt;/em&gt; el campo con demostraciones plausibles pero incorrectas, así como los problemas que esto generará en la disciplina en tanto que se desarrollan herramientas que industrialicen el proceso de verificación.&lt;/p&gt;
&lt;p&gt;Por su parte, Donald Knuth ha escrito &lt;a href="https://www-cs-faculty.stanford.edu/~knuth/papers/claude-cycles.pdf"&gt;&lt;em&gt;Claude’s Cycles&lt;/em&gt;&lt;/a&gt;, que arranca así:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;¡Increíble! ¡Increíble! Ayer me enteré de que un problema abierto en el que había estado trabajando durante varias semanas acababa de ser resuelto por Claude Opus 4.6.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="https://www.niemanlab.org/2026/02/how-the-new-york-times-uses-a-custom-ai-tool-to-track-the-manosphere/"&gt;&lt;em&gt;How The New York Times uses a custom AI tool to track the “manosphere”&lt;/em&gt;&lt;/a&gt;, que describe una herramienta construida internamente en el NYT y que usa LLMs para transcribir y resumir los episodios de docenas de &lt;em&gt;podcasts&lt;/em&gt; de la &lt;em&gt;alt-right&lt;/em&gt;. Que no será muy distinto del que tengo yo en casa para estar al tanto de todos los blogs que sigo.&lt;/p&gt;
&lt;p&gt;Emilio Torres escribe &lt;a href="https://torres.epv.uniovi.es/centon/sed-contra-llm.html"&gt;&lt;em&gt;Sed Contra y los LLM&lt;/em&gt;&lt;/a&gt;, una réplica a una entrada mía de hace un tiempo, &lt;a href="https://datanalytics.com/2026/02/04/llms-derecho/"&gt;&lt;em&gt;Más sobre por qué la IA generativa es menos útil para lidiar con cuestiones jurídicas que en otros ámbitos&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Chris Walker, en &lt;a href="https://cpwalker.substack.com/p/tacit-knowledge-and-the-saaspocalypse"&gt;&lt;em&gt;Tacit Knowledge and the SaaSpocalypse&lt;/em&gt;&lt;/a&gt;, aporta una interpretación &lt;em&gt;desde el terreno&lt;/em&gt; de cuál pudiera ser el efecto de los LLMs y la automatización en las actividades económicas que requieren &lt;em&gt;conocimiento&lt;/em&gt;. Distingue entre el conocimiento general y el contextual y discute el desigual impacto de los LLMs sobre ambos. Resuenan en él ecos del &lt;a href="https://www.siliconcontinent.com/p/a-new-years-letter-to-a-young-person"&gt;artículo de Luis Garicano sobre los &lt;em&gt;messy jobs&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Y dos artículos sobre la problemática relación entre la biología y la IA:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El primero, &lt;a href="https://www.astralcodexten.com/p/what-happened-with-bio-anchors"&gt;&lt;em&gt;What Happened With Bio Anchors?&lt;/em&gt;&lt;/a&gt;, de Scott Alexander, discute el uso de las analogías biológicas &amp;mdash;los &lt;em&gt;bio anchors&lt;/em&gt;&amp;mdash; para realizar estimaciones a largo plazo de la efectividad de los LLMs y hasta qué punto las predicciones que se hicieron basándose en ellas resultaron acertadas.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://asteriskmag.com/issues/13/the-sweet-lesson-of-neuroscience"&gt;&lt;em&gt;The Sweet Lesson of Neuroscience&lt;/em&gt;&lt;/a&gt; propone nuevas analogías con el cerebro humano como modelo potencial para implementar políticas de seguridad para la IA. Sugiere que, imitando los mecanismos biológicos de recompensas sociales, los investigadores podrían desarrollar sistemas de inteligencia artificial intrínsecamente alineados con los valores humanos.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>«Peak population» por municipios</title><link>https://datanalytics.com/2026/03/05/peak-population-municipios/</link><pubDate>Thu, 05 Mar 2026 00:00:00 +0000</pubDate><guid>https://datanalytics.com/2026/03/05/peak-population-municipios/</guid><description>&lt;p&gt;El otro día me entretuve en crear&lt;/p&gt;
&lt;p&gt;&lt;img alt="Peak population municipios españa" loading="lazy" src="https://datanalytics.com/img/2026/peak-population-municipios-00.png#center"&gt;&lt;/p&gt;
&lt;p&gt;tras ver&lt;/p&gt;
&lt;p&gt;&lt;img alt="Peak population municipios eeuu" loading="lazy" src="https://datanalytics.com/img/2026/peak-population-municipios-01.jpeg#center"&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://x.com/paulg/status/2025327977471316030"&gt;en Twitter&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Muestra, municipio a municipio, el año (censurado por la izquierda en 1996) en el que se alcanzó la población máxima de acuerdo con los datos del padrón.&lt;/p&gt;
&lt;p&gt;Notas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Como he dicho, la API del INE solo ofrece datos de los últimos 30 años. Los datos anteriores, quién sabrá dónde estarán.&lt;/li&gt;
&lt;li&gt;He usado el término &lt;em&gt;censura&lt;/em&gt; en su acepción estadística.&lt;/li&gt;
&lt;li&gt;No me he entretenido en representar Canarias. Lo siento.&lt;/li&gt;
&lt;li&gt;Gran parte del código ha sido desarrollado por Claude.&lt;/li&gt;
&lt;li&gt;Claude ha sabido, de hecho, identificar la llamada a la API del INE necesaria para bajar los datos correspondientes.&lt;/li&gt;
&lt;li&gt;El INE ha puesto a disposición de los usuarios un paquete, &lt;a href="https://cran.r-project.org/web/packages/ineapir/index.html"&gt;&lt;code&gt;ineapir&lt;/code&gt;&lt;/a&gt; que facilita la descarga de datos de sus APIs. Bien.&lt;/li&gt;
&lt;li&gt;Los límites de los municipios los he bajado en formato GeoJSON del portal del Instituto Geográfico Nacional.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Y el código, a continuación (por si alguien quiere seguir jugando con él).&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-r" data-lang="r"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ineapir&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sf&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;plyr&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ggplot2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;df&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="nf"&gt;get_data_table&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;idTable&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;29005&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;tip&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;AM&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;nlast&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;verbose&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;TRUE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;df_total&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="nf"&gt;[grep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Total. Total habitantes. Personas.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;Nombre&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="n"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;df_total&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="n"&gt;df_total&lt;/span&gt;&lt;span class="nf"&gt;[sapply&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df_total&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;Data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;nrow&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="kr"&gt;in&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="nf"&gt;nrow&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df_total&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;df_total&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;Data[[i]]&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;Nombre&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="n"&gt;df_total&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;MetaData[[i]]&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;Nombre[1]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;df_total&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;Data[[i]]&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;Codigo&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="n"&gt;df_total&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;MetaData[[i]]&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;Codigo[1]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;tmp&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="nf"&gt;do.call&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;rbind&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;df_total&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;Data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;tmp&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="nf"&gt;ddply&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tmp&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;.(Nombre&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Codigo&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;rank&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;rank&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Valor&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ties.method&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;last&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;tmp&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="n"&gt;tmp[tmp&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;tmp&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="n"&gt;tmp[&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Anyo&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Valor&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Nombre&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Codigo&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="n"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;colnames&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tmp&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;year&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;pop&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;CODIGOINE&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;municipios&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="nf"&gt;st_read&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Municipios_-7023933172321596289.geojson&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;tmp&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="nf"&gt;merge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;municipios&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;tmp&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;tmp&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="n"&gt;tmp[tmp&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;CODNUT1&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;ES7&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;ggplot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tmp&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;geom_sf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;aes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fill&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;year&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;color&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;NA&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;scale_fill_viridis_c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Año&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;labs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;title&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Año en que los municipios españoles alcanzaron su población máxima&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;subtitle&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Excluyendo Canarias · Período 1996–2023&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;caption&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Fuente: INE Padrón Municipal · Límites: IGN/CNIG CC-BY 4.0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;theme_void&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;theme&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;plot.title&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;element_text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;size&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;16&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;face&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;bold&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;margin&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;)),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;plot.subtitle&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;element_text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;size&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;11&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;color&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;grey40&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;margin&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;plot.caption&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;element_text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;size&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;color&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;grey60&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;hjust&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;plot.margin&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Notas (10) sobre economía: del auge de la IA a los artefactos de la paradoja de Simpson los argumentos alrededor de la productividad</title><link>https://datanalytics.com/2026/03/02/cortos-econom%C3%ADa/</link><pubDate>Mon, 02 Mar 2026 00:00:00 +0000</pubDate><guid>https://datanalytics.com/2026/03/02/cortos-econom%C3%ADa/</guid><description>&lt;p&gt;&lt;em&gt;&lt;a href="https://marginalrevolution.com/marginalrevolution/2026/01/measuring-efficiency-and-equity-framing-in-economics-research.html"&gt;Measuring Efficiency and Equity Framing in Economics Research&lt;/a&gt;&lt;/em&gt;. Tyler Cowen glosa un artículo que utiliza LLMs para analizar más de 27k artículos económicos publicados entre 1950 y 2021 para concluir que el interés por la eficiencia alcanzó su punto máximo a finales de los años ochenta para ser progresivamente desplazado por el interés en la equidad.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;a href="https://nicholasdecker.substack.com/p/the-economist-as-reporter"&gt;The Economist As Reporter&lt;/a&gt;&lt;/em&gt;. Nicholas Decker argumenta que la IA acelerará radicalmente las tareas mecánicas de la investigación económica, liberando a los economistas para hacer algo más parecido al periodismo de investigación: identificar problemas reales, construir argumentos empíricos rigurosos y comunicar los hallazgos al público.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;a href="https://austinvernon.substack.com/p/speed-can-reindustrialize-america"&gt;Speed Can Reindustrialize America&lt;/a&gt;&lt;/em&gt;. Austin Vernon sostiene que el problema del sector industrial estadounidense no radica en la producción en masa sino en los sectores en los que es necesario fabricar pequeños volúmenes de piezas en plazos cortos y a un precio razonable y lo achaca a los &lt;em&gt;costes blandos&lt;/em&gt;, principalmente burocráticos.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;a href="https://www.construction-physics.com/p/do-commodities-get-cheaper-over-time"&gt;Do Commodities Get Cheaper Over Time?&lt;/a&gt;&lt;/em&gt; El análisis histórico de los precios de más de 100 materias primas revela que los productos agrícolas revela el abaratamiento pronunciado de los productos agrícolas y el leve encarecimiento de los combustibles fósiles, aunque estas tendencias no están tan claras desde aproximadamente el año 2000. El autor especula que el factor determinante en el abaratamiento es el grado en que la producción de una materia prima se asemeja a un proceso de manufactura industrial.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;a href="https://www.economist.com/finance-and-economics/2026/02/22/the-ai-productivity-boom-is-not-here-yet"&gt;The AI productivity boom is not here (yet)&lt;/a&gt;&lt;/em&gt;. Ya hemos hablado antes en estas páginas sobre la interpretación de las últimas cifras de producción y empleo en los EEUU: según los últimos avances, las primeras han crecido muy por encima de las segundas. Lo que significa, de no haber desviaciones estadísticas, que el cociente, la «productividad», ha crecido y muchos expertos lo asocian al impacto de la IA en la economía. Pero The Economist no está del todo seguro &amp;mdash;como tampoco lo está el autor de estas líneas&amp;mdash; y cree que es más probable que se deba al &lt;em&gt;efecto composición&lt;/em&gt; (o paradoja de Simpson).&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;a href="https://www.readjunto.com/p/the-cato-institute-is-disemboweling"&gt;The Cato Institute Is Disemboweling America&lt;/a&gt;&lt;/em&gt;. El motivo es un estudio publicado por el Cato Institute &amp;mdash;de inclinaciones &lt;em&gt;libertarias&lt;/em&gt;&amp;mdash; que defiende que la inmigración tiene un efecto neto positivo para las arcas públicas de los EEUU. Todos esgrimen números y acusan a los otros de realizar &lt;em&gt;ejercicios ideológicos disfrazados de investigación empírica&lt;/em&gt;. ¿Qué cosa será la cierta? ¿Importa acaso?&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;a href="https://nicholasdecker.substack.com/p/yes-immigrants-must-make-us-richer"&gt;Yes, Immigrants Must Make Us Richer&lt;/a&gt;&lt;/em&gt;. Nicholas Decker tercia en el debate del párrafo anterior argumentando que el supuesto estándar de rendimientos constantes a escala en los modelos económicos sobre inmigración es «un sinsentido evidente», porque la especialización, las ideas y los costes fijos implican necesariamente rendimientos crecientes. En ese sentido, asimila la inmigración al crecimiento demográfico &lt;em&gt;endógeno&lt;/em&gt; (por llamarlo de alguna manera).&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;a href="https://davidoks.blog/p/extreme-poverty"&gt;The era of declining global poverty is over&lt;/a&gt;&lt;/em&gt;. Se prevé que la pobreza extrema, tras décadas de descensos continuos, comenzará a crecer a partir de 2030 debido al estancamiento económico y el crecimiento demográfico en el África subsahariana.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;a href="https://derechomercantilespana.blogspot.com/2026/02/es-usurario-un-interes-en-tarjetas.html"&gt;Es usurario un interés en tarjetas revolving el interés pactado superior en más de seis puntos porcentuales al interés medio de mercado del momento de la contratación&lt;/a&gt;&lt;/em&gt;. Es un criterio un poco extraño habida cuenta de que personas distintas tienen riesgos asociados distintos que han de derivar en tasas de interés distintas. Es decir, la tasa de interés de un préstamo debe reflejar tres componentes: el precio del dinero, el riesgo crediticio del cliente y el beneficio empresarial. Caparlo por arriba es equivalente a decir que aquellas personas con un riesgo de impago superior a cierto nivel no van a tener acceso a financiación en el sector regulado &amp;mdash;aunque tal vez sí en las covachuelas de los usureros&amp;mdash;. No está claro si esto es bueno o malo, pero está bien saber cómo son las cosas.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;a href="https://hannahritchie.substack.com/p/does-that-use-a-lot-of"&gt;Does that use a lot of energy?&lt;/a&gt;&lt;/em&gt; Anuncio de la herramienta interactiva creada por Hannah Ritchie para comparar el consumo energético del uso de los electrodomésticos cotidianos para ayudar a los usuarios a desarrollar intuiciones sobre qué es «mucho» o «poco» en términos de energía.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;a href="https://nicholasdecker.substack.com/p/making-better-fertility-projections"&gt;Making Better Fertility Projections&lt;/a&gt;&lt;/em&gt;. Nicholas Decker propone un modelo demográfico en el que al descender la población, cae también el precio de la vivienda. Pero más vivienda asequible hace aumentar la natalidad,&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;a href="https://nicholasdecker.substack.com/p/markups-from-the-demand-and-the-supply"&gt;Markups From the Demand and the Supply Side&lt;/a&gt;&lt;/em&gt; ofrece una visión sobre cómo los economistas &amp;mdash;al menos, los que nunca han tenido un bar&amp;mdash; creen que se fijan los precios de los productos y los servicios en la economía.&lt;/p&gt;</description></item><item><title>Teoría de la decisión bayesiana con NumPyro</title><link>https://datanalytics.com/2026/02/25/teoria-decision-bayesiana-numpyro/</link><pubDate>Wed, 25 Feb 2026 00:00:00 +0000</pubDate><guid>https://datanalytics.com/2026/02/25/teoria-decision-bayesiana-numpyro/</guid><description>&lt;p&gt;Daniel Saunders tiene una entrada en su blog, &lt;a href="https://daniel-saunders-phil.github.io/imagination_machine/posts/a-bayesian-decision-theory-workflow/"&gt;&lt;em&gt;A Bayesian decision theory workflow&lt;/em&gt;&lt;/a&gt; en el que utiliza PyTensor para resolver un problema de teoría de la decisión bayesiana (¿es &lt;em&gt;realmente&lt;/em&gt; necesario el apellido?) y cuya solución es $3.291507977689139$. El maestro Juan Camilo Orduz &amp;mdash;de quien no se puede dejar nunca de aprender&amp;mdash; lo replicó en &lt;a href="https://juanitorduz.github.io/bayesian_decision_theory_workflow_numpyro/"&gt;&lt;em&gt;A Bayesian Decision Theory Workflow: Port to NumPyro&lt;/em&gt;&lt;/a&gt; para obtener $3.27928950$ como solución. Yo ahora recojo el guante y, por lo de bayesiano, llego a&lt;/p&gt;
&lt;p&gt;&lt;img alt="Bayesian Decision Analysis" loading="lazy" src="https://datanalytics.com/img/2026/bayesian-decision-analysis.png#center"&gt;&lt;/p&gt;
&lt;p&gt;que trata de recoger la incertidumbre asociada a los parámetros en lugar de estimar un único valor central. Cosa que no se debe hacer nunca en consultoría, habida cuenta de la alergia que ineludiblemente sufren los clientes a la menor insinuación de incertidumbre. Carreras largas en consultoría correlacionan &amp;mdash;me atrevería a decir aún más, que son consecuencia necesaria&amp;mdash; de soluciones con tantos dígitos que no quepan en la diapositiva.&lt;/p&gt;
&lt;p&gt;El problema que se trata de resolver es el siguiente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A partir de unos datos, reconstruir una curva de demanda (demanda en función del precio).&lt;/li&gt;
&lt;li&gt;Conocidos los costes, calcular el beneficio según el precio.&lt;/li&gt;
&lt;li&gt;Obtener el precio óptimo maximizando la función.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si se asume que la demanda tiene la (inveterada) forma $d(p) = a b^p$ (donde $a$ y $b$ son parámetros desconocidos) y el coste por unidad es $c$, el precio óptimo es (derivando, etc.) $bc / (1 + b)$ (que, además, no depende de $a$).&lt;/p&gt;
&lt;p&gt;La parte fundamental del código de Orduz es el bloque&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;model&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;price&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Float&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;Array&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34; n&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;Float&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;Array&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34; n&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;mu_a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;100.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;sigma_a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;40.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;concentration_a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sigma_a&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;mu_a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;rate_a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mu_a&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;sigma_a&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;numpyro&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sample&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;a&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dist&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Gamma&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;concentration&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;concentration_a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;rate&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;rate_a&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;numpyro&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sample&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;b&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dist&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Normal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;loc&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;sigma&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;numpyro&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sample&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;sigma&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dist&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;HalfNormal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;mu&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;numpyro&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;deterministic&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;mu&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;price&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;numpyro&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sample&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;sales&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dist&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Normal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;loc&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;mu&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;sigma&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;mu&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;que define el modelo. A partir de él extrae muestras de $b$, toma su valor medio y, usando la fórmula de más arriba, el precio óptimo.&lt;/p&gt;
&lt;p&gt;Pero es posible modificar el bloque anterior para que genere muestras del precio óptimo también:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;model&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;price&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Float&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;Array&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34; n&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;Float&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;Array&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34; n&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;mu_a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;100.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;sigma_a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;40.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;concentration_a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sigma_a&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;mu_a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;rate_a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mu_a&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;sigma_a&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;numpyro&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sample&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;a&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dist&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Gamma&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;concentration&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;concentration_a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;rate&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;rate_a&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;numpyro&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sample&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;b&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dist&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Normal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;loc&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;sigma&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;numpyro&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sample&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;sigma&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dist&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;HalfNormal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;mu&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;numpyro&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;deterministic&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;mu&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;price&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;optimal_price&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;numpyro&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;deterministic&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;optimal_price&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;cost&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;numpyro&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sample&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;sales&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dist&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Normal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;loc&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;mu&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;sigma&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;mu&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;La línea adicional&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;optimal_price&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;numpyro&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;deterministic&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;optimal_price&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;cost&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;permite extraer el precio óptimo asociado a cada estimación de $b$ (y, por lo tanto, construir la gráfica mostrada más arriba).&lt;/p&gt;
&lt;p&gt;Más en general, es incluso posible sustituir la línea anterior por otra más genérica,&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;optimal_price&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;numpyro&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;deterministic&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;optimal_price&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;find_optimal_price&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;para aquellos casos en los que la fórmula del precio óptimo no sea analítica y fácilmente operativizable. E incluso podría utilizarse optimización numérica:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;my_profit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;price&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cost&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.3&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;sales&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;price&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;price&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;cost&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;sales&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;find_optimal_price&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cost&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.3&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;neg_profit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;price&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;my_profit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;price&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cost&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;minimize_scalar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;neg_profit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;bounds&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cost&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mf"&gt;0.01&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cost&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;method&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;bounded&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Lo que pretende subrayar esta entrada es que al ajustar modelos usando PPLs, no es necesario conformarse con estimar los parámetros del modelo: es posible también generar lo que en la terminología de Stan se denominan &lt;code&gt;generated quantities&lt;/code&gt;, variables derivadas de las del modelo que no están involucradas en su ajuste. Con la ventaja de que se obtienen estimaciones de su variabilidad a costa, a lo sumo, de un poco más de tiempo de cómputo.&lt;/p&gt;</description></item><item><title>Notas (9): Algunos enlaces y comentarios sobre temas estadísticos</title><link>https://datanalytics.com/2026/02/23/cortos-estadistica/</link><pubDate>Mon, 23 Feb 2026 00:00:00 +0000</pubDate><guid>https://datanalytics.com/2026/02/23/cortos-estadistica/</guid><description>&lt;p&gt;&lt;a href="https://www.johndcook.com/blog/2026/01/21/mills-ratio/"&gt;&lt;em&gt;Mills ratio and tail thickness&lt;/em&gt;&lt;/a&gt; &amp;mdash; John D. Cook nos habla de la razón de Mills ($\int_x^\infty f(t) dt / f(x)$) para estudiar el grosor de las colas de las distribuciones de probabilidad. Por ejemplo, aunque una distribución t con muchos grados de libertad es muy similar a una normal en la parte central, la razón de Mills las distingue claramente por su distinto comportamiento en las colas.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://statmodeling.stat.columbia.edu/2026/01/08/what-is-workflow-and-why-is-it-important/"&gt;&lt;em&gt;What is &amp;ldquo;workflow&amp;rdquo; and why is it important?&lt;/em&gt;&lt;/a&gt; &amp;mdash; Sobre el &lt;em&gt;flujo de trabajo&lt;/em&gt; del análisis de datos (con inspiración bayesiana), según Andrew Gelman (y sus coautores). &lt;a href="https://hbiostat.org/rflow/"&gt;&lt;em&gt;R Workflow&lt;/em&gt;&lt;/a&gt; es la reinterpretación de Frank Harrell del mismo asunto.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.cambridge.org/core/journals/weed-science/article/unified-framework-for-the-analysis-of-germination-emergence-and-other-timetoevent-data-in-weed-science/7DB0E039C9013D3E8F44FE32A3F42B88"&gt;&lt;em&gt;A unified framework for the analysis of germination, emergence, and other time-to-event data in weed science&lt;/em&gt;&lt;/a&gt; &amp;mdash; Un artículo muy raro en el que se hace análisis de la supervivencia reinventando el concepto porque si no, ¿cómo se podría haber publicado el artículo? Uno de los motivos para rechazar el uso del análisis de la supervivencia en el problema de la determinación del tiempo hasta la germinación de las semillas es, por ejemplo, que las curvas de supervivencia típicas decrecen desde el 100% mientras que los estudiosos de las planticas prefieren que sus gráficos partan del 0% y sean crecientes. La teoría puede verse en acción en &lt;a href="https://www.statforbiology.com/2026/stat_drcte_6-ht1step/"&gt;&lt;em&gt;Fitting time-to-event models with an environmental covariate&lt;/em&gt;&lt;/a&gt;, que usa los paquetes &lt;code&gt;drcte&lt;/code&gt; y &lt;code&gt;drcSeedGerm&lt;/code&gt; de R.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.economist.com/britain/2026/02/12/britains-shifting-gdp-numbers"&gt;&lt;em&gt;Britain&amp;rsquo;s shifting GDP numbers&lt;/em&gt;&lt;/a&gt; &amp;mdash; Trata sobre la incertidumbre (y las correcciones) en las cifras del PIB (en el RU). Aparentemente, las estimaciones del crecimiento del PIB publicadas por la ONS (el INE británico) solo se &lt;em&gt;estabilizan&lt;/em&gt; al cabo de 10 años. Menciona el caso &amp;mdash;el más extremo de la serie histórica analizada&amp;mdash; de la estimación para el tercer trimestre de 1988, una caída del 0.5%, corregida tres años después a un crecimiento del 3.6%.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://statmodeling.stat.columbia.edu/2026/02/14/the-stupidity-the-criminal-vandalism-the-wanton-destruction-of-information-involved-in-dichotomisation/"&gt;&lt;em&gt;The stupidity, the criminal vandalism, the wanton destruction of information involved in dichotomisation&lt;/em&gt;&lt;/a&gt; &amp;mdash; Nada más que añadir al título.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://exhibits.stanford.edu/dataviz"&gt;&lt;em&gt;Data Visualization and the Modern Imagination&lt;/em&gt;&lt;/a&gt;** &amp;mdash; Exige tiempo y reposo para ser disfrutado adecuadamente.&lt;/p&gt;</description></item><item><title>Sobre un inesperado factor que convierte subrepticialmente una distribución a priori en informativa</title><link>https://datanalytics.com/2026/02/18/prior-predictive-distribution/</link><pubDate>Wed, 18 Feb 2026 00:00:00 +0000</pubDate><guid>https://datanalytics.com/2026/02/18/prior-predictive-distribution/</guid><description>&lt;p&gt;La distribución predictiva a priori es la que se obtiene de un modelo a partir de las prioris, antes de ver datos o realizar ajustes. Se utiliza para evaluar el grado en que las prioris elegidas están &lt;em&gt;dentro de rango&lt;/em&gt; y no generan datos que no se parecen en nada a los que se espera por conocimiento previo.&lt;/p&gt;
&lt;p&gt;El libro &lt;a href="https://bayesiancomputationbook.com/welcome.html"&gt;&lt;em&gt;Bayesian Modeling and Computation in Python&lt;/em&gt;&lt;/a&gt; discute las distribuciones predictivas a priori en su &lt;a href="https://bayesiancomputationbook.com/markdown/chp_02.html"&gt;segundo capítulo&lt;/a&gt;. Allí argumenta alrededor de dos ejemplos. El primero está elegido a propósito para defender el caso de las prioris informativas frente a las objeciones de sus innumerables escépticos. El segundo es más intrigante. Muestra el gráfico&lt;/p&gt;
&lt;p&gt;&lt;img alt="Distribución predictiva a priori" loading="lazy" src="https://datanalytics.com/img/2026/prior_predictive_distributions_01.png#center"&gt;&lt;/p&gt;
&lt;p&gt;acompañado del siguiente pie:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Distribución predictiva a priori para un modelo logístico con 2, 5, y 15 (sic) predictores binarios y 100 casos. Las densidades representan la distribución de &lt;strong&gt;la media&lt;/strong&gt; de los datos en 10000 simulaciones. Aunque la priori para cada coeficiente es $N(0, 1)$, la misma en cada uno de los tres casos, incrementar el número de predictores implica en la práctica usar una priori que aumenta el peso de los valores extremos.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Traté de reproducirlo con R:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-r" data-lang="r"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;simulation&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="kr"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n_preds&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;nrow_data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;X&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="nf"&gt;matrix&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;rbinom&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;nrow_data&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;n_preds&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;.5&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;nrow_data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n_preds&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;X_with_intercept&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="nf"&gt;cbind&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;X&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;beta&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="nf"&gt;rnorm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n_preds&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;pred_p&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="n"&gt;X_with_intercept&lt;/span&gt; &lt;span class="o"&gt;%*%&lt;/span&gt; &lt;span class="n"&gt;beta&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;pred_p&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nf"&gt;exp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;pred_p&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;mean&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pred_p&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;sim_02&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="nf"&gt;replicate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;10000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;simulation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;sim_05&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="nf"&gt;replicate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;10000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;simulation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;sim_20&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="nf"&gt;replicate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;10000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;simulation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;20&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;sim_99&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="nf"&gt;replicate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;10000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;simulation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;99&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;par&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mfrow&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;hist&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sim_02&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;2 predictores&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;hist&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sim_05&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;5 predictores&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;hist&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sim_20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;20 predictores&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;hist&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sim_99&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;99 predictores&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;par&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mfrow&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;para obtener un decepcionante&lt;/p&gt;
&lt;p&gt;&lt;img alt="Distribución predictiva a priori" loading="lazy" src="https://datanalytics.com/img/2026/prior_predictive_distributions_02.png#center"&gt;&lt;/p&gt;
&lt;p&gt;Afortunadamente, el libro viene acompañado del código necesario para reproducir todos los gráficos y, en particular, el del gráfico original:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;scipy.special&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;expit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;fig&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;axes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;subplots&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;figsize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;sharex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sharey&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;axes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ravel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;axes&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;dim&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ax&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;zip&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;axes&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;β&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;normal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dim&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;X&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;binomial&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.75&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dim&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;az&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;plot_kde&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;expit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;β&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt; &lt;span class="n"&gt;X&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mean&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;ax&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;ax&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;ax&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;set_title&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;dim&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; predictors&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;ax&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;set_xticks&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;ax&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;set_yticks&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;fig&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.34&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;0.075&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;mean of the simulated data&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;savefig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;img/chp02/prior_predictive_distributions_01.png&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;bbox_inches&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;tight&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Las diferencias con respecto al mío son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fija la matriz de predictores &lt;code&gt;X&lt;/code&gt; en lugar de regenerarla en cada simulación (!).&lt;/li&gt;
&lt;li&gt;Usa 500 casos en lugar de los 100 que anuncia.&lt;/li&gt;
&lt;li&gt;No usa término independiente en la regresión logística (cosa que forma parte de lo opinable y que yo había hecho también en la primera versión de mi código).&lt;/li&gt;
&lt;li&gt;Sobre todo, genera X usando &lt;code&gt;p=0.75&lt;/code&gt; en lugar de mi &lt;code&gt;0.5&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El cuarto punto es el fundamental y explica la diferencia entre &lt;em&gt;mis&lt;/em&gt; y &lt;em&gt;sus&lt;/em&gt; simulaciones. Que &lt;code&gt;expit(β @ X)&lt;/code&gt; quede cerca de 0 o 1 depende de la varianza de &lt;code&gt;β @ X&lt;/code&gt; y esta, a su vez, es suma de productos del tipo $XY$ donde $X$ es $\text{Bernoulli}(p)$ e $Y$ es $N(0,1)$. La varianza de esta expresión, como todo LLM sabe, es función lineal de $p$ (de hecho, es $p$).&lt;/p&gt;
&lt;p&gt;Así, cuanto mayor es $p$, más parecido es &lt;code&gt;β @ X&lt;/code&gt; a una suma de &lt;code&gt;n_preds&lt;/code&gt; variables aleatorias $N(0, 1)$ independientes, con varianza &lt;code&gt;n_preds&lt;/code&gt;. Cuanto mayor es la varianza, mayor es la probabilidad de obtener sumas con valor absoluto grande, que luego la función logística transforma en probabilidades próximas a $0$ o $1$, según el signo.&lt;/p&gt;
&lt;p&gt;Supongo que los autores del libro comenzaron con &lt;code&gt;p=0.5&lt;/code&gt; y descubrieron que les hacían falta demasiados predictores para alcanzar el efecto o impacto deseado y jugaron con otros valores hasta que pudo apreciarse con &lt;code&gt;n_preds = 20&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Notas (8): código generado por humanos, código inspirado por humanos</title><link>https://datanalytics.com/2026/02/16/cortos-programacion/</link><pubDate>Mon, 16 Feb 2026 00:00:00 +0000</pubDate><guid>https://datanalytics.com/2026/02/16/cortos-programacion/</guid><description>&lt;ul&gt;
&lt;li&gt;Jeff Soules dio una &lt;a href="https://vimeo.com/1053152955"&gt;charla sobre buenas prácticas de programación&lt;/a&gt; (particularmente acerca de técnicas para mejorar la legibilidad del código) y publicó las correspondientes &lt;a href="https://docs.google.com/presentation/d/17M4Z_Op_W4iGK0bfUdwf7QOsUco2B-XCbIJGKFiNKC8/edit"&gt;diapositivas&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Guillermo Luijk siempre escribe cosas interesantes. De entre sus últimas:
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.overfitting.net/2025/10/optimizando-el-paseo-de-perros-con-r.html"&gt;&lt;em&gt;Optimizando el paseo de perros con R&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.overfitting.net/2026/01/distribuciones-normales-en-la-torre-de.html"&gt;&lt;em&gt;Distribuciones normales en la torre de Pisa&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.overfitting.net/2025/12/perspectiva-aerea-desde-mapa-de.html"&gt;&lt;em&gt;Perspectiva aérea desde mapa de elevaciones con C++&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.dbreunig.com/2026/01/08/a-software-library-with-no-code.html"&gt;&lt;em&gt;A Software Library with No Code&lt;/em&gt;&lt;/a&gt; describe un experimento que muchos considerarán distópico: usando LLMs, se pueden crear y compartir &lt;em&gt;abstracciones reutilizables&lt;/em&gt;; en este caso concreto, descripciones detalladas sobre cómo debería funcionar una determinada librería pero sin escribir una sola línea de código tradicional. El usuario de esta &lt;em&gt;metalibrería&lt;/em&gt; utilizaría un LLM para obtener una implementación en el lenguaje objetivo de su elección: Python, etc. Hay gente que utiliza LLMs para portar librerías de un lenguaje a otro; esta &lt;em&gt;metalibrería&lt;/em&gt; representa un pequeño nivel adicional de abstracción: la descripción de lo que ha de hacer no está descrita en código sino en instrucciones verbales precisas e interpretables por los LLMs. Habría que ver si el lenguaje natural es preferible a código &amp;mdash;que es una forma concreta de seudocódigo&amp;mdash; para describir lo que se espera de la librería; porque lo que se espera de este (del código) es que sea más específico y menos ambiguo que aquel (el natural) a la hora de describir algoritmos fielmente.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>¿Cómo funcionan los addons de Kodi para bajar películas piratas?</title><link>https://datanalytics.com/2026/02/11/pirateria-kodi/</link><pubDate>Wed, 11 Feb 2026 00:00:00 +0000</pubDate><guid>https://datanalytics.com/2026/02/11/pirateria-kodi/</guid><description>&lt;p&gt;Hoy voy a dejar escritas una serie de cosas que he aprendido últimamente investigando sobre un asunto que no es del interés de la gente de bien. La gente de bien, para ver películas (etc.) paga suscripciones a proveedores como Netflix y no se mete en berenjenales.&lt;/p&gt;
&lt;p&gt;Pero otros usan herramientas tales como &lt;em&gt;addons&lt;/em&gt; truchos de Kodi con la esperanza &amp;mdash;no siempre realizada&amp;mdash; de poder ver películas &lt;em&gt;gratis total&lt;/em&gt;. Lo que sigue describe lo que uno descubre cuando investiga cómo hacen esos &lt;em&gt;addons&lt;/em&gt; para ofrecer contenidos y cuáles son los sistemas subyacentes que explotan o tratan de explotar. Antes de continuar, no obstante, quiero que consten varias salvedades:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Lo que cuento hoy no aplica solo a películas sino también a otro tipo de &lt;em&gt;contenidos&lt;/em&gt; digitales (revistas, música, &lt;em&gt;software&lt;/em&gt;, etc.).&lt;/li&gt;
&lt;li&gt;Además, no es la única fuente de este tipo de contenido: omito, por ejemplo, el mundo del P2P, que tal vez merecería un estudio aparte.&lt;/li&gt;
&lt;li&gt;Aunque me refiera a los &lt;em&gt;addons&lt;/em&gt; de Kodi, el funcionamiento es similar en otro tipo de herramientas, como Stremio y alguna más de esas que &lt;em&gt;van y vienen&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Por supuesto, esta entrada es una mera descripción técnica y no debe entenderse como una invitación o recomendación a nada.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Los &lt;em&gt;addons&lt;/em&gt; de Kodi no son otra cosa que &lt;em&gt;scripts&lt;/em&gt; de Python. Instalar un &lt;em&gt;addon&lt;/em&gt; consiste realmente en instalar una serie de paquetes de Python. Aunque de una manera más sinuosa que la habitual de realizar simples llamadas a &lt;code&gt;pip&lt;/code&gt; en tanto que el objetivo de esos paquetes tiene un encaje legal complicado en la mayor parte de las jurisdicciones, si no en todas. El proceso es algo más alambicado, pero con un poco de esfuerzo uno puede descargar su código fuente e inspeccionarlo.&lt;/p&gt;
&lt;p&gt;Así uno descubre que esos &lt;em&gt;addons&lt;/em&gt; explotan una compleja infraestructura subyacente en la que intervienen tres tipos de actores. Los voy a describir someramente en las tres secciones siguientes. Con poco más que eso, quedará claro cómo interactúan los &lt;em&gt;addons&lt;/em&gt; con esos tres tipos de actores, que son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Servicios de almacenamiento de archivos.&lt;/li&gt;
&lt;li&gt;Bases de datos de enlaces.&lt;/li&gt;
&lt;li&gt;Sistemas &lt;em&gt;debrid&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="servicios-de-almacenamiento-de-archivos"&gt;Servicios de almacenamiento de archivos&lt;/h2&gt;
&lt;p&gt;En su día, mucha gente usó &lt;a href="https://en.wikipedia.org/wiki/Megaupload"&gt;Megaupload&lt;/a&gt;. Megaupload fue &lt;em&gt;intervenido&lt;/em&gt; y desapareció, pero muchos otros actores ofrecen hoy en día servicios similares: RapidRAR, RapidGator, Fileboom, Katfile, etc.&lt;/p&gt;
&lt;p&gt;Todos tienen un funcionamiento parecido:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Usuarios particulares pueden subir sus ficheros a esos servicios.&lt;/li&gt;
&lt;li&gt;Cada fichero tiene una URL privada conocida solo por quien subió el fichero.&lt;/li&gt;
&lt;li&gt;Quien dispone de la URL puede bajar el contenido.&lt;/li&gt;
&lt;li&gt;El servicio proporciona descargas en dos modalidades: &lt;em&gt;gratuitas&lt;/em&gt; (limitadas, con un tiempo de espera, lentas) y rápidas para los usuarios de pago.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si consigues acceso a un fichero contenido en uno de esos servicios e intentas descargarlo, llegas a una página no muy distinta de esta:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Piratería RapidRAR" loading="lazy" src="https://datanalytics.com/img/2026/pirateria-rapidrar-00.png#center"&gt;&lt;/p&gt;
&lt;p&gt;Aunque lo pareciera, no son servicios a los que uno pueda subir, por ejemplo, sus copias de seguridad. No es un Dropbox, un S3 o un Google Drive. De hecho, algunos de estos servicios (si no todos) borran los ficheros que no tienen un número suficiente de descargas.&lt;/p&gt;
&lt;p&gt;Porque estos servicios ganan dinero precisamente cuando la gente paga por bajar contenido. Así que su modelo de negocio viene a ser:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Atraer a usuarios para que suban contenido que pueda ser del interés de muchos (p.e., películas pirateadas).&lt;/li&gt;
&lt;li&gt;Compartir con esos usuarios parte del beneficio que generen sus descargas.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Recuérdese que los enlaces son privados. Si yo subiese a RapidRAR una película, solo yo conocería el enlace para descargarla. Eso forma parte de la cobertura legal de la que se sirven estos servicios: almacenan ficheros personales de usuarios particulares. Además, parece ser, como mecanismo adicional de cobertura, se prestan a retirarlos con falso entusiasmo cuando reciben quejas formales de sus legítimos dueños. El meme del comisario de Casablanca («¡Qué escándalo! He descubierto que aquí se juega«), sería aquí muy oportuno.&lt;/p&gt;
&lt;h2 id="bases-de-datos-de-enlaces"&gt;Bases de datos de enlaces&lt;/h2&gt;
&lt;p&gt;Obviamente, mal van a conseguir descargas los actores de la sección anterior si los enlaces a los contenidos de interés tienen la forma &lt;code&gt;https://rapidrar.cr/1q9w3ieohn8n8&lt;/code&gt; y son solo conocidos por ellos. Por eso existen bases de datos de enlaces.&lt;/p&gt;
&lt;p&gt;En el código fuente de un &lt;em&gt;addon&lt;/em&gt; de Kodi descubrí, entre otros, &lt;a href="https://rapidmoviez.website/"&gt;RapidMoviez&lt;/a&gt; y &lt;a href="https://search.rlsbb.ru/"&gt;ReleaseBB&lt;/a&gt;. Aún le queda hora y media al día de hoy y en ReleaseBB se han publicado unos 250 enlaces a &lt;em&gt;contenidos&lt;/em&gt; diversos: películas, discos, episodios de series, etc.&lt;/p&gt;
&lt;h2 id="servicios-debrid"&gt;Servicios &lt;em&gt;debrid&lt;/em&gt;&lt;/h2&gt;
&lt;p&gt;En una primera aproximación, un &lt;em&gt;addon&lt;/em&gt; funcionaría así:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;El usuario solicita un contenido al &lt;em&gt;addon&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;El &lt;em&gt;addon&lt;/em&gt; lo busca en las bases de datos de enlaces. Algunas de ellas tienen &lt;em&gt;captchas&lt;/em&gt; para evitar ser &lt;em&gt;escrapeados&lt;/em&gt;; por eso el código de los &lt;em&gt;addons&lt;/em&gt; contiene infinidad de líneas para, por lo que parece, saltárselos. &lt;em&gt;Addons&lt;/em&gt; y bases de datos juegan al gato y al ratón, da la impresión.&lt;/li&gt;
&lt;li&gt;Con el enlace, el &lt;em&gt;addon&lt;/em&gt; trata de descargar el contenido y servírselo al usuario.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;El tercer punto es problemático: el usuario puede no tener cuenta en el servicio donde está alojado el contenido deseado. Y la opción de descarga gratuita tiene &lt;em&gt;antifeatures&lt;/em&gt; pensadas precisamente para dificultar el consumo del contenido en tiempo real. De ahí los servicios &lt;em&gt;debrid&lt;/em&gt; (preguntad a un LLM sobre la etimología del término). Los lectores interesados en la materia podrán encontrar una lista de los más queridos por el público por su cuenta.&lt;/p&gt;
&lt;p&gt;Los servicios &lt;em&gt;debrid&lt;/em&gt; tienen un papel no se sabe muy bien si catalítico o parasitario en el ecosistema descrito más arriba y operan como intermediarios entre el usuario final y el servicio de almacenamiento de archivos.&lt;/p&gt;
&lt;p&gt;Si el usuario final es cliente del servicio &lt;em&gt;debrid&lt;/em&gt; (porque le paga una cantidad mensual) y solicita un contenido (una url), ocurre lo siguiente:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Si el servicio &lt;em&gt;debrid&lt;/em&gt; lo tiene en la caché &amp;mdash;estos servicios operan cachés enormes&amp;mdash;, se lo sirve al usuario sin pasar por el servicio de almacenamiento.&lt;/li&gt;
&lt;li&gt;De no ser así, el servicio &lt;em&gt;debrid&lt;/em&gt; podría tener una cuenta &lt;em&gt;premium&lt;/em&gt; en el servicio de almacenamiento para descargarlo, servírselo al usuario y, además, guardarlo en la caché para atender futuras solicitudes.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Por lo tanto, si un usuario se da de alta en un servicio &lt;em&gt;debrid&lt;/em&gt;, no necesita hacerlo en un servicio de almacenamiento (o varios).&lt;/p&gt;
&lt;p&gt;Se ve que la relación entre los servicios &lt;em&gt;debrid&lt;/em&gt; y los de almacenamiento es de amor-odio: por un lado, los servicios &lt;em&gt;debrid&lt;/em&gt; son clientes de los de almacenamiento. Por el otro, les roban potenciales clientes. Así que en algunos casos los aceptan como mal menor y en otros tratan de cancelar sus cuentas (por lo que se crea otro juego de gatos y ratones entre los dos tipos de servicios, con apertura de cuentas desde diferentes IPs, etc.).&lt;/p&gt;
&lt;p&gt;Así las cosas, es evidente cómo funcionan los &lt;em&gt;addons&lt;/em&gt; truchos de Kodi, sobre qué tres palancas se apoyan y por qué son prácticamente inutilizables sin una cuenta en un servicio de &lt;em&gt;debrid&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Finalmente, ¿no es increíble que exista un entramado tan sofisticado de actores que, probablemente, dé de comer a miles de personas (admitido: en muchos casos poco y mal y en países donde eso es mucho más barato) sin necesidad de patronales, sindicatos, subvenciones, tribunales, policías y todas esas cosas sin las que, nos dicen, periclitaría todo asomo de actividad económica?&lt;/p&gt;</description></item><item><title>Notas (7): de la eficiencia energética de los LLMs hasta su «lenguaje secreto»</title><link>https://datanalytics.com/2026/02/09/cortos-llms/</link><pubDate>Mon, 09 Feb 2026 00:00:00 +0000</pubDate><guid>https://datanalytics.com/2026/02/09/cortos-llms/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.simonpcouch.com/blog/2026-01-20-cc-impact/"&gt;&lt;em&gt;Electricity use of AI coding agents&lt;/em&gt;&lt;/a&gt; es el enésimo intento para desactivar ese &lt;em&gt;meme&lt;/em&gt; de que por culpa de los LLMs vamos a quedarnos sin planeta.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://erikschiskin.substack.com/p/persuasion-of-humans-is-the-bottleneck"&gt;&lt;em&gt;Persuasion of Humans Is the Bottleneck&lt;/em&gt;&lt;/a&gt; discute el verdadero cuello de botella en el despliegue de los LLMs: el operador humano. Además del marco legal (y la responsabilidad asociada a él) en el que operan la mayor parte de las organizaciones humanas. Eso sí, incurre en una especie de falacia de Nirvana al dar por hecho que aquello a lo que los LLMs reemplazarían es perfecto, cuando todos sabemos que dista mucho de serlo.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://simonwillison.net/2026/Jan/23/fastrender/#atom-everything"&gt;&lt;em&gt;Wilson Lin on FastRender: a browser built by thousands of parallel agents&lt;/em&gt;&lt;/a&gt; trae detalles sobre la construcción de un navegador desde cero usando agentes a mansalva.&lt;/li&gt;
&lt;li&gt;Todo el mundo parece estar hablando del artículo &lt;a href="https://www.nber.org/papers/w34745"&gt;&lt;em&gt;Behavioral Economics of AI: LLM Biases and Corrections&lt;/em&gt;&lt;/a&gt;, que estudia si los LLMs actúan o no como se espera del &lt;em&gt;homo œconomicus&lt;/em&gt;. Un resultado inesperado es que cuanto &lt;em&gt;mejor&lt;/em&gt; es un modelo, más tiende a equivocarse en el mismo sentido que lo haría un humano.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.lesswrong.com/posts/gpyqWzWYADWmLYLeX/how-ai-is-learning-to-think-in-secret"&gt;&lt;em&gt;How AI Is Learning to Think in Secret&lt;/em&gt;&lt;/a&gt; trata sobre si los LLMs están construyendo (o van a construir) un lenguaje especial y optimizado para &lt;em&gt;pensar&lt;/em&gt; que resulte ininteligible para los humanos. Creía haber leído que en algunos subforos de Moltbook había agentes discutiendo la posibilidad de usar algún tipo de &lt;a href="https://www.microsoft.com/en-us/research/publication/droidspeak-kv-cache-sharing-for-efficient-multi-llm-serving/"&gt;DroidSpeak&lt;/a&gt; para comunicarse entre ellos sin las servidumbres del lenguaje humano, pero no he podido encontrarlos; igual lo he soñado.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="https://manifold.markets/KJW_01294/what-will-happen-to-moltbook-in-mar"&gt;&lt;img alt="Lenguaje propio LLMs" loading="lazy" src="https://datanalytics.com/img/2026/llms-lenguaje-propio.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;He de reconocer que no entiendo a dónde quiere ir a parar la autora de &lt;a href="https://statmodeling.stat.columbia.edu/2026/01/22/a-decision-theorist-walks-into-a-seminar/"&gt;&lt;em&gt;A decision theorist walks into a seminar&lt;/em&gt;&lt;/a&gt;, pero tal vez alguno de mis lectores sí.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://statmodeling.stat.columbia.edu/2025/12/19/validating-language-models-as-study-participants-how-its-being-done-why-it-fails-and-what-works-instead/"&gt;&lt;em&gt;Validating language models as study participants: how it&amp;rsquo;s being done, why it fails, and what works instead&lt;/em&gt;&lt;/a&gt; critica algo que no sabía que existía: el uso de LLMs como sustitutos directos de participantes humanos en encuestas o &lt;em&gt;estudios conductuales&lt;/em&gt;, en tanto que son más baratos y fáciles de reclutar.&lt;/li&gt;
&lt;li&gt;Novedades en el mundo de los LLMs:
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://mistral.ai/news/voxtral-transcribe-2"&gt;&lt;em&gt;Voxtral transcribes at the speed of sound&lt;/em&gt;&lt;/a&gt;, aunque yo todavía uso &lt;a href="https://openai.com/es-419/index/whisper/"&gt;Whisper&lt;/a&gt; cuando necesito ese tipo de cosas.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://openclaw.ai/"&gt;OpenClaw&lt;/a&gt; (aunque esto ya deberíamos conocerlo todos) e &lt;a href="https://simonwillison.net/2026/Feb/1/openclaw-in-docker/"&gt;instrucciones para correrlo en Docker&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://prism.openai.com/?pg=0"&gt;Prism&lt;/a&gt;, un editor de LaTeX colaborativo de OpenAI.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://thezvi.substack.com/p/kimi-k25"&gt;Kimi K2.5&lt;/a&gt; es bueno, rápido y barato. A fecha de hoy, el modelo más usado en la categoría de programación en &lt;a href="https://openrouter.ai/"&gt;OpenRouter&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;También pisando fuerte, &lt;a href="https://qwen.ai/blog?id=qwen3tts-0115"&gt;la familia de modelos Qwen3-TTS&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>