may 062013
 
tree_map_export_esp_all_show_2010

Mientras las Administraciones Públicas españolas continúan sin ser capaces de proporcionar unas interfaces homogéneas y modernas para que cualquier analista pueda acceder a los datos disponibles, el mundo se mueve en otra dirección.

Últimamente he sido consciente de la aparición de unas cuantas webs de datos que añaden una capa de depuración y visualización a fuentes ya disponibles. Este enriquecimiento hace más fiable la información de partida, pero especialemente, más accesible y cómoda de utilizar. A continuación las presento y animo a los lectores a explorarlas (todas son gratuítas).

Quandl

La web de Quandl (http://www.quandl.com) proporciona acceso a una amplia selección de datos que proceden de diferentes fuentes en distintos ámbitos: mercados, economía, demografía, cotizaciones, y un largo etcétera. Los datos se pueden descargar y visualizar on-line y dispone de un paquete de funciones de R que facilitan la descarga de datos en dicho entorno de análisis.

Knoema

Knoema (http://knoema.com) tiene una filosofía y cobertura de variables similar a Quandl, pero pone el énfasis en la elaboración de visualizaciones sofisticadas que se pueden incrustar en páginas web. El mecanismo de extracción de datos es menos refinado que en Quandl, envían un email automático con los datos solicitados en formato .xls.

The observatory of economic complexity

Partiendo de los datos brutos de comercio internacional, R. Hausmann y sus discípulos han hecho accesible una riquísima fuente de información estadística, homogeneizando y alargando muchas de las series disponibles (http://atlas.media.mit.edu/). Las impactantes visualizaciones de exportaciones e importaciones proporcionan un resumen compacto del intercambio de bienes entre países y los datos se pueden descargar. Si bien el nivel de desagregación es suficiente para muchos usos, se hace necesario recurrir a COMTRADE para obtener información por país, año y producto.

Paquete WDI para R

El Banco Mundial, bajo la denominación World Development Indicators (http://data.worldbank.org) elabora una base de datos con más de 8000 series temporales comparables entre países que abarcan todo el espectro económico y demográfico. Tanto Quandl como Knoema utilizan ampliamente dicha base de datos y se pueden descargar de la web, pero el paquete WDI de V. Arel-Bundock facilita el acceso directo, selección y carga de datos en R.

sep 042012
 
tabla-isp

Los organismos públicos españoles no ponen sencillo a los analistas el trabajo con los datos que publican (que son menos de los que sería deseable en un país con verdadera transparencia). Cada entidad que publica datos lo hace con su propio formato, que en ocasiones es el de algún programa estadístico comercial (¿para cuándo formatos abiertos?). En algunos casos, como el de este ejemplo, la información se publica como una tabla en una página web, de la que hay que extraer los datos de interés.

Continue reading »

sep 032012
 
chiste-politica-1

Quería preparar un ejemplo de web scraping (extracción de datos de páginas web) con R y me decidí por utilizar algún indicador de los que publica periódicamente el Centro de Investigaciones Sociológicas (CIS) en los Barómetros mensuales. Elegí los indicadores de la situación política. Ciertamente, no es que anduviera sobrado de esperanza en lo tocante a la confianza que los ciudadanos vienen depositando en los políticos, pero los datos son para llorar, y es que viene de antiguo:

Continue reading »

mar 262012
 
exportaciones

Desde hace unos meses estoy trabajando con datos de exportaciones de productos por países. Básicamente se trata de un análisis comparativo sobre cómo han evolucionado algunos estados cambiando su cartera exportadora hacia bienes que requieren más valor añadido, frente a otros países que no han realizado dichos cambios. La idea, resumida, se puede encontrar en este artículo que apareció en el blog Nada es Gratis.
Continue reading »

feb 102012
 
Rlogo-beta

1.1  Carga de datos en R

Los datos en R se almacenan en objetos de clase data.frame, que son una especie de matriz, con las observaciones por filas y las variables en columna. Los tipos de las variables pueden ser diferentes (continuas, discretas, texto, cualitativas, …), esa es la diferencia formal con una matriz en R, ésta última debe contener el mismo tipo de componentes elementales.

Los datos que manejamos suelen estar en archivos con dos formatos .csv y .xls. Los archivos .csv son texto, con las observaciones por filas y las variables de cada observación separadas por comas. La primera fila del archivo suele contener los nombres de las variables. Este formato es preferible, porque no requiere un software específico para su edición.

En la siguiente línea se lee el archivo bwght.csv y los datos se almacenan en un data.frame llamado bwd (al final del artículo se describen las variables cargadas):

> bwd <- read.csv('bwght.csv')

El archivo puede estar en cualquier directorio del ordenador, al que podemos acceder usando la función setwd() o indicándolo como parte del nombre del archivo. También podemos cargar los datos desde una dirección de internet (una URL):

> bwd <- read.csv('http://www.grserrano.es/datos/bwght.csv')

En ocasiones, el separador de campos es el ; y los decimales se separan con una coma en vez de un punto. Se puede usar la misma instrucción que antes, pero con argumentos adicionales como en: bwd <- read.csv("bwght.csv", sep=";", dec=",").

Si los datos se encuentran, por ejemplo, en el archivo bwght.xls, en una hoja llamada “peso”, se pueden leer con:

> library(XLConnect)

XLConnect 0.1-7 by Mirai Solutions GmbH <xlconnect@mirai-solutions.com> 
http://www.mirai-solutions.com , http://miraisolutions.wordpress.com 

> wb  <- loadWorkbook("bwght.xls", create=FALSE)
> bwd <- readWorksheet(wb, "peso")

En todo caso, conviene comprobar la lectura con head(bwd) y tail(bwd) que muestran, respectivamente, las primeras y últimas filas de un data.frame:

> head(bwd)

  faminc cigtax cigprice bwght fatheduc motheduc parity male white cigs
1   13.5   16.5    122.3   109       12       12      1    1     1    0
2    7.5   16.5    122.3   133        6       12      2    1     0    0
3    0.5   16.5    122.3   129        0       12      2    0     0    0
4   15.5   16.5    122.3   126       12       12      2    1     0    0
5   27.5   16.5    122.3   134       14       12      2    1     1    0
6    7.5   16.5    122.3   118       12       14      6    1     0    0

Utilizando el paquete de funciones foreign se pueden leer archivos creados por programas estadísticos y matemáticos como Stata (read.dta()), SAS (read.xport()), SPSS (read.spss()) y Octave (read.octave()). R también dispone de funciones para acceder directamente a bases de datos locales o en servidores remotos.

1.2  Creación de variables

Se puede acceder a las variables de un data.frame usando el nombre del data.frame un símbolo $ y el nombre de la variable, como en:

> head(bwd$bwght)

[1] 109 133 129 126 134 118

o de forma equivalente con:

> head(bwd[, "bwght"])

[1] 109 133 129 126 134 118

La ventaja de este segundo método es que podemos seleccionar un subconjunto de columnas head(bwd[, c("bwght", "cigs", "faminc")]). Nótese como los nombres de las variables se han agrupado con c(). También es posible acceder por el número de columna, de esa forma, número negativos excluyen las columnas.

Para crear una variable o sobreescribir una ya existente, usamos la asignación, que en R se hace con <- (como al cargar datos desde archivos). Para crear una nueva variable con el peso en kg. (que originalmente venía en onzas) se haría:

> bwd$bwghtkg <- bwd$bwght*2.83495231/100

Si, por el contrario, queremos almacenar el peso en kg. en una variable ya existente, el procedimiento es idéntico, pero asignamos a una variable que ya estaba en el data.frame:

> bwd$bwght  <- bwd$bwght*2.83495231/100

Las variables cualitativas conviene etiquetarlas porque las salidas serán más descriptivas. Antes se cargaron las variables white (que toma valor 1 si el bebé es blanco y 0 en otros casos) y male (1 si el bebé es varón y 0 en otros casos). A partir de ellas creamos etnic, con valores “Blanco” y “No blanco”, y sexo con valores “Hombre” y “Mujer” (para hacer una comparación de igualdad en R se usa ==):

> ## Variables cualitativas con etiquetas
> bwd$etnic  <- factor(ifelse(bwd$white==1, "Blanco", "No blanco"))
> bwd$sexo   <- factor(ifelse(bwd$male==1, "Hombre", "Mujer"))

La función ifelse() realiza la comparación que aparece en primer lugar y devuelve el segundo argumento si es cierta o el tercero si es falsa. Dicha comparación se hace elemento a elemento si se trata de una variable o un vector. Por otra parte, la función factor() toma una variable de cadena y la convierte en variable cualitativa (que en R se denomina factor).

Para eliminar una variable de un data.frame, se le asigna el valor especial NULL como en la siguiente línea:

> bwd$bwghtkg <- NULL

Los nombres de las variables (columnas) de un data.frame se pueden ver y modificar con:

> colnames(bwd)

 [1] "faminc"   "cigtax"   "cigprice" "bwght"    "fatheduc" "motheduc"
 [7] "parity"   "male"     "white"    "cigs"     "etnic"    "sexo"    

Para seleccionar un subconjunto de las filas de un data.frame se usa la función subset(). El primer argumento es el data.frame y el segundo una condición lógica basada en las columnas. A continuación seleccionamos las observaciones en las que la madre es fumadora y las guardamos en un nuevo data.frame:

> bwd.fuma <- subset(bwd, subset=(cigs>0))

Los operadores de comparación son <, <=, ==, !=, => y >. Las comparaciones se pueden concatenar con & (y lógica) y | (o lógica). La función subset() admite un argumento select para escoger un subconjunto de columnas del data.frame inicial bwd.fuma <- subset(bwd, subset=(cigs>0), select=c("bwght", "cigs", "faminc")).



Datos del peso de recién nacidos

Datos de ejemplo para la especificación de un modelo de regresión que trata de caracterizar factores que pueden afectar al peso de recién nacidos. La base de datos (bwght.csv) procede de Wooldridge (2006) y contiene información recogida en 1388 partos sobre:

  • El peso de los bebés: bwght (en onzas, 100 onzas=2.83495231 kg),
  • la renta de la familia en 1988 en miles de dólares (faminc),
  • el número medio de cigarrillos fumados diariamente por la madre durante el embarazo (cigs),
  • el número de orden que ocupa el recién nacido dentro de los hijos de la mujer (parity),
  • los años de educación del padre (fatheduc) y de la madre (motheduc), en ambas variables, 0 indica dato no disponible,
  • precio de los cigarrillos en el estado de residencia (cigprice) e impuestos sobre el tabaco (cigtax)
  • ficticia de sexo del bebé (male, 1=varón y 0=mujer) y
  • ficticia de grupo étnico (white, 1=blanco y 0=otros).
 Posted by at 12:44  Tagged with: ,
oct 252011
 
encuesta

Podéis descargar los apuntes del tema 3, “Muestreo en poblaciones finitas”. El material complementario para las clases y trabajo personal es:

Incidiendo en las discrepancias que se producen al estimar con encuestas frente a censos (y también debido a la naturaleza de lo observado), merece la pena leer un breve artículo sobre las cifras de paro y empleo en España aparecido en el Boletín de Estadística e Investigación Operativa volumen 26, número 3. Se puede descargar pulsando aquí.