lunes, 30 de mayo de 2016

miércoles, 25 de mayo de 2016

Ejercicio de depuración de base de censo de vivienda español (sin solución)

Ejercicio de depuración de base de datos, armado con datos ficticios sobre cuestionario de censo de vivienda español.


https://drive.google.com/file/d/0B9C7VyfotFyJMlkwbGFzWF95QUE/view?usp=sharing

viernes, 20 de mayo de 2016

Dos ejercicios de depuración de bases de datos. Video en ejercicio 2

Se proponen dos ejercicios sobre depuración de bases de datos (data cleaning).

En lo sustancial son procesos idénticos, aunque puede haber preferencias sobre los comandos a ser utilizados.



Ejercicio 1.


Ejercicio 2.

domingo, 15 de mayo de 2016

Ejemplo de depuración de base de datos. Video.

Supongamos que hemos aplicado el cuestionario que sigue:



Los cuestionarios ya han sido digitados. Ahora hay que rotular la base, detectar sus insuficiencias y si es posible corregirlas.

En el video veremos el proceso. Junto a el el cuestionario y la base, en un archivo rar.

martes, 10 de mayo de 2016

Rotulación y depuración de la base de datos. Texto.

Una vez que se han entrado los datos, hay que revisar la base y corregir antes de proceder a los análisis.

Esta es la manera de ganar tiempo y sacar buenos resultados: chequear y ajustar la base antes de continuar.

Esto es fundamental.

A continuación mostraremos una forma de hacer esa primera exploración. No es la única posible pero da una buena idea del tipo de procesos involucrados. La metodología esbozada se apoya fuertemente en el excelente documento Take good care of your data. aunque la modifica en aspectos secundarios.




Descripción de un posible procedimiento:



Paso 1. Etiquetar las variables y los valores que toman. Declarar los valores faltantes.


Mostramos una sintaxis de ejemplo:


GET FILE='c:\documentos\proyecto1\visita1a.sav'.  (este comando abre el archivo)


VARIABLE LABELS id 'Numero de Cuestionario'. (este comando rotula la variable).
Variable labels sexo 'Sexo del respondente'.
Variable labels año_nac 'Año de nacimiento'.


VALUE LABELS sexo 1 'Hombre' 2 'Mujer'. (este comando rotula los valores que toma la variable).
Value labels año_nac 999 'Sin dato'.
 value labels niños 99 'Sin dato'.


MISSING VALUES año_nac (999). (Este comando declara al valor 999 missing en variable año_nac).
Missing values niños (99).


DISPLAY DICTIONARY.  (se pide el libro de códigos -los nombres de las variables, sus formatos, su codificación, etc.)

Si hubiera variables numéricas pero almacenadas en formato de cadena, se deben llevar a formato numérico. Por ejemplo, si edad apareciese como de cadena, siendo que tiene números, hacemos:

recode edad (convert) into edad_num.
execute.
delete variables edad.
rename variables (edad_num  = edad).




Paso 2. Exploración y búsqueda de errores


 FREQUENCIES all /FORMAT=LIMIT(20).
 (Se piden las frecuencias de todas las variables. Limit (20) hace que si una variable tiene más de 20 categorías no se desplieguen). El comando Frequencies es muy importante, porque permite ver si hay datos faltantes.


DESCRIPTIVES all.
(Esto es para tener las las medias, mínimos y máximos de todas las variables).


Luego se buscan contradicciones:
Compute contradictorio1 = sexo = hombre & embarazo = sí.
Compute contradictorio2 = terminó_liceo = no & años_facultad > 0.
(se crean variables que marquen informaciones contradictorias).



Paso 3. Inspección en busca de valores faltantes, sobrantes, ilegales y outliers.

Revise la rotulación de las variables y sus valores. ¿Está todo bien rotulado?

Inspeccione las tablas de frecuencias. ¿Aparecen valores faltantes que no deberían faltar? Cuando faltan valores que deben estar (p.ej. edad, sexo, etc.) la base pierde utilidad. Es deseable que no haya valores faltantes o que sean los menos posible. Naturalmente, hay valores de preguntas que no corresponden y que no deben estar. Por ejemplo, si una persona contesta que no se tiñe el pelo, no deberá haber respuesta en la pregunta sobre de qué color se lo tiñe. Si allí apareciera una respuesta sería un valor sobrante.

Entendemos por valores ilegales aquellos valores de variables categóricas cuya entrada no corresponde a ninguna opción prevista. Ejemplo: para la pregunta ¿terminó liceo? esperamos las codificaciones 1. Sí o 2. No. Sin embargo aparece un 7: este es un valor ilegal.

Lo habitual es detectar los valores ilegales porque no aparecen rotulados en las variables categóricas. Por ejemplo: en la variable sexo podrían aparecer las categorías
Hombre
Mujer
22

Ese 22 es un valor que no debería estar allí. Probablemente era un 2 y fue mal digitado. Corresponde revisar el cuestionario y corregir.

Inspeccione los máximos y los mínimos. ¿Hay valores extremos (outliers)? Por ejemplo, en la variable altura (en metros), ¿aparece alguien con 170 metros de altura? Si aparece corresponde revisar el cuestionario y corregir. Casi seguramente es 1.70.

Si aparecen outliers y se sospecha que corresponden a errores de copiado que no se pueden chequear, o si hay razones firmes para creer que la persona medida no pertenece a la población de interés (por ejemplo, se están recabando salarios de gerentes medios y hay un outlier que hace presumir, quizás con otros factores adicionales, que estamos en presencia de un gerente superior (y no medio), lo más prudente puede ser suprimir el caso.

En distribuciones fuertemente sesgadas, por ejemplo de salarios, si aparece algún valor muy alejado, en ocasiones se WINSORIZA, esto es, se sustituye por el valor más alto que tengamos seguridad de que no sea un outlier. Esta técnica normalmente no afecta los p valores si las medidas winsorizadas son pocas. Para otros ítems, se pueden winsorizar valores que son outliers por ser muy bajos si la distribución es sesgada a la izquierda, y entonces se sustituye por el valor más bajo que no sea un outlier. No se aconseja remover o winsorizar más del 5% de los casos.

Hay más opciones para manejar el tema de los outliers. Se pueden usar variables transformadas, p.e. se puede trabajar con el logaritmo de los salarios (que tiene distribución normal) en vez de con los salarios. También se pueden buscar técnicas de análisis menos sensibles a los outliers, p.e. técnicas no paramétricas. Y por último efectuar los análisis de más de una manera y ver hasta donde afectaban los outliers los resultados.

Debe quedar claro que si se modifican ouliers, se debe documentar y dar cuenta de ello al informar.


En cuanto a la búsqueda de informaciones contrapuestas, pida frecuencias de las variables Contradictorio1, contradictorio2, etc., calculadas para señalar hombres embarazados, niños que cobran jubilación, etc. Si aparece algún 1 en estas variables, ese caso tiene información contradictoria y debe ser corregido.

Para identificar casos en que contradicción1 = 1 podemos hacer:

temporary.
select if contradictorio1 = 1.
list id.

Y de esta manera establecemos la identidad del caso con problemas, a efectos de proceder a su revisación y corrección.



Paso 4. Manejo de la información contradictoria

Si después de revisar que la información pasada corresponde con lo recogido en el cuestionario se mantiene una contradicción (por ejemplo hombres embarazados), podemos hacer 2 cosas:

Posibilidad 1)

Llevamos a missing la información faltante:
If contradictorio1 = 1 sexo = $sysmis.
If contradictorio1 = 1 embarazo = $sysmis.


Posibilidad 2)

Analizamos el conjunto de la información para tratar de determinar qué valor está mal. Por ejemplo, si va al ginecólogo y se llama Laura, podemos corregir el sexo sin temor a equivocarnos.



Paso 5. Tomar decisiones sobre los valores faltantes

 A veces los valores faltantes son un problema serio, especialmente si no estan distribuidos al azar. Se deben tomar decisiones con respecto a ellos, especialmente si son numerosos. Una técnica relativamente reciente incorporada al SPSS es la imputación múltiple, pero este tema excede esta entrada.


Paso 6. Qué hacer con los datos escasos

Si hay una gran falta de datos en variables o en casos, en general lo más recomendable es no usar esas variables o casos. Algún autor considera como regla general que hay un número excesivo de faltantes en las variables en que faltan más del 15 % de los valores, y en los casos donde falta igual porcentaje de variables. Otros toman como idea general que si falta el 10% ya es conveniente remover casos o variables.

Los faltantes de las variables se pueden detectar con Frequencies. Los faltantes por caso en alguna ocasión pueden detectarse usando la función Nmiss en Calcular, pero hay que tener cuidado porque hay faltantes legítimos allí donde no corresponde la pregunta (¿Cuántas horas mira diaramente en TV? si no tiene televisor).


Paso 7. Verificación de entrada duplicada de casos

Forma parte habitual de los procesos de verificación, constatar que no haya casos repetidos en una o más variables de identificación, por ejemplo número de cuestionario. Eso se hace con Datos>Identificar casos duplicados.


Paso 8. Todas las modificaciones que se hagan deben quedar registradas, y el archivo modificado se debe grabar bajo un nuevo nombre.


 SAVE OUTFILE='c:\documentos\proyecto1c\visita1b_depurado.sav'.

viernes, 6 de mayo de 2016

Variables de cadena (ejercicio con solución en video)


Ejercicio que pide el uso de comandos de cadenas alfanuméricas, tales como

  • concat
  • rtrim
  • char.substr
  • lower
  • upcase
  • replace
  • recode
  • recode (convert)



Base y letra del ejercicio

Solución en video.

jueves, 5 de mayo de 2016

Variables de cadena. Video.

Las variables de cadena son aquellas que contienen caracteres que pueden ser letras, números o símbolos. Por ejemplo, si yo desease entrar la dirección que sigue, necesitaría un campo de cadena:
"Colonia 1615 apto. 109".

Una variable de cadena puede entonces tener todo tipo de caracteres, y muchas veces los tiene. Pero a veces tiene exclusivamente valores numéricos, que están almacenados en formato cadena.

En el vídeo que se adjunta se muestran una serie de operaciones que le permitirán, entre otras cosas:

  • dado un número de celular, extraer la característica (dado el número 094 908 980, extraer el 094, característica de Movistar)
  • convertir números almacenados en formato texto (y por tanto, con los que no se puede operar), en números que sí podrán sumarse, restarse, etc.
  • unificar palabras escritas de distintas maneras (pérez, Pérez, perez, etc.) de tal forma que todas queden escritas igual (Pérez).
  • unificar mayúsculas y minúsculas 
Se adjuntan un vídeo y un archivo de datos para practica, que deberán ser descomprimidos en la computadora del lector.

https://drive.google.com/open?id=0B9C7VyfotFyJSWZTOHlGcDVaaXc


lunes, 2 de mayo de 2016

Recodificación Automática de variables de cadena (continuación). Video.


Se continúa con otro ejemplo de recodificación automática de variables de cadena a variables numéricas.

Esta vez se utiliza la recodificación automática para generar una serie de variables Sí/No.


https://drive.google.com/open?id=0B9C7VyfotFyJZ0VPdGdXRlM3RFE

domingo, 1 de mayo de 2016

Recodificación automática de variables de cadena. Video


La recodificación automática de variables de cadena, crea una nueva variable numérica en donde se adjudica un número distinto a cada cadena distinta.

Así, si una variable de cadena tiene escritas las cadenas que siguen:

C.A.S.M.U
Casmu
casmu

el SPSS considera que se trata de tres cadenas distintas, porque no es lo mismo mayúsculas que minúsculas, letras separadas con puntos que no separadas, etc.



Variable original          Variable numérica con etiquetas
C.A.S.M.U.                 1  C.A.S.M.U. 
casmu                      2  casmu 
Casmu                      3  Casmu


Después de hacer esto, recodificamos la variable numérica en una versión definitiva.



Véase un ejemplo en video:

https://drive.google.com/open?id=0B9C7VyfotFyJdXJmUk1LSmJ2YkU