Está en la página 1de 24

Machine Translated by Google

4. Análisis de datos exploratorios


El análisis exploratorio de datos es el proceso de explorar sus datos
y generalmente incluye examinar la estructura y los componentes
de su conjunto de datos, las distribuciones de variables individuales
y las relaciones entre dos o más variables. La herramienta más
utilizada para el análisis exploratorio de datos es la visualización de
datos mediante una representación gráfica de los mismos. La
visualización de datos es posiblemente la herramienta más
importante para el análisis exploratorio de datos porque la
información transmitida por la presentación gráfica puede absorberse
muy rápidamente y porque generalmente es fácil reconocer
patrones en una presentación gráfica.

Hay varios objetivos del análisis exploratorio de datos, que


son:

1. Para determinar si hay algún problema con su


conjunto de datos.

2. Determinar si la pregunta que usted hace puede ser respondida


con los datos que tiene.
3. Desarrollar un bosquejo de la respuesta a tu pregunta.

Su aplicación del análisis de datos exploratorios estará guiada por


su pregunta. La pregunta de ejemplo utilizada en este capítulo es:
"¿Los condados del este de los Estados Unidos tienen niveles de
ozono más altos que los condados del oeste de los Estados Unidos?"
En este caso, explorará los datos para determinar si hay problemas
con el conjunto de datos y para determinar si puede responder su
pregunta con este conjunto de datos.

31
Machine Translated by Google

Análisis exploratorio de datos 32

Para responder a la pregunta, por supuesto, necesita datos de ozono,


condado y región de EE. UU. El siguiente paso es utilizar un análisis
de datos exploratorio para comenzar a responder su pregunta, lo que
podría incluir mostrar diagramas de caja del ozono por región de EE.
UU. Al final del análisis exploratorio de datos, debe tener una buena
idea de cuál es la respuesta a su pregunta y contar con suficiente
información para pasar a los siguientes pasos del análisis de datos.

Es importante señalar que aquí, nuevamente, se aplica el concepto


de epiciclo del análisis. Debe tener una expectativa de cómo se verá
su conjunto de datos y si su pregunta puede ser respondida por los
datos que tiene. Si el contenido y la estructura del conjunto de datos
no coinciden con sus expectativas, entonces tendrá que regresar y
determinar si sus expectativas eran correctas (pero hubo un
problema con los datos) o, alternativamente, sus expectativas eran
incorrectas. por lo que no puede utilizar el conjunto de datos para
responder la pregunta y necesitará encontrar otro conjunto de datos.

También debe tener alguna expectativa sobre cuáles serán los niveles
de ozono y si el ozono de una región debería ser más alto (o más
bajo) que el de otra. A medida que avanza al paso 3 para comenzar
a responder su pregunta, aplicará nuevamente el epiciclo de análisis
de modo que si, por ejemplo, los niveles de ozono en el conjunto de
datos son más bajos de lo que esperaba al observar los datos
publicados anteriormente, necesitará para hacer una pausa y
determinar si hay un problema con sus datos o si sus expectativas
eran incorrectas. Su expectativa podría ser incorrecta, por ejemplo, si
su fuente de información para establecer sus expectativas sobre los
niveles de ozono fueron datos recopilados hace 20 años (cuando los
niveles probablemente eran más altos) o de una sola ciudad en los
EE. UU. Entraremos en más detalles. con el estudio de caso a
continuación, pero esto debería brindarle una descripción general
sobre el enfoque y los objetivos del análisis de datos exploratorios.
Machine Translated by Google

Análisis exploratorio de datos 33

4.1 Lista de verificación del análisis de datos exploratorios: un


estudio de caso

En esta sección repasaremos una “lista de verificación” informal de cosas


que hacer al embarcarnos en un análisis exploratorio de datos. Como
ejemplo, utilizaré un conjunto de datos sobre los niveles horarios de ozono
en los Estados Unidos para el año 2014. Los elementos de la lista de
verificación son

1. Formule su pregunta 2. Lea sus


datos 3. Revise el paquete
4. Mire la parte superior e
inferior de sus datos 5. Verifique sus “n” 6. Valide con al
menos una fuente de
datos externa 7. Haga una Trama 8. Pruebe primero la

solución fácil 9.
Seguimiento

A lo largo de este ejemplo representaremos un análisis continuo con código


R y datos reales. Algunos de los ejemplos y recomendaciones aquí serán
específicos del entorno de análisis estadístico R, pero la mayoría debería
ser aplicable a cualquier sistema de software. No es necesario dominar R
para comprender las ideas principales del ejemplo. No dudes en saltarte
las secciones del código.

4.2 Formule su pregunta

Anteriormente en este libro, hemos discutido la importancia de formular


adecuadamente una pregunta. Formular una pregunta puede ser una
forma útil de guiar el análisis exploratorio de datos.
Machine Translated by Google

Análisis exploratorio de datos 34

proceso y limitar el número exponencial de caminos que se pueden tomar


con cualquier conjunto de datos de tamaño considerable. En particular, una
pregunta o hipótesis aguda puede servir como una herramienta de reducción
de dimensiones que puede eliminar variables que no son inmediatamente
relevantes para la pregunta.

Por ejemplo, en este capítulo veremos un conjunto de datos sobre


contaminación del aire de la Agencia de Protección Ambiental de EE. UU.
(EPA). Una pregunta general que uno podría tal como es.

¿Son los niveles de contaminación del aire más altos en la


costa este que en la costa oeste?

Pero una pregunta más específica podría ser

¿Los niveles de ozono por hora son en promedio más altos en


la ciudad de Nueva York que en Los Ángeles?

Tenga en cuenta que ambas preguntas pueden ser de interés y ninguna


es correcta o incorrecta. Pero la primera pregunta requiere analizar todos
los contaminantes en todas las costas este y oeste, mientras que la
segunda pregunta solo requiere analizar un solo contaminante en dos
ciudades.

Por lo general, es una buena idea dedicar unos minutos a descubrir cuál es
la pregunta que realmente le interesa y reducirla para que sea lo más
específica posible (sin dejar de ser interesante).

Para este capítulo, consideraremos la siguiente pregunta:

¿Los condados del este de los Estados Unidos tienen niveles


de ozono más altos que los condados del oeste de los Estados
Unidos?
Machine Translated by Google

Análisis exploratorio de datos 35

Como nota al margen, una de las preguntas más importantes que puede
responder con un análisis de datos exploratorio es "¿Tengo los datos
correctos para responder esta pregunta?" A menudo esta pregunta es
difícil de responder al principio, pero puede volverse más clara a medida
que clasificamos y analizamos los datos.

4.3 Lea sus datos

La siguiente tarea en cualquier análisis de datos exploratorio es leer


algunos datos. A veces, los datos vendrán en un formato muy
desordenado y necesitarás hacer un poco de limpieza. Otras veces,
otra persona habrá limpiado esos datos por usted, por lo que usted se
ahorrará la molestia de tener que hacer la limpieza.

No pasaremos por la molestia de limpiar un conjunto de datos aquí, no


porque no sea importante, sino porque a menudo no hay mucho
conocimiento generalizable que obtener al revisarlo. Cada conjunto de
datos tiene sus peculiaridades únicas, por lo que por ahora
probablemente sea mejor no empantanarse en los detalles.

Aquí tenemos un conjunto de datos relativamente limpio de la EPA de


EE. UU. sobre mediciones de ozono por hora en todo EE. UU. para el
año 2014. Los datos están disponibles en la página web del Sistema de
calidad del aire de la EPA1 . Simplemente descargué el archivo zip del
sitio web, lo descomprimí y puse el archivo resultante en un directorio
llamado "datos". Si desea ejecutar este código, deberá utilizar la misma
estructura de directorios.

El conjunto de datos es un archivo de valores separados por comas


(CSV), donde cada fila del archivo contiene una medición horaria de
ozono en algún lugar del país.

NOTA: La ejecución del siguiente código puede tardar unos minutos.


Hay 7.147.884 filas en el archivo CSV. Si tarda demasiado,
1http://aqsdr1.epa.gov/aqsweb/aqstmp/airdata/download_files.html
Machine Translated by Google

Análisis exploratorio de datos 36

puede leer en un subconjunto especificando un valor para el argumento


n_max de read_csv() que sea mayor que 0.

> biblioteca(readr)
> ozono <­ read_csv("data/hourly_44201_2014.csv", col_types
+ = "ccccinnccccccncnncccccc")

El paquete readr de Hadley Wickham es un buen paquete para leer


archivos planos (como archivos CSV) muy rápido, o al menos mucho
más rápido que las funciones integradas de R. Se deben hacer algunas
concesiones para obtener esa velocidad, por lo que estas funciones no
siempre son apropiadas, pero sirven a nuestros propósitos aquí.

La cadena de caracteres proporcionada al argumento col_types


especifica la clase de cada columna del conjunto de datos. Cada letra
representa la clase de una columna: “c” para carácter, “n” para numérico”
e “i” para número entero. No, no sabía mágicamente las clases de cada
columna; simplemente miré rápidamente el archivo para ver cuáles eran
las clases de las columnas. Si hay demasiadas columnas, no puede
especificar col_types y read_csv() intentará resolverlo por usted.

Para mayor comodidad, podemos reescribir los nombres de las columnas


para eliminar los espacios.

> nombres(ozono) <­ make.names(nombres(ozono))

4.4 Verificar el embalaje

¿Alguna vez has recibido un regalo antes del momento en que se te


permitía abrirlo? Claro, todos lo hemos hecho. El problema es que el
regalo está envuelto, pero deseas desesperadamente saber qué hay
dentro. ¿Qué debe hacer una persona en esas circunstancias? Bueno,
puedes sacudir un poco la caja, tal vez golpearla con el nudillo para ver
si hace un sonido hueco, o incluso
Machine Translated by Google

Análisis exploratorio de datos 37

péselo para ver qué tan pesado es. Así es como debes pensar en tu conjunto
de datos antes de comenzar a analizarlo de verdad.

Suponiendo que no reciba ninguna advertencia o error al leer el conjunto


de datos, ahora debería tener un objeto en su espacio de trabajo llamado
ozono. Generalmente es una buena idea pinchar un poco ese objeto antes
de abrir el papel de regalo.

Por ejemplo, deberías comprobar el número de filas.

> nrow(ozono)
[1] 7147884

y columnas.

> ncol(ozono)
[1] 23

¿Recuerda cuando dijimos que había 7.147.884 filas en el archivo? ¿Cómo


coincide eso con lo que hemos leído? Este conjunto de datos también tiene
relativamente pocas columnas, por lo que es posible que pueda verificar el
archivo de texto original para ver si la cantidad de columnas impresas (23)
aquí coincide con la cantidad de columnas que ve en el archivo original.

Otra cosa que puedes hacer en R es ejecutar str() en el conjunto de datos.


Esta suele ser una operación segura en el sentido de que incluso con un
conjunto de datos muy grande, ejecutar str() no debería llevar mucho tiempo.
Machine Translated by Google

Análisis exploratorio de datos 38

> str(ozono)
Clases 'tbl_df', 'tbl' y 'data.frame': 7147884obs . de 23 variables\
les:
$ Código.de.estado : chr "01" "01" "01" "01" ...

$ Condado.Código : chr "003" "003" "003" "003" ...


$ Sitio.Num : chr "0010" "0010" "0010" "0010" ...
$ Parámetro.Código : chr "44201" "44201" "44201" "44201" ...
$ POS : int 1 1 1 1 1 1 1 1 1 1 ...
$ Latitud : número 30,5 30,5 30,5 30,5 30,5 ...

$ Longitud : número ­87,9 ­87,9 ­87,9 ­87,9 ­87,9 ...


$ Dato : chr "NAD83" "NAD83" "NAD83" "NAD83" ...
$ Parámetro.Nombre : chr "Ozono" "Ozono" "Ozono" "Ozono" ...
$ Fecha.Local : chr "2014­03­01" "2014­03­01" "2014­03­01" \
"2014­03­01" ...
$ Hora.Local : chr "01:00" "02:00" "03:00" "04:00" ...
$ Fecha.GMT : chr "2014­03­01" "2014­03­01" "2014­03­01" \
"2014­03­01" ...
$ Hora.GMT $ : chr "07:00" "08:00" "09:00" "10:00" ...

Muestra.Medición : núm 0,047 0,047 0,043 0,038 0,035 0,035 0,0\


34 0,037 0,044 0,046 ...

$ Unidades.de.medida : chr "Partes por millón" "Partes por millón"\


"Partes por millón" "Partes por millón" ...
$ MDL : número 0,005 0,005 0,005 0,005 0,005 0,005 0,0\
05 0,005 0,005 0,005 ...

$ Incertidumbre $ : número NA NA NA NA NA NA NA NA NA NA NA ...


Calificador $ : chr "" "" "" "" ...

Método.Tipo $ : chr "FEM" "FEM" "FEM" "FEM" ...


Método.Nombre : chr "INSTRUMENTAL ­ ULTRA VIOLETA" "INSTRUME\
NTAL ­ ULTRA VIOLETA" "INSTRUMENTAL ­ ULTRA VIOLETA" "INSTRUMENTAL ­ U\
"LTRA VIOLETA" ...
$ Estado.Nombre : chr "Alabama" "Alabama" "Alabama" "Alabama"\
...

$ Condado.Nombre : chr "Baldwin" "Baldwin" "Baldwin" "Baldwin"\


...

$ Fecha del último cambio: chr "2014­06­30" "2014­06­30" "2014­06­30" \


"2014­06­30" ...

La salida de str() duplica cierta información que


ya tenemos, como el número de filas y columnas. Más
Más importante aún, puedes examinar las clases de cada uno de los
columnas para asegurarse de que estén especificadas correctamente (es decir,
Machine Translated by Google

Análisis exploratorio de datos 39

Los números son numéricos y las cadenas son de caracteres, etc.).


Debido a que preespecificamos todas las clases de columnas en
read_csv(), todas deberían coincidir con lo que especificamos.

A menudo, con sólo estas simples maniobras, puede identificar problemas


potenciales con los datos antes de lanzarse de cabeza a un análisis de
datos complicado.

4.5 Mira la parte superior e inferior de tu


Datos

A menudo resulta útil observar el “principio” y el “final” de un conjunto de


datos inmediatamente después de revisar el paquete. Esto le permite
saber si los datos se leyeron correctamente, si los elementos están
formateados correctamente y si todo está ahí. Si sus datos son datos de
series de tiempo, asegúrese de que las fechas al principio y al final del
conjunto de datos coincidan con lo que espera que sea el período de
tiempo inicial y final.

En R, puedes echar un vistazo a la parte superior e inferior de los datos


con las funciones head() y tail() .

Aquí está la cima.

> cabeza(ozono[, c(6:7, 10)])

Latitud Longitud Fecha.Local 1 30.498 ­87.88141


2014­03­01

2 30.498 ­87.88141 2014­03­01

3 30.498 ­87.88141 2014­03­01

4 30.498 ­87.88141 2014­03­01

5 30.498 ­87.88141 2014­03­01

6 30.498 ­87.88141 2014­03­01

Por razones de brevedad, sólo he tomado algunas columnas. Y aquí está


el fondo.
Machine Translated by Google

Análisis exploratorio de datos 40

> cola(ozono[, c(6:7, 10)])


Latitud Longitud Fecha.Local
7147879 18.17794 ­65.91548 2014­09­30
7147880 18.17794 ­65.91548 2014­09­30
7147881 18.17794 ­65.91548 2014­09­30
7147882 18.17794 ­65.91548 2014­09­30
7147883 18.17794 ­65.91548 2014­09­30
7147884 18.17794 ­65.91548 2014­09­30

La función tail() puede ser particularmente útil porque a menudo habrá


algún problema al leer el final de un conjunto de datos y, si no verifica
eso específicamente, nunca lo sabrá.
A veces hay un formato extraño al final o algunas líneas de
comentarios adicionales que alguien decidió colocar al final.
Esto es particularmente común con datos exportados desde hojas de
cálculo de Microsoft Excel.

Asegúrese de revisar todas las columnas y verificar que todos los


datos en cada columna se vean como se supone que deben verse.
Este no es un enfoque infalible, porque solo estamos analizando unas
pocas filas, pero es un comienzo decente.

4.6 ABC: Siempre revisa tus “n”

En general, contar cosas suele ser una buena forma de saber si algo
anda mal o no. En el caso más simple, si esperas que haya 1000
observaciones y resulta que solo hay 20, sabes que algo debe haber
salido mal en alguna parte. Pero hay otras áreas que puedes
comprobar según tu aplicación. Para hacer esto correctamente,
necesita identificar algunos puntos de referencia que puedan usarse
para comparar sus datos. Por ejemplo, si está recopilando datos sobre
personas, como en una encuesta o ensayo clínico, entonces debe
saber cuántas personas hay en su estudio.

Eso es algo que deberías verificar en tu conjunto de datos, para hacer


Machine Translated by Google

Análisis exploratorio de datos 41

seguro que tienes datos de todas las personas que pensabas


Tendría datos sobre.

En este ejemplo, utilizaremos el hecho de que el conjunto de datos supuestamente


contiene datos horarios para todo el país. Estos serán
nuestros dos puntos de referencia para comparar.

Aquí tenemos datos de ozono por hora que provienen de monitores.


a través del país. Los monitores deben estar monitoreando
continuamente durante el día, por lo que se deben representar todas las horas.
Podemos echar un vistazo a la variable Time.Local para ver

¿A qué hora se registran las mediciones como tomadas?

> cabeza(tabla(ozono$Tiempo.Local))

00:00 00:01 01:00 01:02 02:00 02:03


288698 2 290871 2 283709 2

Una cosa que notamos aquí es que si bien casi todas las mediciones en el
conjunto de datos se registran como tomadas en el
hora, algunos se toman en momentos ligeramente diferentes. tan pequeño
número de lecturas se toman en estos momentos libres que
Puede que no quiera que le importe. Pero parece un poco extraño, por lo que podría
Merece la pena echarle un vistazo rápido.

Podemos echar un vistazo a qué observaciones se midieron en


hora “00:01”.
Machine Translated by Google

Análisis exploratorio de datos 42

> biblioteca(dplyr)
> filtro(ozono, Hora.Local == "13:14") %>%
+ seleccione (Estado.Nombre, Condado.Nombre, Fecha.Local,
+ Hora.Local, Muestra.Medición)
Fuente: marco de datos local [2 x 5]

Estado.Nombre Condado.Nombre Fecha.Hora local.Local


(chr) (chr) (chr) (chr)
1 Nueva York franklin 2014­09­30 13:14
2 Nueva York Franklin 2014­09­30 13:14

Variables no mostradas: Muestra.Medición (dbl)

Podemos ver que es un monitor en el condado de Franklin, Nueva York.


y que las mediciones fueron tomadas el 30 de septiembre de
2014. ¿Qué pasaría si simplemente extrajéramos todas las medidas tomadas?
en este monitor en esta fecha?

> filtro(ozono, State.Code == "36"


+ & Condado.Código == "033"
+ & Fecha.Local == "2014­09­30") %>%
+ seleccione (Fecha.Local, Hora.Local,
+ Muestra.Medición) %>%
+ como.marco.de.datos

Fecha.Hora local.Muestra local.Medición


1 2014­09­30 00:01 0.011
2 2014­09­30 01:02 0.012
3 2014­09­30 02:03 0.012
4 2014­09­30 03:04 0.011
5 2014­09­30 04:05 0.011
6 2014­09­30 05:06 0.011
7 2014­09­30 06:07 0.010
8 2014­09­30 07:08 0.010
9 2014­09­30 08:09 0.010
10 2014­09­30 09:10 0.010
11 2014­09­30 10:11 0.010
12 2014­09­30 11:12 0.012
13 2014­09­30 12:13 0.011
14 2014­09­30 13:14 0.013
15 2014­09­30 14:15 0,016
16 2014­09­30 15:16 0,017
17 2014­09­30 16:17 0,017
Machine Translated by Google

Análisis exploratorio de datos 43

18 2014­09­30 17:18 0,015


19 2014­09­30 18:19 0,017
20 2014­09­30 19:20 0.014
21 2014­09­30 20:21 0.014
22 2014­09­30 21:22 0.011
23 2014­09­30 22:23 0.010
24 2014­09­30 23:24 0.010
25 2014­09­30 00:01 0.010
26 2014­09­30 01:02 0.011
27 2014­09­30 02:03 0.011
28 2014­09­30 03:04 0.010
29 2014­09­30 04:05 0.010
30 2014­09­30 05:06 0.010
31 2014­09­30 06:07 0.009
32 2014­09­30 07:08 0.008
33 2014­09­30 08:09 0.009
34 2014­09­30 09:10 0.009
35 2014­09­30 10:11 0.009
36 2014­09­30 11:12 0.011
37 2014­09­30 12:13 0.010
38 2014­09­30 13:14 0.012
39 2014­09­30 14:15 0,015
40 2014­09­30 15:16 0,016
41 2014­09­30 16:17 0,016
42 2014­09­30 17:18 0.014
43 2014­09­30 18:19 0,016
44 2014­09­30 19:20 0.013
45 2014­09­30 20:21 0.013
46 2014­09­30 21:22 0.010
47 2014­09­30 22:23 0.009
48 2014­09­30 23:24 0.009

Ahora podemos ver que este monitor solo registra sus valores en
horas impares, en lugar de cada hora. Parece que, al mirar
en la salida anterior, que este es el único monitor en el
país que hace esto, por lo que probablemente no sea algo que
debería preocuparse.

Debido a que la EPA monitorea la contaminación en todo el país,


Debería haber una buena representación de los estados. Quizás nosotros
deberíamos ver exactamente cuántos estados están representados en este
Machine Translated by Google

Análisis exploratorio de datos 44

conjunto de datos.

> seleccione(ozono, Estado.Nombre) %>% único %>% nrow


[1] 52

Así que parece que la representación es demasiado buena: hay


¡52 estados en el conjunto de datos, pero solo 50 estados en EE. UU.!

Podemos echar un vistazo a los elementos singulares del Estado.Nombre


variable para ver qué está pasando.

> único(ozono$Estado.Nombre)
[1] "Alabama" "Alaska"
[3] "Arizona" "Arkansas"
[5] "California" "Colorado"
[7] "Connecticut" "Delaware"
[9] "Distrito de Columbia" "Florida"
[11] "Georgia" "Hawai"
[13] "Idaho" "Illinois"
[15] "Indiana" "Iowa"
[17] "Kansas" "Kentucky"
[19] "Luisiana" "Maine"
[21] "Maryland" "Massachusetts"
[23] "Míchigan" "Minnesota"
[25] "Mississippi" "Misuri"
[27] "Montaña" "Nebraska"
[29] "Nevada" "Nuevo Hampshire"
[31] "Nueva Jersey" "Nuevo Mexico"
[33] "Nueva York" "Carolina del Norte"
[35] "Dakota del Norte" "Ohio"
[37] "Oklahoma" "Oregón"
[39] "Pensilvania" "Rhode Island"
[41] "Carolina del Sur" "Dakota del Sur"
[43] "Tennessee" "Texas"
[45] "Utah" "Vermont"
[47] "Virginia" "Washington"
[49] "Virginia Occidental" "Wisconsin"
[51] "Wyoming" "Puerto Rico"

Ahora podemos ver que Washington, DC (Distrito de Columbia)


y Puerto Rico son los estados “adicionales” incluidos en el conjunto de datos.
Machine Translated by Google

Análisis exploratorio de datos 45

Dado que son claramente parte de los EE. UU. (pero no estados oficiales
de la unión), todo parece estar bien.

Este último análisis hizo uso de algo que discutiremos en la siguiente


sección: datos externos. Sabíamos que solo hay 50 estados en EE. UU.,
por lo que ver los nombres de 52 estados fue un detonante inmediato de
que algo podría estar mal. En este caso, todo estuvo bien, pero validar tus
datos con una fuente de datos externa puede resultar muy útil. lo que nos
trae
a….

4.7 Validar con al menos una fuente de


datos externa

Es muy importante asegurarse de que sus datos coincidan con algo fuera
del conjunto de datos. Le permite asegurarse de que las mediciones
coincidan aproximadamente con lo que deberían ser y sirve para verificar
qué otras cosas podrían estar mal en su conjunto de datos. La validación
externa a menudo puede ser tan simple como comparar sus datos con un
solo número, como haremos aquí.

En EE. UU. tenemos estándares nacionales de calidad del aire ambiente y,


para el ozono, el estándar actual2 establecido en 2008 es que la “cuarta
concentración máxima diaria anual de 8 horas, promediada durante 3 años”
no debe exceder 0,075 partes por millón (ppm). Los detalles exactos de
cómo calcular esto no son importantes para este análisis, pero en términos
generales, la concentración promedio de 8 horas no debe ser mucho mayor
que 0,075 ppm (puede ser mayor debido a la forma en que está redactado
el estándar).

Echemos un vistazo a las mediciones horarias de ozono.

2
http://www.epa.gov/ttn/naaqs/standards/ozone/s_o3_history.html
Machine Translated by Google

Análisis exploratorio de datos 46

> resumen(ozono$Muestra.Medición)
Mín. 1er P. Mediana Media 3ª Qu. Máx.
0,00000 0,02000 0,03200 0,03123 0,04200 0,34900

Del resumen podemos ver que la concentración horaria máxima es


bastante alta (0,349 ppm) pero que, en general, la mayor parte de la
distribución está muy por debajo de 0,075.

Podemos obtener un poco más de detalle sobre la distribución observando


los deciles de los datos.

> cuantil(ozono$Muestra.Medición, sec(0, 1, 0.1))


0% 10% 20% 30% 40% 50% 60% 70%
0,000 0,010 0,018 0,023 0,028 0,032 0,036 0,040
80% 90% 100%
0,044 0,051 0,349

Sabiendo que el estándar nacional para el ozono es algo así como 0,075,
podemos ver en los datos que

• Los datos son al menos del orden de magnitud correcto (es decir,
las unidades son correctas) •
El rango de distribución es más o menos lo que esperaríamos, dada
la regulación sobre los niveles de contaminación ambiental

• Algunos niveles horarios (menos del 10%) están por encima de


0,075, pero esto puede ser razonable dada la redacción de la
norma y el promedio involucrado.

4.8 Hacer una trama

Hacer un gráfico para visualizar sus datos es una buena manera de


mejorar la comprensión de su pregunta y sus datos.
El trazado puede ocurrir en diferentes etapas de un análisis de datos. Para
Machine Translated by Google

Análisis exploratorio de datos 47

Por ejemplo, la trama puede ocurrir en la fase exploratoria o más adelante


en la fase de presentación/comunicación.

Hay dos razones clave para hacer un gráfico de sus datos.


Están creando expectativas y controlando las desviaciones de las
expectativas.

En las primeras etapas del análisis, es posible que tenga una pregunta/
hipótesis, pero es posible que tenga poca idea de lo que sucede en los
datos. Es posible que haya echado un vistazo a algunos de ellos para
realizar algunas comprobaciones de cordura, pero si su conjunto de
datos es lo suficientemente grande, será difícil simplemente mirar todos los datos.
Por lo tanto, elaborar algún tipo de gráfico, que sirva como resumen,
será una herramienta útil para establecer expectativas sobre cómo
deberían verse los datos.

Una vez que tenga una buena comprensión de los datos, una buena
pregunta/hipótesis y un conjunto de expectativas sobre lo que los datos
deberían decir con respecto a su pregunta, hacer un gráfico puede ser
una herramienta útil para ver qué tan bien los datos coinciden con sus
expectativas. . Las tramas son particularmente buenas para permitirte
ver desviaciones de lo que podrías esperar. Las tablas suelen ser buenas
para resumir datos presentando elementos como medias, medianas u
otras estadísticas. Los gráficos, sin embargo, pueden mostrarle esas
cosas, así como mostrarle cosas que están lejos de la media o la
mediana, para que pueda verificar si se supone que algo está tan lejos.
A menudo, lo que es obvio en una trama puede ocultarse en una tabla.

Aquí hay un diagrama de caja simple3 de los datos de ozono, con un diagrama de
caja para cada estado.

3
https://en.wikipedia.org/wiki/Box_plot
Machine Translated by Google

Análisis exploratorio de datos 48

> par(las = 2, mar = c(10, 4, 2, 2), cex.axis = 0.8) >


boxplot(Muestra.Medición ~ Estado.Nombre, ozono, rango = 0, ylab = \ "Nivel de ozono
( ppm)")

Diagrama de caja de los valores de ozono por estado

En el gráfico podemos ver que para la mayoría de los estados los datos
se encuentran dentro de un rango bastante estrecho por debajo de 0,05
ppm. Sin embargo, para Puerto Rico vemos que los valores típicos son
muy bajos, excepto por algunos valores extremadamente altos. De
manera similar, Georgia y Hawaii parecen experimentar un valor muy
alto ocasionalmente. Podría valer la pena explorarlos más a fondo,
dependiendo de su pregunta.
Machine Translated by Google

Análisis exploratorio de datos 49

4.9 Pruebe primero la solución sencilla

Recuerde que nuestra pregunta original era

¿Los condados del este de los Estados Unidos tienen


niveles de ozono más altos que los condados del oeste
de los Estados Unidos?

¿Cuál es la respuesta más sencilla que podríamos dar a esta pregunta?


Por el momento, no se preocupe por si la respuesta es correcta, pero
la cuestión es cómo podría proporcionar evidencia prima facie para su
hipótesis o pregunta. Podrás refutar esa evidencia más adelante con un
análisis más profundo, pero este es el primer paso. Es importante
destacar que si no se encuentra evidencia de una señal en los datos
mediante un simple gráfico o análisis, a menudo es poco probable que
se encuentre algo mediante un análisis más sofisticado.

Primero, debemos definir qué entendemos por “oriental” y “occidental”.


Lo más sencillo que se puede hacer aquí es simplemente dividir el país
en este y oeste utilizando un valor de longitud específico. Por ahora,
usaremos ­100 como límite. Cualquier monitor con una longitud inferior
a ­100 será "oeste" y cualquier monitor con una longitud mayor o igual
a ­100 será "este".

> biblioteca(mapas)
> mapa("estado")
> abline(v = ­100, lwd = 3) >
texto(­120, 30, "Oeste") >
texto(­75, 30, "Este")
Machine Translated by Google

Análisis exploratorio de datos 50

Mapa de las regiones este y oeste

Aquí creamos una nueva variable llamada región que usamos para indicar
si una medición determinada en el conjunto de datos se registró en el "este"
o el "oeste".

> ozono$región <­ factor(ifelse(ozono$Longitud < ­100, "oeste", "eas\ t"))

Ahora podemos hacer un resumen simple de los niveles de ozono en el


este y el oeste de los EE. UU. para ver dónde tienden a estar los niveles.
más alto.
Machine Translated by Google

Análisis exploratorio de datos 51

> group_by(ozono, región) %>%


+ resumir(media = media(Muestra.Medición, na.rm = VERDADERO),
+ mediana = mediana(Muestra.Medición, na.rm = VERDADERO\
))
Fuente: marco de datos local [2 x 3]

región Mediana Media


(fctr) (dbl) (dbl)
1 este 0,02995250 0,030
2 oeste 0,03400735 0,035

Tanto el nivel medio como el medio de ozono son más altos en el


oeste de EE. UU. que en el este de EE. UU., en aproximadamente 0,004 ppm.

También podemos hacer un diagrama de caja del ozono en las dos regiones.
para ver cómo se comparan.

> diagrama de caja(Muestra.Medición ~ región, ozono, rango = 0)


Machine Translated by Google

Análisis exploratorio de datos 52

Diagrama de caja del ozono para las regiones este y oeste

Podemos ver en los diagramas de caja que la variabilidad del ozono en el este
tiende a ser mucho mayor que la variabilidad en el oeste.

Desafía tu solución
La solución fácil es buena porque es, bueno, fácil, pero nunca debes
permitir que esos resultados duren el día. Siempre debe pensar en formas
de desafiar los resultados, especialmente si esos resultados se ajustan
a sus expectativas anteriores.

Recordemos que anteriormente notamos que tres estados tenían algunos


Machine Translated by Google

Análisis exploratorio de datos 53

Valores inusualmente altos de ozono. No sabemos si estos


Los valores son reales o no (por ahora, supongamos que son reales), pero
Podría ser interesante ver si el mismo patrón de este/oeste
Se mantiene si eliminamos estos estados que tienen actividad inusual.

> filtro(ozono, Estado.Nombre != "Puerto Rico"


+ & Estado.Nombre != "Georgia"
+ & Estado.Nombre != "Hawái") %>%
+ group_by(región) %>%
+ resumir(media = media(Muestra.Medición, na.rm = VERDADERO),
+ mediana = mediana(Muestra.Medición, na.rm = VERDADERO\
))
Fuente: marco de datos local [2 x 3]

región Mediana Media

(fctr) (doble) (doble)


1 este 0,03003692 0,030
2 oeste 0,03406880 0,035

De hecho, parece que el patrón es el mismo incluso con esos 3


estados eliminados.

4.10 Preguntas de seguimiento

En este capítulo hemos presentado algunos pasos sencillos a seguir


al iniciar un análisis exploratorio. El ejemplo
El análisis realizado en este capítulo estuvo lejos de ser perfecto, pero
Nos hizo pensar en los datos y la pregunta de interés.
También nos dio una serie de cosas a seguir en caso de que
Sigo interesado en esta pregunta.

En este punto es útil considerar algunas preguntas de seguimiento.

1. ¿ Tienes los datos correctos? A veces, al concluir un análisis de


datos exploratorio, la conclusión
es que el conjunto de datos no es realmente apropiado para esto
Machine Translated by Google

Análisis exploratorio de datos 54

pregunta. En este caso, el conjunto de datos parecía perfectamente


adecuado para responder a la pregunta de si los condados del este
de EE. UU. tienen niveles más altos que los del oeste de EE. UU.
2. ¿ Necesitas otros datos? Si bien los datos parecían adecuados para
responder la pregunta planteada, vale la pena señalar que el conjunto
de datos solo cubrió un año (2014).
Puede que valga la pena examinar si el patrón este/oeste se
mantiene para otros años, en cuyo caso tendríamos que salir y
obtener otros datos.
3. ¿Tiene la pregunta correcta? En este caso, no está claro que la
pregunta que intentamos responder tenga relevancia inmediata y los
datos realmente no indicaron nada que aumentara la relevancia de
la pregunta. Por ejemplo, podría haber sido más interesante evaluar
qué condados estaban violando el estándar nacional de calidad del
aire ambiente, porque determinar esto podría tener implicaciones
regulatorias. Sin embargo, este es un cálculo mucho más complicado
de realizar y requiere datos de al menos 3 años anteriores.

El objetivo del análisis exploratorio de datos es hacerle pensar en sus datos


y razonar sobre su pregunta. En este punto, podemos refinar nuestra
pregunta o recopilar nuevos datos, todo en un proceso iterativo para llegar
a la verdad.

También podría gustarte