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'.

No hay comentarios: