martes, 27 de octubre de 2015

Detectar duplicados y eliminarlos


Escrito por el Prof. Florentino Jorge Menendez

El tratamiento más sencillo es con sólo dos instrucciones:

duplicate list (Acá te lista las observaciones duplicadas en todas las variables)
duplicate drop (Acá te borra observaciones de tal forma que te queda solo una).

Si quisieras eliminar los casos duplicados, que aparecen en una variable y con ella sus datos (otras columnas). La sintaxis seria duplicates drop var1, force. Se le agrega el force, para poder eliminar los duplicados. 

Si vos tuvieras miedo de tener observaciones repetidas en una variable de identificación, que por cualquier razón (error de tipeo por ejemplo) no fuera igual en todas las variables, las podés trabajar con:

duplicates list id (Esto te da si están repetidas en id)
duplicates tag id, gen(id_dupl) (Esto pone un 1 en la variable id_dupl, para poder mirar qué pasa con esas observaciones)

list if id_dupl == 1  (Para ver en qué difieren las variables de observaciones que tienen mismo id)

Con la sintaxis db duplicates, te accede a la seleccion de las diferentes cuadros de menus posibles para manejar duplicados. tag, drop, example, report...

Los diferentes cuadros de menu para trabajar los duplicados:

*db duplicates 


Preserve y restore

Antes de eliminar alguna variable o eliminar determiandas observaciones, se puede tener un respaldo de la base antes de realizar cualquier acciones antes mencionadas. Estos comandos permiten guardar la base de datos tal como se encuentra. 

  • preserve toma una foto de la base de datos y se pueden realizar modificaciones en la base. Si se quiere revertir se hace restore.


Eliminar y generar nuevas variables

Generate

Para crear una nueva variable, usaremos el comando generate. En Stata al crear una nueva variable debemos especificar el nombre y el contenido de la misma. Para definir el contenido usaremos expresiones lógicas y funciones aritméticas, lo que da mucho poder al comando generate. Por ejemplo:
  • generate nuevavariable=.  (Genera una nueva variable con todos los valores ‘missing’)
  • generate nuevavariable=variableexistente (Genera una copia de una variable)
  • generate nuevavariable=1 if variableexistente<=2 (Genera una variable que toma valor 1 si la antigua es menor o igual que 2, y missing para el resto)
  • generate nuevavariable= variableexistente^2 (Genera una variable igual al cuadrado de la antigua)
Dialogo Box (Cuadro de Menu) de Generate


Drop /keep

Para eliminar una variable, o un conjunto de variables, sólo tenemos que usar el comando drop nombrevariable Por el contrario, si lo que queremos es conservar una serie de variables, usaremos el comando keep, que es el inverso de drop (elimina todas las variables no especificadas).

Drop if / drop in (keep if/ keep in)

Si lo que queremos es eliminar algunas observaciones en lugar de variables, usaremos las expresiones lógicas para especificar qué casos queremos borrar (o conservar). Así, usaremos drop if cuando queramos especificar una condición, y drop in cuando queramos delimitar un rango de observaciones.






















Recodificar variables

Replace

Si para crear una nueva variable usábamos el comando generate, para cambiar su contenido, normalmente usaremos el comando replace. El comando replace, combinado con las expresiones lógicas y funciones aritméticas, es de gran utilidad y nos permite hacer muchas cosas que en otros programas resultan más complicadas de hacer. La sintaxis general es replace variable = valor o expresión (if /in)





















Recode

recode es una alternativa, más limitada pero útil para recodificar variables categóricas. Con recode cambiamos los valores de la variable uno a uno, debiendo especificar siempre los valores de partida y los de destino. La sintáxis básica es como sigue: recode variable (#=#) (# # = #) (# / # =#) En esta sintaxis, podemos especificar dos valores de partida separándolos con un espacio, o un rango de valores, usando el símbolo / o  # normalmente será un valor numérico, pero también puede ser:
  • missing - Todos los casos perdidos
  • nonmissing - Todos los casos válidos
  • else - El resto de valores no especificados
  • min - El valor mínimo
  • max - El valor máximo (ojo con los missing que se consideran infinito)




Estadística descriptiva en Stata


Summarize

El comando summarize variable1 variable2 (etc.) nos aporta información del número de observaciones válidas, la media, la desviación estándar y el mínimo y máximo de las variables que nosotros especifiquemos. Se trata de la información más relevante y, a menudo, tendremos suficiente con ella. Sin embargo, si queremos un resumen más completo podemos usar la opción detail, summarize variable1 variable2, detail. Es la sintaxis para el resumen estadistico.


Stata nos aporta más información sobre el contenido y propiedades de las variables. Con este comando, obtenemos los estadísticos descriptivos como la media, la desviación estándar, mínimo y máximo, Percentiles, Varianza, Asimetría (Skewness) y Kurtosis.


Tablas de estadísticos descriptivos

El comando summarize, a efectos generales, resulta de gran utilidad para hacer resúmenes de la muestra entera. Si lo combinamos con la opción if, podemos pedir estadísticos descriptivos para las submuestras que nos interesen, y combinado con by nos permite obtener los estadísticos descriptivos separados por grupos. Pero esta opción produce un output difícil de leer e incómodo de exportar. Por eso Stata dispone de diversas opciones para realizar tablas de estadísticos descriptivos:

Tabulate, summarize
Nos muestra una tabla de frecuencias de los grupos con la media y la desviación estándar de la variable especificada. Es útil cuando queremos estos dos estadísticos de una variable entre grupos, pero no tiene mucha más flexibilidad. tabulate variablegrupo, summarize(variable1)



Tabstat
Este comando es más potente, puesto que nos permite incluir más de una variable y un amplio abanico de estadísticos descriptivos. El formato de resultados es especialmente útil, sobre todo cuando trabajamos con una sola variable. tabstat variable1 variable2, stats(mean med sd min max) 


martes, 20 de octubre de 2015

Do file

Do File es una opción que el programa STATA presenta para que toda la programación de manipulación de bases de datos esté disponible.

Todos los comandos que se utilicen en la ventana “Command” de la parte inferior quedarán automáticamente guardados en el historial de comandos. El historial de comandos es la ventana ubicada en la parte superior izquierda que lleva el nombre “Command”.


Cuando se termine de trabajar, y de generar todas las variables, se puede copiar todo el historial de comandos con “shift” en cada teclado y las teclas de dirección, o simplemente seleccionándolo todo y copiándolo con click derecho.


En la parte superior del STATA se encuentran estas opciones, similares a las que presenta un Word, o Excel, etc… La flecha roja presenta la opción de creación de Do files. Simplemente se da click encima de ésta y automáticamente se abrirá una ventana en el STATA. En esta nueva ventana se pueden pegar (CTRL +V , o utilizar click derecho + pegar) los comandos previamente copiados.



Esta nueva ventana se debe guardar, FILE, SAVE AS… y se ha creado el Do file. Se puede cerrar todo el STATA posteriormente.

Para correr el Do File

Cuando se quiera correr toda la sesión que se trabajó, se abre el programa y se abre la misma pestaña presentada en la segunda imagen de este documento. Al momento de abrir la ventada de Do file se puede buscar el archivo guardado (FILE, OPEN).

Si el Do file no tiene errores (OJO se deberá tener un Do file sin errores, los comandos erróneos son rojos y si se intenta correr un Do file con comandos rojos éste se detendrá automáticamente) toda la sesión que se trabajó será ejecutada en la interfaz del Stata. 

jueves, 15 de octubre de 2015

Nombres, Etiquetas y Notas

Las variables en Stata tienen nombres y etiquetas que nos ayudarán a identificarlas. Un buen
uso de los nombres y etiquetas nos puede ahorrar mucho tiempo y hacer nuestro tabajo en
Stata más fácil, eficiente y fiable.

Rename

Si queremos cambiar el nombre de cualquier variable, sólo tenemos que usar la orden rename nombreviejo nombrenuevo

Etiquetas de variable

Las etiquetas de variable resultan útiles especialmente cuando tenemos muchas
variables similares o cuyos nombres no resulten informativos. Para asignar etiquetas o
cambiarlas, sólo tenemos que escribir label variable nombrevariable
“etiqueta” (las comillas son importantes).

Etiquetas de valores

No sólo las variables tienen etiquetas, sino que las categorías en las variables
categóricas también las pueden tener. Esto resulta especialmente útil porque nos
permite identificar las categorias sin tener que recurrir constantemente a los
cuestionarios o libros de códigos. Para asignar etiquetas de valor a una variable
debemos proceder en dos pasos:

  • Primero creamos la etiqueta mediante el siguiente comando: label define nombreetiqueta 1”etiqueta1” 2”etiqueta” (etc.)
  • Después vinculamos la etiqueta a la variable o variables: label values variable nombreetiqueta

Desde el menu es posible, gracias al cuadro que encontramos en la pantalla principal, abajo a la derecha, Propiedades. Aqui es posible cambiar las etiquetas de las variables, y las etiquetas de los valores.


Destacar que para modificar los elementos mencionados, se deberá clickear el "candado" (para desbloquear esta ventana)


O desde el Variable Manager, donde se encuentra este tipo de pantalla, pero para cada variable (detallando sus caracterisiticas y opciones). 

  

Name, nombre de la variable
Label, etiqueta de la variable
Type, tipo de la variable (string, float...etc)
Format (formato), este alude a la presentación, la forma de visualización.

Notas

Y en Notes, aparecen las diferentes notas que puede tener la o las variables. Las notas en Stata son meta datos, son comentarios de la base o de las variables (en este caso de las variables).

Las sintaxis de las mismas son:
  • note: agregar notas a la base
  • note [variable]: agrega notas en la variable de la base




Existe un menu donde es posible, asi como agregar notas y etiquetar variables, etiquetar valores de una variable. En la siguiente captura de pantalla lo podemos visualizar.

En la misma es posible crear las etiquetas de los valores, editarlas o borrarlas. En el caso a continuacion, se etiqueto a 1 como Extranjero y 0 como Domestico (a este etiquetado se le llamo Origen, origin).




viernes, 9 de octubre de 2015

Comandos de ayuda de STATA

Comando de ayuda de STATA

help La ayuda de Stata es el primer recurso que utilizaremos normalmente. La podemos abrir desde el menú ayuda o desde la línea de comandos usando la orden help. Cada comando de Stata tiene su archivo de ayuda asociado. Usando el menú de Help puede buscar información usando palabras claves y producir una pantalla que contiene:
  • Enlaces de hipertexto las cuales lo conectan con los archivos de ayuda correspondientes.
  • Referencias a temas en los manuales de referencia y de gráficas (Reference Manual y Graphics Manual), a la guía del usuario (User's Guide) y al boletín técnico (Stata Technical Bulletin.)
  • FAQs preguntas frecuentemente hechas sobre el tema en el sitio-web de Stata.




findit (lo que se quiere buscar) Busca en el contenido que tiene STATA de ayuda y manual en el sistema. Otro comando de ayuda. 

Menú del comando findit















db Este comando sirve para dirigirte al cuadro de dialogo de lo que se quiere utilizar. Las iniciales db viene de dialogo box. Ej. db [commandname]

martes, 6 de octubre de 2015

Valores Perdidos. Missing.

Prácticamente siempre nuestros datos serán incompletos. Es decir: tendremos observaciones para las cuales no dispondremos de toda la información de todas las variables. En esos casos hablamos de ‘casos perdidos’ o ‘valores perdidos’. Con Stata podemos trabajar con ellos de diversos modos.

Stata representa los valores perdidos con un punto (.) De este modo, el programa sabe que aquella celda es un valor perdido y que no debe considerarlo en sus cálculos. De todos modos, si queremos distinguir entre diferentes tipos de casos perdidos (no aplicable/ no sabe/ no contesta, etc) podemos usar una letra después del punto .a, .b, etc. Así, podemos definir hasta 27 tipos de valores perdidos.

Por defecto, cuando le pedimos a Stata una tabla de frecuencias de una variable, omite los valores perdidos. Esto, que en general resulta útil, a veces puede no interesarnos, puesto que pueden contener información interesante. Asi, cuando pidamos una tabla de frecuencias con el comando tabulate, si añadimos al final del comando la opción , missing el programa considerará y nos mostrará también los casos perdidos.

En cuanto a la sintaxis para observar los valores perdidos, es posible gracias a misstable (tabla de los valores perdidos).
  • misstable summarize [varlist]
  • misstable sum, all  Es posible observar los valores perdidos de todas las variables.
En una sintaxis para no tomar en cuenta los valores perdidos o missing values, se debe luego del comando y la expresion, agregar:
  • ... if !missing(variable)
  • ... if variable !=.
  • ... if variable <= . 
Esta última expresión tiene en cuenta que hay valores faltantes distintos de . , que son .a, .b, etc.

Visualización de misstable sum












Aquí observamos con misstable sum que la única variable con 5 valores perdidos es rep78






















Operadores para trabajar con subgrupos o submuestras


Stata por defecto aplicará todas las órdenes a todos los casos de la base de datos. Sin embargo, a menudo nos interesará trabajar solo con una sub muestra de ellos, ya sea por razones substantivas o de conveniencia para realizar cálculos y transformaciones. Existen diversas instrucciones para precisar a qué parte de los datos aplicar cada orden:

if. Es la instrucción principal para definir subgrupos. Usando if tras un comando aplicaremos la orden anterior sólo al subgrupo definido por la expresión lógica que precisemos: se realizará la operación sólo para aquellos casos que cumplan la condición definida por la expresión lógica. Como if trabaja con operadores lógicos, se trata de un mecanismo muy potente que nos permite definir casi cualquier tipo de subgrupo que podamos necesitar. Así podemos hacer referencia a valores de la misma variable a la que estemos aplicando la orden u otras variables de la base de datos. Podemos combinar condiciones de diversos modos. Ej. list make mpg if mpg>25

in. Si en lugar de definir una expresión lógica queremos aplicar la orden a un grupo de observaciones definido por su número de posición en la base de datos, usaremos la expresión in en lugar de if. Para indicar entre que observaciones queremos aplicar la orden usaremos los números de orden separados por una barra /. Ej. list price in 20/l 

by. Sirve, no para filtrar los casos como if, sino para segmentar la ejecución de la orden y hacerlo por los grupos definidos por la variable que acompañe a by. Ordena la base en sentido ascendente. El operador by es uno de los pocos elementos en Stata que rompe con la estructura básica de la sintaxis, puesto que se escribe delante del comando y no después como el resto. Así, escribiremos by variable [variable2]: comando. Ej. by foreign:  summarize rep78

bysort. Permite ejecutar una misma orden para diferentes categorías de una o más variables especificadas al tiempo que ordena los datos para poder realizarlo.Ej. bysort rep78: tabulate foreign

Operadores lógicos

& y
| o
! no
~ no
> mayor que
< menor que
>= mayor o igual
<= menor o igual que
== igual
!= no igual
~= no igual

Diferencia entre = y ==

Un error frecuente en Stata es confundir el uso del operador aritmético = con el lógico ==. Así, cuando queramos expresar una igualdad lógica deberemos usar el doble signo de igual (==) mientras que el simple (=) lo reservamos para operaciones aritméticas.



Video: Introducción a la gestión de datos en Stata (Parte 1 y 2)


Esta entrada se creó con la utilidad de aportar un elemento multimedia para aprender a utilizar Stata.

Estos dos videos de aproximadamente 1 hora cada uno, proviene de unos talleres dados por Software Shop (distribuidor de software científico en Latinoamérica). Este taller mostrará las rutinas de ejecución y los comandos para la descripción, edición, generación, ordenación, de variables y datos en Stata

Introducción a la gestión de datos en Stata: Parte 1



Introducción a la gestión de datos en Stata: Parte 2

lunes, 5 de octubre de 2015

Primeros comandos de STATA


La fuentes biblográficas a utilizar para esta entrada, aparte del material y de los temas tratados en clase, seran los indicados en la entrada Primera clase de Stata: Introducción.

Estructura básica de la Sintaxis

Los comandos en Stata tienen una estructura básica común, que podemos resumir del siguiente modo:
  • ‘comando variables subgrupos, opciones’
  • [by varlist]: comando [varlist] [=exp] [if exp] [in range] [ponderador], [opciones]
    varlist: Lista de variables a las cuales se les quiere aplicar el comando específico.

En otras palabras: primero escribiremos el nombre de la acción que queremos que realice el programa, seguido de las variables a las que queremos que se aplique esta orden. Opcionalmente aquí podemos especificar las observaciones a las que queremos aplicar la orden (por defecto se aplican a toda la base de datos) y tras una coma especificaremos las opciones del comando que necesitemos.

Información adicional sobre sintaxis y comandos

  • Stata habla inglés. Aunque de entrada nos pueda parecer complejo, el lenguaje con el que nos relacionaremos con Stata es sencillo puesto que, en lo esencial, es inglés. Así, si queremos un resumen de una variable le diremos al programa summarize, si queremos una tabla, tabulate, si queremos una regresión regress, y así sucesivamente. En caso de duda, siempre podemos probar.
  • Distingue mayúsculas y minúsculas.
  • Abreviaciones en Stata. Una característica muy útil de Stata pero que al principio puede provocar alguna confusión, es que los comandos, opciones y nombres de variables se pueden abreviar. La norma general es que se permite una abreviación tan corta como sea posible para identificar sin ambigüedad el comando, opción o variable. Por eso es habitual ver sintaxis de Stata en las que el comando summarize se substituye por sum, tabulate por tab, etc. 

Comandos STATA: Básicos

Comandos de inspección de datos: Descripción de Variables

Una vez tenemos abierto el archivo de datos (base de datos a trabajar) que nos interese, podemos empezar a trabajar con él. La primera tarea a realizar será la inspección de los datos.

browse. El comando browse nos permite abrir la ventana de exploración de datos. Si escribimos browse en la línea de comandos, sin especificar nada más, veremos la base de datos completa. Si, en cambio, queremos restringir la inspección a un conjunto de variables (u observaciones) sólo tenemos que aplicarlo.

summarize. El comando summarize nos proporciona información básica sobre las variables que nos interesen (número de observaciones (sin contar los casos perdidos), media, desviación típica, mínimo y máximo. Más adelante veremos más opciones de este comando.

summarize Despliega estadísticas descriptivas básicas para todas las variables de la base de datos.
summarize [variable1] [variable2] Despliega estadísticas descriptivas básicas para las variables mencionadas.
summarize [variable1] , detail Despliega estadísticas descriptivas detalladas para la variable.

Tabla del comando sum.



tabulate. En caso de variables categóricas, o de cadena, la orden summarize no funcionará o nos aportará información insuficiente o inapropiada. Por ello, usaremos el comando tabulate, para generar tablas de frecuencias que nos informarán de la distribución de la variable elegida. Por defecto, nos muestra cuantos casos hay en cada categoría, el porcentaje que representan y el porcentaje acumulado. tab1. Si queremos aplicar el comando tabulate a más de una variable, debemos utilizar la variante tab1. Esto evitará que Stata intente hacer tablas multidimensionales (de las que hablaremos en su momento).

Visualización de tabulate para una variable especifica.













describe. El comando describe nos proporciona información sobre la(s) variable(s) especificadas, como el tipo de variable, el formato en el que está guardada, su nombre y etiqueta. Es útil para resumir un conjunto de variables de nuestra base de datos.

describe [variable]

Visualización de describe para una variable especifica.
codebook. Es un comando más completo que describe aunque precisamente por ese motivo, los resultados que genera son menos compactos. Produce abundante información sobre la variable, los valores que toma, el rango, los casos perdidos, etc.

codebook Despliega estadísticas para todas las variables de la base de datos.
codebook [variable1] [variable2] Despliega estadísticas sólo para las variables mencionadas.


Visualización de codebook para una variable especifica
























list. Es un comando de inspección de casos, que nos muestra los valores de las variables especificadas para los casos que escojamos. Si no especificamos que variables queremos, por defecto nos mostrará los valores de todas las variables, igual que para los casos. Si trabajamos con encuestas no es un comando muy útil porque no tenemos interés en los casos particulares pero si nuestra base de datos fuese, por ejemplo, de países o de municipios, entonces sí nos interesaría.

list Muestra los valores de todas las variables en todas las observaciones.
list in 1/5  Muestra los valores de todas las variables en las primeras cinco observaciones.
list [variable]  Muestra los valores de la variable.

Visualización de list para una variable especifica y de los 10 primeros casos. 

by varlist. Se aplica el comando específico por valores de determinada variable. Para poder aplicar la opción by los datos siempre deben estar ordenados por la variable de corte seleccionada. El comando utilizado para ordenar datos es sort.

sort [variable1] Ordena los datos por los valores de la variable.

by [variable1]: summarize [variable2] Despliega las estadísticas descriptivas de la variable1 por los elementos de la [variable2].

Primeras clases: Introducción a STATA

Fuente: Muñoz, Jordi- “Curso de introducción a STATA”.

¿Menús o sintaxis?

En los paquetes de análisis de datos podemos trabajar de dos modos:
  • Mediante un sistema de menús y ventanas o,
  • Mediante la sintaxis (escribiendo nosotros mismos los comandos que debe ejecutar el programa).
Siempre hay que trabajar creando una sintaxis. Esta sintaxis se puede crear escribiendo directamente los comandos o haciendo que los cree el menú. Hagamos como hagamos, al final del proceso tenemos que tener nuestro do file depurado (de las órdenes o sintaxis incorrectas, inútiles, etc...) 

En este curso usaremos una combinación de ambos métodos. Sin embargo, el trabajo con sintaxis a pesar de la curva de aprendizaje más pronunciada, tiene ventajas:
  • Replicabilidad. Es fundamental en la investigación científica y cada vez más las revistas académicas exigen los archivos de sintaxis para la publicación de los artículos.
  • Eficiencia. En condiciones ‘reales’ de trabajo continuado, el uso de la sintaxis representa un incremento exponencial de nuestra eficiencia.
  • Control. La posibilidad de control, detección de errores y trabajo colaborativo se incrementa enormemente cuando usamos la sintaxis.

Ventajas de STATA

Es un paquete que cuenta con varias ventajas que podrían resumirse en lo siguiente:
  • Contiene muchas de las técnicas estadísticas más recientes. 
  • Se actualiza frecuentemente. 
  • Métodos gráficos muy poderosos. 
  • Buena interfase con procesadores de texto e impresoras. 
  • Requiere de poco espacio en el disco duro. 
  • Requiere de poca memoria. Precio accesible. 
  • Lenguaje de programación amigable y sencilla

Tipos de archivos en STATA

Los tipos de archivo asociados al Stata son tres. Todos de igual importancia y de uso simultáneo. El primero en mencionar es el archivo de extensión dta, en ellos está contenida la información, las variables en toda su extensión. Otro tipo de archivo es el de extensión log, es el archivo de resultados. Con este archivo se puede visualizar los resultados de manera ordenada, sin tener que pasarlos a ningún tipo de archivo de texto. Se abre desde la pantalla principal y lo más eficiente es imprimir nuestra información para interpretar, o copiar y pegar en tablas directamente si lo que queremos es poner resultados definitivos en un paper. Por último tenemos el archivo de extensión do que son archivos de comandos, Stata permite crear archivos donde se coleccionan los comandos, donde luego se pueden ejecutar todos o por parte. 

Clases de archivos STATA con sus extensiones

.dta archivos de datos
.do archivos de comandos
.ado programas
.hlp archivos de ayuda
.gph gráficos
.dct archivos diccionarios
.smcl archivos log
.log archivos de resultado

Ventana principal

Ambas visualizaciones son de Stata 12.

Fuente: Stata Corp.- “Getting Started with Stata for Windows"























Fuente: Muñoz, Jordi- “Curso de introducción a STATA”.































Stata se organiza en diversas ventanas que nos aportan información y nos permiten realizar distintas operaciones. Las principales ventanas en Stata son las siguientes:
  • Línea de comando. Nos permite escribir las órdenes que queremos que ejecute el programa. Es uno de los principales mecanismos de relación del usuario hacia el programa.
  • Results. En esta ventana aparecerán los resultados de los comandos que vayamos ejecutando. En esta ventana es donde el programa ‘responde’ a nuestras órdenes.
  • Review. Esta ventana va archivando las órdenes que vamos escribiendo en la línea de comando. Esto es muy útil ya que nos permite repetir con facilidad operaciones ya realizadas, recuperar comandos para introducir pequeñas modificaciones, y archivar lo que hayamos hecho durante una sesión de trabajo en Stata.
  • Variables. Esta ventana nos muestra una lista de las variables que contiene nuestra base de datos, así como sus etiquetas. Esto nos permite seleccionarlas (mediante un dobre clic) para usarlas en nuestros comandos sin necesidad de memorizar o escribir los nombres de todas ellas.

Fuentes y referencias biblográficas: 
Es una página web del curso de STATA impartido en la Universidad Autónoma de Barcelona, España. Pueden encontrar materiales y ejercicios (la mayoría en español e inglés).