jueves, 21 de febrero de 2019

Programando un comando de estimación en Stata: Dónde almacenar tus cosas.

¡Hola! La siguiente entrada es la segunda de la serie #StataProgramming

Artículo original escrito por David M. Drukker, Director Ejecutivo de Econometría.

Si me dices "yo programo en Stata", eso me hace feliz, pero no sé a qué te refieres. ¿Escribes scripts para hacer reproducible tu investigación, o escribes comandos de Stata que cualquiera puede usar y reutilizar? En la serie #StataProgramming, te mostraré cómo escribir tus propios comandos, pero empiezo por el principio. La discusión de la diferencia entre scripts y comandos aquí presenta algunos conceptos y construcciones de programación esenciales que utilizo para escribir scripts y comandos.

Este es el segundo post de la serie Programando un comando de estimación en Stata. Te recomiendo que empieces por el principio. Consulte  Programming an estimation command in Stata: A map to posted entries para un mapa de todas las publicaciones de esta serie.


Scripts versus comandos

Un script es un programa que siempre realiza las mismas tareas en las mismas entradas y produce exactamente los mismos resultados. Los scripts en Stata se conocen como archivos do y los archivos que los contienen terminan en .do. Por ejemplo, podría escribir un archivo do para

  1. leer en el conjunto de datos del Estudio Nacional Longitudinal de la Juventud (NLSY),
  2. limpiar los datos,
  3. formar una muestra para alguna población, y
  4. ejecutar un montón de regresiones en la muestra.

Esta estructura está en el corazón de la investigación reproducible; producir los mismos resultados a partir de las mismas entradas cada vez que se ejecute el archivo. Los do-files tienen una estructura única. Por ejemplo, no podría decirle a este do-file que quiero que realice las tareas análogas en el Estudio Panel sobre Dinámica de Ingresos (PSID). Los comandos son programas reutilizables que toman argumentos para realizar una tarea en cualquier tipo de datos. Por ejemplo, la regresión realiza mínimos cuadrados ordinarios en las variables especificadas independientemente de que provengan de NLSY, PSID o cualquier otro conjunto de datos. Los comandos de Stata se escriben en el lenguaje automático do-file (ado); los archivos que los contienen terminan en .ado. Los comandos de Stata escritos en el lenguaje ado se conocen como comandos ado.


Un ejemplo de do-file

Los comandos en el bloque de código 1 están contenidos en el archivo doex.do en el directorio de trabajo actual de mi computadora.


Ejecutamos los comandos al escribir do doex lo cual produce

Ejemplo 1: Resultado de do doex



  1. La línea 1 en doex.do es un comentario que ayuda a documentar el código, pero no es ejecutado por Stata. Los símbolos // inician un comentario. Todo lo que sigue a los signos // en esa línea es ignorado por Stata.
  2. En el comentario en la línea 1, puse un número de versión y la fecha en que cambié este archivo por última vez. La fecha y la versión me ayudan a realizar un seguimiento de los cambios que realizo mientras trabajo en el proyecto. Esta información también me ayuda a responder preguntas de otras personas con las que he compartido una versión de este archivo.
  3. La línea 2 especifica la definición del lenguaje Stata que uso. Stata cambia con el tiempo. La configuración de la versión garantiza que el archivo Do se siga ejecutando y que los resultados no cambien a medida que evolucione el lenguaje Stata.
  4. La línea 3 lee el conjunto de datos accident.dta.
  5. La línea 4 resume las variables accidents y tickets.


Almacenando cosas en Stata

Programar en Stata es como poner cosas en cajas, hacer que Stata cambie las cosas en las cajas y sacar las cosas cambiadas de las cajas. Por ejemplo, el bloque de código 2 contiene el código para doex2.do, cuya salida muestro en el ejemplo 2.



Ejemplo 2: Resultado de do doex2


En la línea 4 del bloque de código 2 genero la nueva variable In_traffic la cual resumo en la línea 5. doex2.do usa generate para cambiar lo que está dentro de la caja In_traffic y utiliza summarize para sacar una función de las cosas cambiadas de la caja. Las variables son el tipo de caja frecuentemente más utilizado en Stata, pero cuando estás programando, también lo serán las matrices.

Solo puede haber una variable llamada traffic en un conjunto de datos Stata y su contenido se puede ver o cambiar de forma interactiva, mediante un archivo do o un comando ado-file. De manera similar, solo puede haber una matriz de Stata llamada beta en una sesión de Stata y su contenido se puede ver o modificar de forma interactiva, mediante un do-file o un comando ado-file. Las variables de Stata y las matrices de Stata son cuadros globales porque solo puede haber una variable de Stata o una matriz de Stata en una sesión de Stata y su contenido se puede ver o cambiar en cualquier lugar de una sesión de Stata.

Lo opuesto a lo global es local. Si es local en Stata, solo se puede acceder a su contenido o cambiarlo en la sesión interactiva, en un archivo particular do, o en un archivo particular ado.

Aunque estoy discutiendo do-files en este momento, recuerde que estamos aprendiendo técnicas para escribir comandos. Es esencial comprender las diferencias entre las macros globales y las macros locales para programar comandos en Stata. Las macros globales, como las variables, podrían contener datos que los usuarios de su comando no desean cambiar. Por ejemplo, un comando que escribas nunca debe cambiar la variable de un usuario de una manera que no fue solicitada.


Niveles en Stata

La noción de que hay niveles en Stata puede ayudar a explicar la diferencia entre las macros globales y las macros locales. Supongamos que ejecuto 2 do-files o ado-files. Piense en la sesión interactiva de Stata como el nivel 0, y piense que cada archivo do o ado son los niveles 1 y 2 de Stata. Las macros globales como variables y matrices viven en la memoria global a la que se puede acceder o cambiar desde un comando ejecutado en el nivel 0, 1 o 2. Las macros locales solo pueden ser accedidas o cambiadas por un comando dentro de un nivel particular de Stata. (Esta descripción no es exactamente cómo funciona Stata, pero los detalles sobre cómo Stata realmente manejan los niveles no son importantes aquí).

La figura 1 muestra esta estructura.

Memoria por nivel en Stata


La figura 1 aclara

  • que los comandos ejecutados en todos los niveles de Stata pueden acceder y cambiar los objetos en la memoria global,
  • que solo los comandos ejecutados en el nivel 0 de Stata pueden acceder y cambiar los objetos locales al nivel 0 de Stata,
  • que solo los comandos ejecutados en el nivel 1 de Stata pueden acceder y cambiar los objetos locales al nivel 1 de Stata, y
  • que solo los comandos ejecutados en el nivel 2 de Stata pueden acceder y cambiar los objetos locales al nivel 2 de Stata.


Macros globales y locales: almacenamiento y extracción

Las macros son cajas de Stata que contienen información como caracteres, también conocidos como cadenas. Stata tiene macros globales y macros locales. Las macros globales son globales y las macros locales son locales. Se pueden acceder y cambiar a las macros globales mediante un comando ejecutado en cualquier nivel de Stata. A las macros locales se puede acceder y cambiar solo mediante un comando ejecutado en un nivel de Stata específico.

La forma más fácil de comenzar a entender las macros globales es poner algo en una macro global y luego volver a sacarla. El bloque de código 3 contiene el código para global1.do que almacena y recupera información de una macro global.



Ejemplo 3: Resultado de global1.do


La línea 3 del bloque de código 3 coloca la cadena y x1 x2 en la macro global llamada vlist. Para extraer lo que pongo en una macro global, prefijo el nombre de macro global con un $. La línea 4 del bloque de código y su salida en el ejemplo 3 ilustran este uso al extraer y mostrar el contenido de vlist.

El bloque de código 4 contiene el código para local1.do y su salida se muestra en el ejemplo 4. Ilustran cómo colocar algo en una macro local y cómo extraer algo de ella.



Ejemplo 4: Resultado de local1.do


La línea 3 del bloque de código 4 coloca la cadena y x1 x2 en la macro local llamada vlist. Para extraer lo que pongo en una macro local, encierro el nombre de la macro local entre una comilla a la izquierda (`) y una comilla a la derecha ('). La línea 4 del bloque de código 3 muestra lo que está contenido en la macro local vlist y su salida en el ejemplo 4 ilustra este uso.


Obteniendo cosas de los comandos de Stata

Ahora que tenemos las cajas, te mostraré cómo almacenar cosas computadas por Stata en estas cajas. Los comandos de análisis, como summarize, almacenan sus resultados en r(). Los comandos de estimación, como regress, almacenan sus resultados en e(). Algo tautológico, los comandos que almacenan sus resultados en r() también se conocen como comandos r-class y los comandos que almacenan sus resultados en e() también se conocen como comandos e-class.

Puedo usar return list para ver los resultados almacenados por un comando r-class. A continuación, enumero lo que summarize ha almacenado en r() y calculo la media a partir de los resultados almacenados. 


Ejemplo 5: Obteniendo resultados de un comando r-class


Los comandos de estimación son más formales que los comandos de análisis, así que guardan más cosas.

Los comandos oficiales de estimación de Stata guardan muchas cosas, porque siguen muchas reglas que facilitan la postestimación para los usuarios. No se alarme por la cantidad de cosas almacenadas por poisson. A continuación, enumero los resultados almacenados por poisson y creo una matriz de Stata que contiene las estimaciones de coeficientes. 


Ejemplo 6: Obteniendo resultados de un comando e-class




Hecho y sin hacer

En este segundo post de la serie #StataProgramming, discutí la diferencia entre scripts y comandos, proporcioné una introducción a los conceptos de objetos de memoria global y local, comenté sobre las macros globales y las macros locales, y mostré cómo acceder a los resultados almacenados por otros comandos

En la siguiente publicación de la serie #StataProgramming, analizo un ejemplo que ilustra las diferencias entre las macros globales y las macros locales.

¡Gracias por leernos!

Este blog es administrado por MultiON Consulting S.A. de C.V.

lunes, 21 de enero de 2019

Programando estimadores en Stata: Por qué deberías

Artículo original por David M. Drukker, Director Ejecutivo de Econometría.

Distribuir un comando de Stata que implemente un método estadístico hará que ese método sea utilizado por muchas personas. Ellos te lo agradecerán. ¡Y te citarán!

Esta publicación es la primera en la serie #StataProgramming sobre la programación de un comando de estimación en Stata que usa Mata para hacer el trabajo numérico. En el proceso de mostrar cómo programar un comando de estimación en Stata, analizaré la programación en  do-file, la programación en ado-file y la programación en Mata. Cuando la serie termine, será capaz de escribir comandos de Stata.

A los usuarios de Stata les gusta su sintaxis predecible y su estructura de estimación y postestimación que facilita la prueba de hipótesis, las pruebas de especificación y la interpretación de parámetros. Para ayudarlo a escribir los comandos de Stata que la gente quiere usar, ilustro cómo la sintaxis de Stata es predecible y le ofrezco una descripción general de la estructura de estimación-postestimación que deseará emular en sus programas.

Estructura de Stata por ejemplo
Uso y describo algunos datos simulados sobre el número de accidentes de tráfico observados en 948 personas.

Ejemplo 1: Datos de accidentes

La sintaxis predecible de Stata
Estimo los parámetros de un modelo de regresión de Poisson para accidentes (accidents) en función de las condiciones del tráfico (traffic), un indicador de ser un conductor masculino (male) y el número de multas recibidas en los últimos dos años (tickets).

Ejemplo 2: Un modelo Poisson para accidentes


Quiero centrarme en la estructura de este ejemplo para que usted pueda usarla para que sus comandos sean más fáciles de usar. En particular, quiero discutir la estructura de la sintaxis del comando y señalar que la salida es fácil de leer e interpretar porque es una tabla de salida estándar de Stata. Para los estimadores, la tabla casi siempre reporta estimaciones (a menudo coeficientes), errores estándar, pruebas contra cero y sus p-values e intervalos de confianza.

La sintaxis de Stata es predecible, lo que facilita su uso. Los usuarios de Stata "hablan Stata" y ni siquiera notan los detalles. Resalto algunos de estos detalles para que podamos hacer que la sintaxis de los comandos que escribimos sea predecible. Estos son algunos de los elementos de sintaxis estándar ilustrados en el ejemplo 2.


  1. El comando tiene cuatro elementos sintácticos;
    1. Nombre del comando (poisson),
    2. Lista de nombres de variables (accidents traffic male tickets),
    3. Una coma,
    4. Una opción (vce(robust)).
  2. En la lista de nombres de variables, el nombre de la variable dependiente es la primera y es seguida por los nombres de las variables independientes.
  3. El trabajo de la coma es separar el nombre del comando y la lista de variables de la opción u opciones.

La salida también está estructurada; se compone de un registro de iteración, un encabezado y una tabla de salida estándar. 

Marco de estimación-postestimación
Como usuario de Stata, ahora podría usar el marco de estimación-postestimación. Por ejemplo, podría realizar una prueba de Wald sobre la hipótesis de que el coeficiente de male es 3. 

Ejemplo 3: Una prueba de Wald de restricción lineal

O podría realizar una prueba de Wald de la hipótesis no lineal de que la proporción del coeficiente male sobre el coeficiente tickets es igual a 2.

Ejemplo 4: Una prueba de Wald de restricción no lineal

También podría predecir el promedio de accidentes para cada observación y resumir los resultados.

Ejemplo 5: Resumen de las medias condicionales predichas

Finalmente, podría usar margins para estimar los parámetros condicionales o promediados de la población que son funciones de los parámetros en el modelo original. Utilizo margins para estimar el número promedio de accidentes que se observarían si cada individuo recibiera 0 multas, o 1 multa, o 2 multas, ..., o 7 multas. Consulte [R] margins, Long y Freese (2006, sec. 4.4.2-4.4.3), y Cameron y Trivedi (2010, 10.5.6 {10.6.9) para introducirse a las funciones de estimación de los parámetros del modelo con margins.

Ejemplo 6: Funciones de estimación de los parámetros del modelo


El pegamento
Los resultados de la estimación almacenados en e() son el pegamento que mantiene unido el marco de estimación-postestimación. El comando poisson almacena muchas cosas en e(). Podría usar ereturn list para enumerar todas estas cosas, pero hay muchos objetos almacenados que todavía no le interesan.

La mayoría de las características de estimación-postestimación que discutí se implementaron utilizando e(b), e(V) y e(predict), que son el vector de estimaciones puntuales, el VCE estimado y el nombre del comando que implementa predict después de poisson.

Mostraré cómo almacenar lo que necesita en e() en la serie #StataProgramming.

Estructura de los comandos de Stata
Aquí hay un resumen de las tareas realizadas por un comando de estimación de Stata.

  1. Análisis sintáctico de la entrada del comando.
  2. Calcular los resultados
  3. Almacenar resultados en e()
  4. Desplegar el resultado
Debe escribir un comando de predicción para completar el marco de estimación-postestimación. Una vez que haya almacenado los resultados de la estimación y haya escrito el comando predict, el comando margins funcionará.

Explicaré cada uno de estos pasos en la serie de publicaciones #StataProgramming.

Use esta estructura a tu favor. Para hacer que su comando sea fácil de usar, diséñelo para tener la sintaxis predecible implementada en otros comandos y para que funcione en el marco de estimación-postestimación. Esta tarea es mucho más fácil de lo que parece. De hecho, es simplemente fácil. El lenguaje Stata le dirige en esta dirección.

Hecho y sin hacer
Le enseñaré cómo programar un comando de estimación en Stata en la serie #StataProgramming. También le mostraré cómo funciona el trabajo numérico en Mata. Comenté los siguientes puntos, en este primer post.
  1. La estructura predecible de la sintaxis de Stata hace que Stata sea fácil de usar. Debes emular esta estructura, para que tus comandos sean fáciles de usar.
  2. El marco de estimación-postestimación simplifica la inferencia y la estimación avanzada. Es fácil para usted hacer que su comando funcione con este marco.
  3. Los resultados de la estimación almacenados en e(), y el comando predict, son el pegamento que mantiene el marco de estimación-postestimación juntos.
En la siguiente publicación, discuto las herramientas de programación en do-file que usaré posteriormente para el análisis sintáctico de la entrada del comando.

Referencias
Cameron, A. C., and P. K. Trivedi. 2010. Microeconometrics Using Stata. Revised ed. College Station, Texas: Stata Press.
Long, J. S., and J. Freese. 2014. Regression models for categorical dependent variables using Stata. 3rd ed. College Station, Texas: Stata Press.


Este blog es administrado por MultiON Consulting S.A. de C.V.

viernes, 23 de noviembre de 2018

Obteniendo datos de la NBA en Stata

Por Kevin Crow, Desarrollador de Software Senior.


Desde que nuestro interno, Chris Hassell, terminó nfl2stata antes de lo esperado, siguió adelante y creó otro comando para raspar en la web https://stats.nba.com y obtener información sobre la NBA. El comando es nba2stata. Para instalar el tipo de comando escriba:



Cuando Chris escribió el comando por primera vez, supe que quería ver cómo el tiro de tres puntos ha cambiado la forma en que se juega el juego. Por ejemplo, puedo encontrar el mejor tirador de tres puntos de la temporada pasada.



O puedo verificar el porcentaje de tiros de tres puntos de un jugador en temporada regular durante los últimos cinco años.



O puedo ver cómo el porcentaje en tiros de tres puntos afecta la probabilidad de ganar de tu equipo favorito.



nba2stata es genial si está planeando hacer un análisis profesional de baloncesto. Aunque este comando parece idéntico a nfl2stata, no lo es. El comando funciona de manera muy diferente.


Web Scraping JSON

En nuestra última publicación del blog, hablamos sobre el raspado web de https://www.nfl.com y la extracción de datos de las páginas HTML. Los datos de la NBA son diferentes. Puede acceder a los datos a través de objetos JSON desde https://stats.nba.com. JSON es un formato de datos ligero. Este formato de datos es fácil de analizar; por lo tanto, no tenemos un comando para raspar estos datos. Raspamos y cargamos estos datos sobre la marcha.

Los derechos de autor de la NBA son similares a los de la NFL; puede utilizar una copia personal de los datos en su computadora personal. Si "usa, muestra o publica" cualquier cosa usando estos datos, debe incluir "una atribución prominente a http://www.nba.com”. Otra diferencia es que los datos de la NBA almacenados en http://stats.nba.com pueden remontarse a la década de 1960, según el equipo.


Comando

Solo hay cuatro subcomandos para nba2stata, aunque podríamos haber desarrollado más. Chris tuvo que volver a la escuela.

Para cargar los datos estadísticos del jugador en Stata, use

Para cargar datos del perfil del jugador en Stata, use

Para cargar datos del equipo en Stata, use

Para cargar datos de la lista de equipo en Stata, use


Al igual que con nfl2stata, deberá usar comandos de Stata como collapse, gsort y merge para generar las estadísticas, ordenar los datos y unir dos o más conjuntos de datos de la NBA para examinarlos.


Ejemplos

Una cosa de la que siempre tengo curiosidad es qué equipos universitarios producen la mayoría de los jugadores de la NBA. Esto es fácil de averiguar utilizando nba2stata, collapse y gsort.



Debido a la cantidad de datos obtenidos, es posible que desee guardar los datos del perfil del jugador después de obtenerlos, ya que la descarga lleva tiempo. En mi máquina, tomó aproximadamente una hora. El tiempo depende en gran medida de la cantidad de datos que se deben obtener. En el caso anterior, son todos los datos de los perfiles de los jugadores de la NBA.

Otro ejemplo interesante sería encontrar los equipos más antiguos y más jóvenes en la NBA. Puedes usar la lista del equipo para hacer esto.



Implementación

Una vez más, Chris usó los plugins de Java en Stata y Gson para escribir la mayoría del comando.


Acceda al artículo original aquí.

Para cualquier información comercial de Stata, mandenos un correo a info@multion.com y con gusto lo atenderemos.


Este blog es administrado por MultiON Consulting S.A. de C.V.

miércoles, 31 de octubre de 2018

Colapsando bases de datos en Stata

Hoy en nuestro blog daremos un breve recorrido por las opciones que tiene Stata para que podamos colapsar bases de datos a través del comando collapse, pues a veces resulta de mayor utilidad las estadísticas descriptivas de nuestras variables, así como sus características y con este comando podremos obtener una nueva base de datos a partir de estas.


A continuación, abrimos una base que contiene las características de la estadística de sacrificio de ganado 
según la especie:


Las variables Año y Mes son variables de texto que identifican el año y mes de las cifras de nuestras variables, donde podemos observar que tenemos cuatro especies (bovino, porcino, ovino y caprino) por número de cabezas y, para cada una de ellas tenemos la producción medida en toneladas y el valor de la producción medido en miles de pesos[1]. A través de ejecutar el comando summarize podemos observar estadística descriptiva de nuestras variables a lo largo de toda la muestra; sin embargo, utilizaremos collapse para producir nuevas bases de datos según nuestros requerimientos.


Nuestro primer paso es utilizar el comando de manera sencilla:


Al utilizar simplemente el comando seguido de una lista de variables obtenemos que nuestra base de datos ha colapsado a sólo cuatro datos: el promedio de cabezas de ganado por especie. Estos datos son los mismos que observamos en la salida del comando summarize.

Por lo cual, la opción que viene predeterminada en el comando collapse calcula los promedios de las variables especificadas. De tal forma, nosotros podemos especificar qué estadístico deseamos que se calcula al realizar la contracción de la base original; a continuación, indicaremos que necesitamos la sumatoria de las variables con la especificación (sum) antecediendo a la lista de variables, así, este estadístico será calculado para cada una de las variables hasta que Stata encuentre una nueva especificación.


Esto resulta de mayor utilidad cuando introducimos mayores especificaciones, tal como la siguiente.


En la nueva base obtuvimos la sumatoria anual de cabezas de ganado de las cuatro especies, gracias a la opción by() pudimos referirle a Stata la variable que tenía incluida las categorías por las cuales debíamos realizar el colapso de datos. Nuestra base cuenta con una observación más que contiene solo casillas en blanco, de ahí que la primera fila contenga el valor faltante (.) y sus valores correspondientes (0).


Como se mencionó líneas atrás, Stata aplicará el estadístico indicado a la lista de variables hasta que encuentre una nueva especificación; sin embargo, no podemos utilizar dos veces una variable existente en nuestra base original, pues Stata arrojará el siguiente error:


Por ello, podemos crear nuevas variables a partir de las que tenemos en nuestra base original, pero nombrándolas de distinta manera.


En esta ocasión hemos nombrado nuevas variables (vp_*), en las que se calcula la media ((mean)), en base a nuestras variables de valor por especie originales (Valor*).

Por último, también podemos realizar el colapso de información utilizando expresiones condicionales como if.



Gracias por leernos. Espere pronto la próxima entrada.

Solicite su cotización ahora: jcervantes@multion.com

Este blog es administrado por MultiON Consulting S.A. de C.V.

viernes, 28 de septiembre de 2018

Obteniendo datos de la NFL en Stata

Esta es una traducción basada en la publicación original de Kevin Crow, Senior Software Developer.


La temporada de fútbol está a la vuelta de la esquina, y no podría estar más emocionado. Tenemos una liga de fútbol de fantasía bastante competitiva de StataCorp. Siempre busco una ventaja en nuestra liga, así que desafié a uno de nuestros pasantes, Chris Hassell, a escribir un comando para buscar en la web http://www.nfl.com los datos de la NFL. El nuevo comando es nfl2stata.

Para instalar el comando, escriba:



Con este nuevo comando, puede encontrar fácilmente a los corredores que tuvieron más touchdowns la temporada pasada,



Puede encontrar los mejores 5 pateadores de gol de campo (por goles de campo realizados) de la temporada pasada.



Puede generar un gráfico de los mejores líderes en pases de la última temporada regular.




Hay muchos datos interesantes por recorrer, especialmente si te interesa el fútbol de fantasía, como a mí. Aunque esto parece un comando simple, en realidad no lo es, debido al tiempo que lleva buscar, analizar y cargar los datos desde http://www.nfl.com  a través del web scraping.


Web scraping


Es posible que haya oído hablar del término "web scraping". Una simple definición de web scraping es extraer datos de sitios web. La mayoría de las veces, los derechos de autor de un sitio web impiden que las personas distribuyan los datos obtenidos de su sitio web, pero puede usar una copia personal de los datos en su computadora personal. Esto es lo que dicen los derechos de autor de la NFL. Debido a esto, los usuarios deben “raspar” el sitio web ellos mismos. Para hacer esto para los datos de la NFL, escriba:



Este comando raspará todos los datos desde 2009 hasta el año actual y guardará los datos como base de datos en formato Stata en su computadora local en la ruta de acceso a los archivos ado. Específicamente, los guardará en su directorio PLUS donde los comandos nfl2stata estarán disponibles. El primer año de datos de la NFL almacenado en http://www.nfl.com es 2009. Actualmente, no hay datos para raspar antes de esto. El web scraping es un proceso costoso y lento. Dependiendo de varios factores (velocidad de la computadora, memoria de la computadora, conexión de red, etc.), este raspado inicial de datos puede tardar horas en completarse. Es posible que desee ejecutar el comando anterior durante la noche. Una vez que haya raspado los datos históricos, puede simplemente escribir:



La actualización de las bases almacenadas localmente con los datos de la semana actual se ejecuta más rápido.

A partir de la redacción de este blog, el comando de raspado funciona, pero si la NFL cambia el formato de la página HTML, el comando se romperá, y si esto sucede, lo corregiremos si podemos. Además, los datos que se eliminan cambiarán con el tiempo a medida que la NFL actualice los datos anteriores en su sitio, por lo que a veces los datos que recopiló hace unas semanas no coincidirán con los que ve en el sitio web de ESPN o NFL. Además, a veces los datos pueden existir en más de un lugar y pueden ser inconsistentes dado que un sitio se actualiza las estadísticas y otros no. Puede volver a raspar los datos utilizando nfl2stata scrape, season (_all) replace para crear nuevas bases de datos limpias. Estos problemas son los que hacen que el web scraping sea un proceso volátil.


Comando

El comando nfl2stata scrape produce bases de datos de: juego, resumen de juego, jugada por jugada, jugador, perfil de jugador, lista y equipo para cada año. Para cargar esos datos en Stata, debe usar los siguientes comandos:

Para cargar datos de juego por juego en Stata, use:


Para cargar datos del resumen del juego en Stata, use:


Para cargar datos de jugada por jugada en Stata, use:


Para cargar datos de un jugador especifico en Stata, use:


Para cargar datos del perfil de jugador en Stata, use:


Para cargar datos de la lista de equipo en Stata, use:


Para cargar datos del equipo juego por juego en Stata, use:



Cada uno de estos comandos buscan su respectiva base de datos. A menudo necesitará usar comandos de Stata como collapse, gsort y merge para generar las estadísticas, ordenar los datos y fusionar dos o más datasets de la NFL para examinar los datos. Veamos algunos ejemplos más.


Ejemplos


Descubrí que los dos comandos de Stata que uso con mayor frecuencia con estos datos son gsort, que ordena los datos en orden ascendente o descendente, y collapse, lo que hace un conjunto de datos de estadísticas de resumen. collapse es especialmente útil cuando se trabaja con datos de múltiples juegos o múltiples temporadas. Por ejemplo, para saber qué receptor abierto líderó la NFL en recepciones el año pasado, escribiría:



A veces, necesita fusionar dos o más bases de datos NFL para responder algunas preguntas sobre los datos. Por ejemplo, para encontrar el peso promedio de un corredor de la NFL en los últimos nueve años, debe fusionar los datos de la lista y los datos del perfil para obtener la posición del jugador y las variables de peso del jugador juntas en el mismo conjunto de datos. Por ejemplo, escriba:



Para encontrar quién lideró a la NFL en recepciones o carreras, necesita fusionar todos los datos de jugadores ofensivos en un solo conjunto de datos. Por ejemplo, para enumerar a los líderes de recepción escriba:




Implementación

Chris usó los complementos Java de Stata para escribir la mayoría del comando. Las otras librerías Java que él usó para escribir el comando son:



Hay una gran cantidad de bibliotecas de Java disponibles para web scraping. Estos son solo los que usamos.

Si desea acceder al artículo original, de clic aquí.

Gracias por leer una entrada más de nuestro blog. Le invitamos continuar al pendiente de este blog y de nuestras redes sociales en las que encontrará descuentos, lanzamientos y artículos de su interés. ¡Hasta la próxima entrada!



Este blog es administrado por MultiON Consulting S.A. de C.V.