Gestión y Análisis de Datos para las Ciencias
Económicas conPython y R
Emancipando la Economía Computacional
Francisco PalmSpiralia :: SoLVe :: ULA
¿Economía Computacional?
Intersección entre el Análisis Económico y la Informática
¿De qué hay que liberarse?
¿De qué hay que liberarse?
Herramientas inferiores
Enfoques limitados
Formatos cerrados
Obsolencia planificada
Interoperabilidad reducida
"...es probable que el crecimiento conjunto de
Python y R sea el factor más importante en el futuro de la estadística computacional".
"The Future of Statistical Computing"Leland Wilkinson
(TECHNOMETRICS, Vol. 50, Num. 4, Nov. 2008),
¿Qué es Python?
¿Qué es Python?➔Lenguaje dinámico
➔multiparadigma, multipropósito, multiplataforma,
multiimplementación... multi*➔ El único compromiso es la
productividad del programador➔ Viene con las pilas puestas
¿Qué es R?
¿Qué es R?➔Entorno para computación
estadística y gráficos➔ Un amplio rango de técnicas y
utilidades (2000+ Paquetes) ➔ Varios años por delante de sus
contrapartes privativas (SAS, SPSS).➔ Potentes capacidades gráficas
¿En qué se parecen Python y R?
¿En qué se parecen Python y R?
Lenguajes interpretados Libres
"Armas secretas" de Google Desarrollados por comunidades internacionales e independientes
Amplia difusión internacional Modulares y extensibles
¿En qué se diferencian Python y R?
¿En qué se diferencian? Python R
Horizontal, multipropósito
Diseñado para ser sencillo
Técnicas avanzadas de programación
Incluido en Linux
Vertical, análisis estadístico
Orientación científica
Funcional, pero conservador
Hay que instalarlo (incluso en Linux)
Python: numpyhttp://numpy.scipy.org/
>>> from numpy import *>>> from numpy.linalg import solve>>>>>> # Sistema a resolver para (x0,x1,x2):>>> # 3 * x0 + 1 * x1 + 5 * x2 = 6>>> # 1 * x0 + 8 * x2 = 7>>> # 2 * x0 + 1 * x1 + 4 * x2 = 8>>>>>> a = array([[3,1,5],[1,0,8],[2,1,4]])>>> b = array([6,7,8])>>> x = solve(a,b)>>> print x # La solución![-3.28571429 9.42857143 1.28571429]>>>>>> dot(a,x) # Verificaciónarray([ 6., 7., 8.])
Python: scipyhttp://www.scipy.org/
from scipy import optimize, specialfrom numpy import *from pylab import *x = arange(0,10,0.01)for k in arange(0.5,5.5): y = special.jv(k,x) plot(x,y) f = lambda x: -special.jv(k,x) x_max = optimize.fminbound(f,0,6) plot([x_max], [special.jv(k,x_max)],'ro')
title(u'Funciones Bessel con optimos locales')show()
Python: Matplotlibhttp://matplotlib.sourceforge.net/
from mpl_toolkits.mplot3d import Axes3Dfrom matplotlib import cmimport matplotlib.pyplot as pltimport numpy as np
fig = plt.figure()ax = Axes3D(fig)X = np.arange(-5, 5, 0.25)Y = np.arange(-5, 5, 0.25)X, Y = np.meshgrid(X, Y)R = np.sqrt(X**2 + Y**2)Z = np.sin(R)ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.jet)
plt.show()
Python: persistencia
picklemarshall
sqlitezodb
sqlalchemy
Python: Djangohttp://www.djangoproject.com/
Python: moinhttp://moinmo.in
R: Análisis Espacialhttp://cran.r-project.org/web/views/Spatial.html
library(spatstat)data(cells)cells planar point pattern: 42 points window: rectangle = [0,1] x [0,1]plot(cells)plot(density.ppp(cells))plot(Kest(cells))
R: Econometría y series de tiempo
http://cran.r-project.org/web/views/Econometrics.html http://cran.r-project.org/web/views/TimeSeries.html
> mort = ts(scan("cmort.dat"),start=1970, frequency=52)Read 508 items> part = ts(scan("part.dat"),start=1970, frequency=52)Read 508 items> ded = ts.intersect(mort,part,part4=lag(part,-4),dframe=TRUE)> fit = lm(mort~part+part4, data=ded, na.action=NULL)> summary(fit)
Call:lm(formula = mort ~ part + part4, data = ded, na.action = NULL)
Residuals: Min 1Q Median 3Q Max -22.7429 -5.3677 -0.4136 5.2694 37.8539
Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 69.01020 1.37498 50.190 < 2e-16 ***part 0.15140 0.02898 5.225 2.56e-07 ***part4 0.26297 0.02899 9.071 < 2e-16 ***---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 8.323 on 501 degrees of freedomMultiple R-squared: 0.3091, Adjusted R-squared: 0.3063 F-statistic: 112.1 on 2 and 501 DF, p-value: < 2.2e-16
R: Finanzashttp://cran.r-project.org/web/views/Finance.html
R: Optimizaciónhttp://cran.r-project.org/web/views/Optimization.html
# Formular el problema: maximizar# x1 + 9 x2 + x3 sujeto a# x1 + 2 x2 + 3 x3 <= 9# 3 x1 + 2 x2 + 2 x3 <= 15#f.obj <- c(1, 9, 3)f.con <- matrix (c(1, 2, 3, 3, 2, 2), nrow=2, byrow=TRUE)f.dir <- c("<=", "<=")f.rhs <- c(9, 15)## Ejecutar.#lp ("max", f.obj, f.con, f.dir, f.rhs)## Salida: Exito: la funcion objetivo es 40.5lp ("max", f.obj, f.con, f.dir, f.rhs)$solution## Salida: [1] 0.0 4.5 0.0## Obtener variables dualeslp ("max", f.obj, f.con, f.dir, f.rhs, compute.sens=TRUE)$duals## Salida: [1] 4.5 0.0 -3.5 0.0 -10.5
R: rattlehttp://rattle.togaware.com/
R: persistencia
read.table, write.table
DBI, filehash, filehashsqlite, RMySQL, RODBC, ROracle,
RPostgreSQLTSSQLite, TSMySQL, TSodbc,
TSPostgreSQL ...
Python & R: Sagehttp://www.sagemath.org/
Python & R: manageRhttp://www.ftools.ca/manageR/
Notas Finales
Komodo Edit – Sciviews-Khttp://www.sciviews.org/SciViews-K/index.html
Contacto