python

Programación lineal, de nuevo

Hoy me he retrasado en escribir por haber estado probando (y estresando, como hay quien dice), software para resolver problemas de programación lineal. En total, nada, unos diez millones de variables unos treinta millones de restricciones. Nota: es un problema LP puro, nada de enteros, nada de pérdidas no lineales, etc. Primera opción: Python + PuLP + CBC (de COIN-OR), que es el optimizador por defecto de PuLP. Rendimiento aceptable para el tipo de uso que se le acabaría dando.

Curso de python básico orientado al análisis de datos

Se acaba de publicar en GitHub el/nuestro Curso de python básico orientado al análisis de datos. Digo nuestro un tanto impropiamente: casi todo el material es de Luz Frías, mi socia en Circiter. Mía hay alguna cosa suelta. Como como minicoautor soy el comentarista menos creíble del contenido, lo dejo al juicio de cada cual. Y, por supuesto, se agradecen correcciones, comentarios, cañas y fusilamientos (con la debida caballerosidad, por supuesto, en lo de las atribuciones).

Sobre los coeficientes de los GLM en Scikit-learn

Pensé que ya había escrito sobre el asunto porque tropecé con él en un proyecto hace un tiempo. Pero mi menoria se había confundido con otra entrada, Sobre la peculiarisima implementacion del modelo lineal en (pseudo-)Scikit-learn, donde se discute, precisamente, un problema similar si se lo mira de cierta manera o diametralmente opuesto si se ve con otra perspectiva. Allí el problema era que Scikit-learn gestionaba muy sui generis el insidioso problema de la colinealidad.

Pyro

Leyendo sobre si dizque PyTorch le siega la hierba debajo de los pies a TensorFlow, averigué la existencia de Pyro. Pyro se autopresenta como Deep Universal Probabilistic Programming, pero aplicando métodos porfirianos (ya sabéis: género próximo y diferencia específica), es, o pretende ser, Stan en Python y a escala. Aquí van mis dos primeras impresiones, basadas en una inspección superficial de los tutoriales. En primer lugar, aunque Pyro permite usar (distintas versiones de) MCMC, parece que su especialidad es la inferencia variacional estocástica.

¿Qué variable distingue mejor dos subgrupos?

Es una pregunta que surge reiteradamente. Por ejemplo, cuando se compara un clúster con el resto de la población y uno busca las variables que mejor lo caracterizan. Y crear gráficos como (extraído de aquí) donde las variables están ordenadas de acuerdo con su poder discriminador. Mi técnica favorita para crear tales indicadores es la EMD (earth mover’s distance) y/o sus generalizaciones, muy bien descritas en Optimal Transport and Wasserstein Distance y disponibles en R y Python.

Los modelos mixtos en Python son un bien público pero quienes debieran proveerlo están a otra cosa

Los modelos mixtos en Python son un bien público. El sector privado no produce suficientes bienes públicos (con excepciones tan notables como las búsquedas en Google o las páginas aún sin paywall de los periódicos). El sector público y los impuestos que lo financian argumenta la conveniencia de su propia existencia en términos de esa provisión de bienes públicos que dizque realiza. Pero ese subsector del sector público que debería implementar los modelos mixtos en Python se dedica a otra cosa.

Sobre la peculiarísima implementación del modelo lineal en (pseudo-)scikit-learn

Si ejecutas 1 2 3 4 5 6 7 8 9 10 11 import numpy as np from sklearn.linear_model import LinearRegression n = 1000 X = np.random.rand(n, 2) Y = np.dot(X, np.array([1, 2])) + 1 + np.random.randn(n) / 2 reg = LinearRegression().fit(X, Y) reg.intercept_ reg.coef_ se obtiene más o menos lo esperado. Pero si añades una columna linealmente dependiente, 1 X = np.column_stack((X, 1 * X[:,1])) ocurren cosas de la más calamitosa especie:

Mi infraestructura para Python

Resumen: He decidido usar RStudio como IDE para Python. RStudio no es el mejor IDE para desarrollar, pero es incomparablemente mejor que cualquier otro IDE para explorar, etc. Funciona muy bien y solo puede mejorar. He decidido pasar de Jupyter. Los notebooks valen para lo que valen, pero no para lo que hago. En caso de necesidad, uso Rmarkdown con bloques de Python. De nuevo, funcionan muy bien y solo pueden mejorar.

Sr. Python, muchas gracias por su candidatura; ya le llamaremos cuando... tenga modelos mixtos

Era casi todavía el siglo XX cuando yo, desesperado por hacer cosas que consideraba normales y que SAS no me permitía, pregunté a un profesor por algo como C pero para estadística. Y el profesor me contó que conocía a alguien que conocía a alguien que conocía a alguien que usaba una cosa nueva que se llamaba R y que podía servirme. Fue amor a primera vista, pero esa es otra historia.

Una comparación de lenguajes de programación en una esquinita pequeña de la economía

El título, no el de esta entrada sino el de A Comparison of Programming Languages in Economics, es una sinécdoque confusa. Que nadie busque en él consejo sobre qué lenguaje estudiar si le interesa el mundo de la economía (en general). O fuera de ella (también en general). Encontrará más bien la implementación de la solución a un único problema dentro de los muchos que supongo comprende esa disciplina. Uno, además, con el que no he visto (en persona) a economista alguno ganarse el pan ni en la academia ni fuera de ella.