martes, 28 de mayo de 2013

Extracción de datos desde la Web con Python


Python es un lenguaje de programación de script orientado a objetos que se puede utilizar en plataformas Unix, Windows, OS/2, entre otros. Se caracteriza por tener una sintaxis limpia que favorece un código legible, por la sencillez y velocidad al crear los programas y por la cantidad de librerías, tipos de datos y funciones incorporada.
Una de sus funcionalidades es que puede interactuar con la web. Existen dos módulos que son los principales para leer datos de URL: urllib y urllib2. Para utilizar estos módulos se deben importar, y así, utilizar sus bibliotecas.
Para crear un objeto parecido a un fichero para leer la URL se utiliza una función urllib2.urlopen, este objeto tiene métodos como read (lee el archivo), readline (lee una línea), readlines (lee todas las líneas y devuelve una lista de ellas) y close. También esta la función urllib2.geturl que obtiene de la URL de la cual se esta leyendo la información, y devuelve un objeto con las cabeceras de respuesta del servidor.

 
 
 

 
Con lo anterior estamos leyendo una página web, pero para poder mostrar los datos que salen en esta, se utiliza el formato json, que ofrece los medios para pasar los datos en un formato estandarizado para analizar pares clave-valor. Lo que hace es que divide las claves y los valores para así permitir evaluar y mostrar los datos.  Para poder utilizarlo se deben importar las bibliotecas json y cargar los valores con un array de pares clave-valor json.load.
 
 
 
 
 
 
 
Python también interactúa con base de datos. Para esto tiene una propuesta estándar llamada Python Batabase API, que permite que el código sea prácticamente igual independiente de la base de datos con la cual se esta trabajando. Para poder utilizarla se debe realizar una conexión con el servidor de la base de datos mediante una función connect (los parámetros no están estandarizados y dependes de la base de datos con la cual se esta trabajando) que devuelve un objeto de tipo connection que representa la conexión con el servidor. Ahora, para poder realizar operaciones con la base de datos se utiliza el método cursor del objeto connection para crear un objeto cursor. Las operaciones se ejecutan a través del método execute de cursor, pasando como parámetro una cadena de códigos SQ a ejecutor.
 
 


 
 
 
 
Las interacciones que permite este programa sirven de mucho a la hora de obtener datos desde la web en tiempo real e ir actualizando estos datos, para así ir creando una base de datos a la ves de poder interactuar con ellas. Para ilustrar esto y ver como se obtienen datos vea el siguiente video:
 
 
 
 

 
Ahora, para poder tomar estos datos y pasarlos a acces lea Importación de datos en Microsoft Acces de este mismo blog.
 
Fuente:
 
 
Autor: Catalina Durán

Leer más...

lunes, 27 de mayo de 2013

Regresión Lineal : STATA vs Excel

Regresión Lineal : STATA vs Excel


  • Al momento de querer obtener el impacto de cierta/s variable/s independientes sobre una variable dependiente de interés (el efecto de una variable X sobre una variable Y), podemos utilizar diversos instrumentos estadísticos para obtener los coeficientes que deseamos conocer.

    El propósito de este post es poder comparar dos herramientas que nos permiten realizar este tipo de análisis mediante “estimaciones lineales”, estos son STATA y Excel, donde cada uno presenta ventajas, desventajas y particularidades respecto al otro.
  • Obtener el impacto o grado de sensibilidad de una variables (o muchas variables) independientes sobre una variable dependiente de interés, es regularmente utilizado en el campo laboral en diversos ámbitos  Ejemplos de dicha aplicación se da en los sectores relacionados a finanzas, donde deseamos conocer en que medida los retornos de un activo responden ante las variaciones del mercado (Modelo CAPM). Otros casos en que es útil conocer dicha información es en estudios académicos, donde deseamos obtener el impacto de una variable como por ejemplo "años de educación" sobre el "salario" de una persona, y de tales resultados generar recomendaciones de política pública. 
  • Para el fin de este post, ha sido obtenida una muestra aleatoria pequeña de la base de datos “CASEN 2009”, la cual ha sido reducida a 1000 observaciones. Los problemas de realizar estimaciones lineales con pocas observaciones son evidentes, al no permitir a los estimadores converger a sus valores asintóticos, pero dado el fin netamente demostrativo en esta ocasión será útil una muestra reducida.

    (Para reducir una base a un número aleatorio de observaciones, puede utilizar el siguiente comando en STATA: Sample 1000 , count)

    Ya con nuestra base reducida, realizaremos una estimación lineal para intentar obtener de una manera bastante simple los coeficientes de un modelo donde regresionaremos el salario de un individuo contra sus años de escolaridad, su edad y su género ( hombre o mujer ). De forma que nuestro modelo a estimar será un modelo lineal multivariado de la siguiente forma:

           ln(ingreso) = B(0) + B(1)*Escolaridad + B(2)*Edad + B(3)*Género + u


    Las variables utilizadas para este modelo son:
    - ln (ingreso) = Logaritmo natural del ingreso
    - Escolaridad: Años de educación del individuo
    - Edad: Edad del individuo
    - Género: Variable dicotómica que toma valores igual a 1 cuando el sujeto es de género
                      masculino y  0 cuando el sujeto es de género femenino. 

    Para comprender los primeros pasos de cómo instalar la herramienta de análisis de datos y los componentes básicos de “ESTIMACION.LINEAL” en Excel, puede encontrar dicha información detallada en un post agregado con anterioridad en la siguiente dirección:

     Estimación lineal en Excel 


    Es importante destacar que gran parte del trabajo para todos aquellos rubros que se dedican a crear, manipular e interpretar datos, está enfocada en comprender como estos están estructurado, sus respectivas relaciones y sus fortalezas o debilidades, por lo que tan relevante como la operación misma de los datos, es  poder comprenderlos.
    Al momento de realizar una estimación lineal, la cual es llevada a cabo por el método de “Mínimos Cuadrados Ordinarios”, son varias las precauciones que deben tomarse antes de llevar a cabo la estimación lineal, para que los coeficientes obtenido sean insesgados y eficientes, así como al mismo tiempo la inferencia que hagamos de ella sea correcta.

    Dado que nuestra muestra proviene de los datos originales provenientes de la encuesta CASEN2009 , veamos como quedan presentados nuestros datos al acotar la muestra (Las grandes bases de datos, productos de su tamaño y forma de recopilación, suelen venir en formatos asignados a programas estadísticos como STATA o SPSS).






    De forma que podemos ver que para nuestras variables discretas (ingreso, escolaridad y edad) tenemos casos en que existen datos faltantes, los cuales STATA inmediatamente reemplaza con un punto.

    Veamos qué  pasa cuando deseamos incorporar esta información a nuestra hoja de cálculo de Excel:


    De forma que podemos observar como los datos faltantes en Excel al momento de ingresarlos, son asignados como celdas vacías, lo cual es un problema si deseamos correr inmediatamente una regresión lineal, dado que Excel reconoce los campos vacios como no numéricos y no nos permitirá realizar la estimación, entregando la siguiente advertencia:



    Si deseáramos realizar dicha regresión lineal en STATA no habría problemas, dado que STATA reconocerá inmediatamente dichos datos faltantes y no los considera dentro del proceso (O alternativamente podemos borrar las observaciones utilizando el comando “drop if variable==.”. Tal consideración en Excel es algo diferente, por el hecho que Excel no reconoce que cada fila sea una observación y si realizamos una selección de nuestros datos y apretando F5 vamos a selección especial y eliminamos las celdas en blanco, lo que haremos  será “desplazar” las celdas con información en reemplazo de aquellas vacías, modificando nuestra información, lo cual no deseamos.
    Para solucionar este problema debemos manualmente eliminar aquellas observaciones (filas) en que los campos sean nulos.
    Una vez que solo tenemos celdas no blancas, podemos llevar a cabo la estimación lineal en Excel, cuyos resultados presentamos en conjunto a los obtenidos en STATA (comando: reg ln_ingreso escolaridad edad genero):







    La primera de estas imágenes corresponde a los resultados entregados por Excel y la segunda a los entregados por STATA.
    Al compararlas podemos ver que de ambos output podemos obtener:
    - Coeficientes de cada una de las variables independientes (Betas) [I]
    -Mecanismos para comprobar la significancia de la variable [II]
      (i) Valor estadístico t-student
      (ii) p-value
      (iii) Intervalos de confianza
    - Análisis de descomposición de varianza [III]
    - Número de observaciones , valor para el test de hipótesis conjunta F , valores para el r^2 y
      r^2-ajustado.
    Para cada uno de los output cada uno de los ítems mencionados se encuentran  indicados en las siguientes imágenes:



    Podemos ver que una regresión de  todos nuestros datos, entregan los mismo resultados en ambas plataformas, entonces, ¿Qué diferencia usar Excel o STATA para análisis de regresiones?

    Comando adicionales a la regresión: 

    (i)Muchas veces al realizar regresiones, algunos de los supuestos básicos de mínimos cuadrados ordinarios son quebrantados , ejemplo de esto es el caso de existencia de heterocedasticidad, en cuyo caso en STATA podemos corregirlo simplemente utilizando el comando “robust” al final de nuestra regresión, mientras que en Excel, corregir la heterocedasticidad requiere de ejecutar manualmente el mecanismo de “mínimos cuadrados ponderados” (dividir cada observación por el inverso de su error estándar), que aunque es posible de hacer, es más complicado y requiere de tiempo.
    De forma que corregir e identificar los problemas de comportamiento de nuestros datos (heterocedasticidad, multicolinealidad y/o no normalidad de los errores) puede ser abordado de manera mucha más directa utilizando el programa STATA (conociendo los comandos adecuados o usando el menú alternativamente)

           (ii) Otro caso que nos permite realizar el programa STATA y que en Excel no es simple de realizar a primeras, es la utilización de factores de expansión. Los factores de expansión son ampliamente utilizados en datos de corte transversal (CASEN ,EPS , ENE , ELPI,…) donde las observaciones corresponde sólo a una muestra de la población objetivo , y para obtener conclusiones a nivel agregado es necesario ponderar cada individuo según su nivel de representatividad en la población.

            Criterios:
            
            Algunas veces deseamos obtener los coeficientes de una estimación lineal para un segmento muy específico de la población. Por ejemplo podríamos desear saber cuan rentable es un año de escolaridad para un individuo mujer, entre 20 y 30 años de la región Metropolitana.
    Cada una de estas condiciones son “filtros” que aplicamos a nuestra regresión. El sistema de análisis de datos de Excel no permite establecer dichas condiciones ex – ante por lo que si deseamos realizar una regresión para “Mujeres de entre 20 y 30 años de la región Metropolitana” debemos aislar dicha información manualmente o usando filtros para cada variable.

    La diferencia radica en que en la plataforma STATA los factores mencionados pueden ser realizados de forma automática en un solo comando sin necesidad de entrar a modificar ni ordenar la información. Los factores mencionados serían en un solo paso realizados en STATA de la siguiente forma:




     De forma que STATA tiene como ventaja a Excel, poder dar ciertas opciones y criterios a nuestras regresiones, así como evitar tener que estar modificando nuestra base cada vez que deseemos una regresión diferente.

    Consideraciones adicionales

    Otro tema importante es cuando los modelos de regresión dejan de ser de forma lineal como los del ejemplo recién mencionado. Un caso típico es el de “Modelos de probabilidad lineal” llamados comúnmente modelos PROBIT o LOGIT. Dichos modelos requieren de un proceso de maximización mediante iteraciones, lo cual STATA realiza automáticamente, pero que para poder realizar en Excel, es necesario contar con una herramienta especial llamada “XLSTAT” (o eventualmente podría ser programado mediante MACROS, dado que requerimos maximizar una función likelihood). Solo para mostrar la rapidez de obtener una regresión de probabilidad lineal en STATA se muestra el ejemplo, de cuan probable es que una familia tenga conexión a internet dependiendo de su nivel de ingreso y nivel educacional (recordar que en estos modelos lo relevante son los efectos marginales y no los coeficientes de la regresión en si):


    Como comentario final, podemos decir que todos las formas de regresión (lineal, probabilística, panel, modelos de sesgo de selección) pueden ser llevadas a Excel mediante programación, macros  y utilización de las definiciones funcionales de cada caso. La ventaja de STATA es que trae incorporadas dichas programaciones y pueden ser ejecutadas rápidamente conociendo los comandos y opciones adecuadas
    Por otra parte para realizar regresiones simples (como de series de tiempo o corte transversal) realizadas frecuentemente en el campo laboral relacionado a las finanzas y/o economía, Excel ofrece una herramienta simple y rápida de utilizar para obtener los coeficientes de una empresa dentro del rendimiento de mercado (por ejemplo). Lo cual da a Excel una ventaja en ser un programa mucho más amigable y fácil que STATA.
    También es necesario mencionar lo que respecta al análisis de datos, lo que se refiere a detectar y corregir problemas de los datos como heterocedasticidad, multicolinealidad, no-normalidad puede ser hechos tanto en Excel como en STATA, donde como ha sido mencionado durante el post, realizarlos en Excel es posible pero requiere de mayor número de pasos y tiempo, implicando un mayor grado de dificultad.
    Para poder saber cómo realizar todos los procedimientos específicos de test y regresiones específicas se recomienda consultar esta “guía de econometría aplicada usando Excel”.


    Por tanto como comentario final es posible concluir que en términos específicos de análisis y manejo de regresiones  STATA es un programa  mucho más completo, pues  es una plataforma diseñada para tales efectos, pero que requiere de mayor familiarización de sus comandos y modos de funcionamiento. En cambio Excel es una plataforma de rápido acceso que para regresiones simples es una herramienta lo suficientemente potente como para ser utilizada en caso de ser necesaria, pero restringida por el número de datos que soporta y por que la información este presentada de forma correcta.

    Fuente:

    Autor: Antonio Acha



Leer más...

domingo, 19 de mayo de 2013

¿Como realizar regresiones en Excel?

Introducción:
En este post se explicará cual es la utilidad de hacer una regresión lineal, luego como hacer una  regresión lineal en Excel, para finalmente ver un ejemplo practico de la utilidad de hacer una regresión es un caso real. 

Utilidad:
La regresión lineal es un elemento fundamental en la econometría, corresponde a un estudio de dependencia entre una variable dependiente y una o mas variables explicativas. El análisis de regresión tiene como objeto estimar y predecir el promedio poblacional de la variable dependiente para valores fijos de las variables explicativas.

Caracteristicas:
¿Como realizar regresiones en Excel?
1.Pulsar el boton general, posteriormente ir a opciones de excel.



2. Una vez ahí ir a complementos, y luego seleccionar herramientas para analisis. Excel para proporciona un conjunto de herramientas de análisis de datos denominado herramientas de análisis. Puede utilizar estas herramientas que ahorran etapas al desarrollar análisis estadísticos o técnicos complejos. Proporcionar los datos y parámetros para cada análisis. Las herramientas de utilizar las funciones de macros estadísticas o técnicas correspondientes. Algunas herramientas generan gráficos y tablas de salida también. Para utilizar estas herramientas, debe estar familiarizado con el área específica de las estadísticas o para el que desea desarrollar el análisis de ingeniería.




3. En complementos disponibles, pinchar herramientas para análisis y oprimir el boton aceptar.


4. Elegir la opción que dice regresión, y oprimir aceptar.


5. Finalmente se debe seleccionar los datos que deseo regresionar, por obligacion debe haber al meno una serie de datos de la variable dependiente (Y)  ponerlo en “Rango Y de entrada” y una serie de datos de variable independiente (X) ponerlo en “RangoX de entrada. La cantidad de datos debe ser igual de la serie de la “Y” como de las “X” que se quieran agregar. Finalmente oprimir aceptar.


6. En la siguiente imagen se puede ver como quedaría un output de un regresion lineal en excel.
Esta herramienta es útil para regresiones lineales pequeñas si no se cuenta con ningún otro programa estadistico como podría ser Stata. Se deja un video explicativo para aumentar la claridad de cómo hacer este procedimiento.http://www.youtube.com/watch?v=wLNlfOf1P-0.



Caso real:
Se regresiona el salario de la encuesta Casen como variable dependiente (y) y las variables independientes seran X1 hombre y mujer (2,1) respectivamente como una variable binaria, y X2 edad de los individuos y los resultados son los siguientes:

El R^2 ajustado, indice que el 1,6% de la varianza total es explicada por el modelo. Lo cual es muy bajo.
Los coeficientes de regresión nos entregan en nuestro caso el coeficiente como depende la edad y la mujer en el salario. El coeficiente de la mujeres -164015, osea cae el salario en ese valor si es mujer, en cambio la variable X2 explica como afecta la edad al salario y esta afecta positivamente.
La probabilidad o más conocido como p-value, deben ser menor al nivel de riesgo asumido en el caso del coeficiente beta. Por lo general se asume un 5% de riesgo, para que sea significativo.





















Fuentes:

Libro Econometria I, J. Benavente, A. Otero, J. Vásquez
Autores:
Gonzalo Saez.

Leer más...

viernes, 17 de mayo de 2013

Sincronización de datos entre Excel y Access




A muchos les habrá pasado que a pesar de trabajar en Access deben darse el trabajo de importar los datos desde Excel ya que estos sólo les llegan en dicha extensión. Yo no soy una de esas personas, pero si tú lo eres este post te será de mucha ayuda, ya que veremos cómo podemos crear un vínculo entre la base de datos del archivo Excel y la del archivo Access de manera que todo lo que se modifique en el primero se vea reflejado en el último. Así, no será necesario importar constantemente los datos, sino que simplemente modificar el archivo original.

Antes de proceder, algunos puntos a considerar.

  • No se pueden crear vínculos a bases de datos de Access desde Excel.
  • Tampoco se puede anexar datos a una tabla existente realizando una operación de vinculación. Esto porque Access no almacena los datos vinculados en la base de datos.
  • Se pueden vincular varias tablas a una base de datos, e incluso éstas tablas pueden provenir de distintas bases de datos de Excel.
  • Por último, toda modificación que realices en el archivo de origen se verá reflejada en la tabla vinculada de Access. Sin embargo, Access no tiene permitido modificar los datos de la tabla. Si quieres hacer esto debes hacerlo directamente desde el archivo original.
Pasos a seguir:

La sincronización es un proceso tan rápido y sencillo que no debiese tomar más de 2 minutos. A continuación mostraré, paso a paso, un ejemplo sobre cómo proceder para lograr la vinculación.

En primer lugar debemos identificar la base de datos con la cual vamos a trabajar. En este caso utilizaré datos de distintos tipos de cambios nominales que descargué desde la página del banco central.


Esta es la tabla, sin modificar, que obtenemos al momento de descargar los datos. Vamos a eliminar las dos primeras filas, de manera que en la primera fila quede el nombre de la columna. Esto nos facilitará el trabajo cuando hagamos la vinculación ya que nos preguntarán más adelante si la primera fila contiene encabezados de columna. Si no hacemos esto, tenderemos que nombrar manualmente cada columna, lo que claramente es una pérdida de tiempo mayor que simplemente borrar unas cuantas filas en Excel.

Una vez arreglada la base de datos, esta debiese verse así:



Cuando tengamos lista la base de datos la guardamos en la carpeta que deseemos y la cerramos. Yo lo guardé con el nombre de “Vinculación”.

En segundo lugar, abrimos Access, seleccionamos donde dice Nueva base de datos en blanco, le ponemos nombre al Archivo y apretamos crear. Yo le nombraré con el mismo nombre que el archivo Excel, “Vinculación”.



















Acto seguido, se nos mostrará una tabla en blanco. Nos vamos a Datos externos en la cinta de opciones, nos colocamos frente a la mini ventana que dice Importar y seleccionamos la opción que muestra el logo de Excel.


















Se nos abrirá una ventana con el nombre Obtener datos externos: Hoja de cálculo de Excel. Donde dice Especifique el origen de los datos apretamos Examinar y buscamos el archivo Excel donde lo guardamos. Una vez encontrado, seleccionamos la opción que dice: Vincular al origen de datos creando una tabla vinculada. Luego apretamos Aceptar.


Aquí es donde vemos la importancia de que la primera fila sea el nombre de las columnas, pues el programa nos pregunta efectivamente eso. Como eso es cierto en nuestro caso, hacemos click donde dice Primera fila contiene encabezados de columna y apretamos siguiente.


Finalmente, nos piden que nombremos la tabla vinculada y una vez que hagamos eso, apretamos Finalizar. Si todo se realizó correctamente debiese aparecer una ventana donde diga: Se ha terminado de vincular la tabla xxxx al archivo xxxx. Acto seguido apretamos aceptar y estamos listos para trabajar la base de datos en Access.



Ahora podemos realizar todas las consultas que queramos, como por ejemplo el tipo de cambio promedio en lo que va del año 2013.




¡Recordar! Access no tiene permitido alterar los datos de la tabla vinculada. Si quieres hacer esto debes hacerlo directamente desde el archivo original.

Bibliografía




Autor: Luis Javier Quezada.
Leer más...