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.
Si ejecutas
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,
X = np.column_stack((X, 1 * X[:,1])) ocurren cosas de la más calamitosa especie:
Y = np.dot(X, np.array([1, 2, 1])) + 1 + np.
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.
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.
Participé el otro día en una cena con gente friqui. Constaté con cierto desasosiego cómo han virado los sujetos pasivos de nuestra indignación profesional a lo largo de los años.
Antaño, fueron los viejos que seguían apegados a la paleoinformática. Hogaño, los primíparos que usan Python y desdeñan R.
Tengo sentimientos encontrados y no sé qué más añadir.
DataSynthesizer (véase también el correspondiente artículo) es un programa en Python que:
Toma una tabla de datos (microdatos, de hecho) que contiene información confidencial. Genera otra aleatoria pero que conserva (¿los conservará?) la estructura básica de la información subyacente (conteos, correlaciones, etc.). Está pensado para poder realizar el análisis estadístico de (determinados) datos sin verlos propiamente.
Particularmente interesante es el algoritmo para preservar la correlación entre columnas.
[Nota: he aprovechado la entrada para acuñar el neologismo microdatado para referirme a quien figura en un fichero de microdatos.
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.
Hoy he visto
aquí y he escrito
m <- matrix(c(74, 15, 10, 1, 11, 50, 38, 1, 5, 4, 90, 1, 17, 4, 19, 60), 4, 4, byrow = TRUE) m <- m / 100 luego
m %*% m %*% m %*% m %*% m %*% m %*% m %*% m %*% m %*% m %*% m %*% m %*% m%*% m%*% m%*% m%*% m%*% m%*% m %*% m %*% m %*% m %*% m %*% m %*% m %*% m %*% m %*% m %*% m %*% m %*% m%*% m%*% m%*% m%*% m%*% m%*% m # [,1] [,2] [,3] [,4] #[1,] 0.
Hoy comienzo a enseñar un curso de introducción a la programación para recién graduados que comenzarán un máster de matemáticas aplicadas con incursiones en la llamada ciencia de datos. Serán 4 sesiones con el siguiente contenido:
Sesión 1, programación imperativa: variables, condicionales y bucles. Sesión 2, programación orientada a objetos. Sesión 3, colecciones: listas, tuplas, conjuntos, diccionarios, etc. Sesión 4, programación funcional: map, reduce, fold, foldLeft, scan, filter, etc. Los lenguajes a utilizar serán R y Python (via Jupyter).
Mis clases de/con R suelen consistir en un guión que es un programa en R con muchos comentarios y ejercicios. Con el tiempo, estos últimos tienden a crecer hasta el punto de que se convierte casi en un fichero de texto comentado con aspersión —en su acepción no-DRAE de efecto— de líneas de código.
Mejor, me he dicho recientemente, usar Rmarkdown.
Pero Rmarkdown sirve para lo que sirve: como fuente para compilar ficheros pensados para ser leídos por seres humanos.
Supongo que a estas alturas todos conoceréis feather y rPython. Hoy los vais a ver trabajar juntos.
Primero solo en R:
library(feather) path <- "/tmp/my_data.feather" write_feather(cars, path) my_cars <- read_feather(path) Ahora, para pasarle datos a Python:
library(rPython) python.exec("import feather") python.exec("a = feather.read_dataframe('/tmp/my_data.feather')") python.exec("print a") Y, finalmente, para crear datos grandes en Python y devolvéselos a R:
python.exec("import numpy as np") python.exec("import pandas as pd") python.exec("arr = np.random.randn(10000000)") python.exec("arr[::10] = np.nan") python.
Ayer, después de mucho tiempo, perdí horas de sueño enredando con Jupyter. Y mi sensación fue la misma que hace un año: está bien para presentaciones, cursos y en definitiva, contenido cerrado y estructurado que para el cacharreo diario. ¡Echo en falta un lugar en el que equivocarme reiteradamente!
En RStudio, al menos, dispongo de la consola y de algún programa que uso como espacio de borrador. En Jupyter me siento como obligado a comportarme como esos niños repelentes que tomaban apuntes directamente a limpio.
Me llegan noticias de PyData Madrid 2016, que tendrá lugar en abril de este año en Madrid:
Os pongo un poco en contexto. Las PyData empezaron como conferencias de desarrolladores y usuarios de herramientas Python para trabajar con datos. Las primeras se hicieron en Silicon Valley, Nueva York, Londres,… Actualmente hay conferencias en NY, SV, Dallas, Seattle, Boston, Londres, Berlín, Amsterdam, París, Colonia, Tokio, Singapur,…, y Madrid. Como he comentado, empezaron un poco enfocadas en Python pero ahora están mucho más abiertas y se habla de Julia, Python, R, Scala,…