Está en la página 1de 17

Análisis Exploratorio de Datos (EDA) en R

Adriana Lopez, Ph.D.

2022-2

Jueves

Revisión del Taller

1. Dentro de las bases de datos incorporadas en R, consultar la documentación sobre PlantGrowth y responder:
a. ¿Qué describe esa base de datos?
b. ¿Cuál es su dimensión?
c. ¿Cuál es su estructura?
2. Buscar una base de datos en DASL (https://dasl.datadescription.com), u otra base de datos disponible en internet
que sea de su interés, y consulte una breve descripción de esa base:
a. ¿Qué originó esa base: estudio observacional o experimento?
b. ¿Cuántos individuos/objetos se midiero?
c. ¿Cuántas y cuáles variables se midieron?

Como leer una base de datos en extensión txt en R

Para ilustrar como usar R para realizar el análisis exploratorio de datos de una base de datos, vamos a usar una base
de datos que no está incorporada en R. Hoy vamos a aprender a leer en R una base de datos en extensión txt. Para
ello, vamos a usar la base de datos coasters-2015.txt de DASL: https://dasl.datadescription.com/datafile/coasters-
2015/?_sfm_methods=Boxplots&_sfm_cases=4+59943
• Descargue la base de datos coaster-2015.txt. Mueva la base de datos en la carpeta que esté usando para esta clase.
• Usando Session > Set Working Directory > Choose Directory escoja su carpeta de trabajo, donde guardó
coaster-2015.txt, en mi caso es esta R:
setwd("~/Documents/Adriana/UPTC/2022-2/DEQ")

• Lea esa base de datos en R:


moru=read.delim(file="coasters-2015.txt")
str(moru)

'data.frame': 241 obs. of 9 variables:


$ Name : chr "Top Thrill Dragster" "Superman The Escap" "Millennium Force" "Goliath" ...
$ Park : chr "Cedar Point" "Six Flags Magic Mountain" "Cedar Point" "Six Flags Magic Mountain" ...
$ Track : chr "Steel" "Steel" "Steel" "Steel" ...
$ Speed : num 120 100 93 85 85 82 82 80 80 80 ...
$ Height : num 420 415 310 235 245 160 205 209 165 230 ...
$ Drop : num 400 328 300 255 255 ...
$ Length : num 2800 1235 6595 4500 5312 ...
$ Duration : int NA NA 165 180 210 NA 62 163 NA 240 ...
$ Inversions: int 0 0 0 0 0 0 0 0 0 0 ...

1
EDA univariado en R

Variables categóricas o cualitativas

Algunas de las características que se pueden medir a sujetos u objetos son cualitativas en naturaleza, indicando que el
sujeto u objeto pertenece a una categoría. En la siguiente lista se presentan ejemplos de variables categóricas, también
conocidas como variables cualitativas, con la variable y posibles categorías de dicha variable:
(i) Color de ojos: Azul, Café, Negro, Verde, Otro.
(ii) ¿Le han realizado una prueba para detectar coronovirus? Si, No.
(iii) Calificación: Excelente, Bueno, Regular,Malo.
(iv) Nivel de educación máximo alcanzado: Primaria, Secundaria, Superior
Mientras algunas variables cualitativas tienen solo dos categorías, otras pueden tener tres o más. Cada sujeto u objeto debe
pertenecer solo a una categoría, y la lista de categorías debe ser exhaustiva, es decir, incluir todas las posibles mediciones
de la característica bajo estudio, por eso algunas variables categóricas incluyen la categoría Otro, para incluir cualquier
categoría que no este dentro de las opciones dadas.
Para una variable categórica podemos reportar:
Resumen numérico es una tabla de frecuencias donde se presenta cuantos sujetos u objetos caen en cada categoría
(frecuencias absolutas), o la proporción de sujetos u objetos en cada categoría (frecuencias relativas). Y la
única medida numérica que podemos reportar es la moda, la categoría más frecuente observada para la variable. En
caso que la variable tenga más de dos categorías y que dos categorías tengan la misma frecuencia, ambas deben ser
reportadas como modas, aclarando que ambas categorías tienen la misma frecuencia.
Resumen gráfico es un diagrama de barras, ya sea usando las frecuencias absolutas o las frecuencias relativas.
Las variables categóricas se pueden medir en escala nominal (ejemplos (i) y (ii)) o en escala ordinal (ejemplos (iii) y (iv)).
En la escala nominal las categorías se pueden reportar en cualquier orden, mientras en la escala ordinal, el reporte tanto
numérico como gráfico debe respetar el orden intrínseco en las categorías.

Ejemplo en R: variable categórica tipo de montañas rusas en el mundo

• Resumen numérico
Tabla de frecuencias absolutas
addmargins(table(moru$Track))

Steel Wood Sum


212 29 241
Tabla de frecuencias relativas
addmargins(prop.table(table(moru$Track)))

Steel Wood Sum


0.879668 0.120332 1.000000
• Resumen gráfico
barplot(prop.table(table(moru$Track)),
main="Distribución del tipo", #main: título,
xlab="Tipo de montaña rusa", #xlab: etiqueta eje horizontal,
ylab="Frecuencia relativa", #ylab: etiqueta eje vertical
ylim=c(0,1)) #ylim: rango de valores para el eje y

2
Distribución del tipo

1.0
0.8
Frecuencia relativa

0.6
0.4
0.2
0.0

Steel Wood

Tipo de montaña rusa


Interpretación: De las montañas rusas reportadas en la página Roller Coaster Data Base https://rcdb.com, el 88% son
hechas en acero, el 12% remanente corresponden a montañas rusas construidas en madera.

Variables cuantitativas

Para una variable cuantitativa podemos reportar:


• Resumen numérico
– Medidas de tendendia central: promedio (x̄), mediana (Q2), moda.
– Medidas de orden o de posición: resumen de los cinco números (Mínimo,Q1, Q2,Q3,Máximo).
– Medidas de variabilidad o de dispersión: varianza (s2 ), desviación estándar (s), rango intercuartílico (IQR=Q3-
Q1), rango (R=Máximo-Mínimo).
• Resumen gráfico
– Histograma.
– Diagrama de caja y bigotes.

Ejemplo en R: velocidad de montañas rusas en el mundo

Resúmenes numéricos en R

Medidas de tendendia central

• Media aritmética o promedio


mean(moru$Speed) # en mph

[1] 55.35062

3
mean(moru$Speed*1.60934) # en km/h

[1] 89.07797
mean(moru$Speed)*1.60934 # en km/h

[1] 89.07797
Interpretación: La velocidad promedio de las montañas rusas registradas en https://rcdb.com en 2015, era 89 km por hora.
• Mediana o segundo cuartil
median(moru$Speed)

[1] 55
median(moru$Speed)*1.60934

[1] 88.5137
Interpretación: De las 241 montañas rusas registradas en https://rcdb.com en 2015, 120 tiene una velocidad superior a
88.5 km por hora.
• Medidas de orden o de posición
quantile(moru$Speed)

0% 25% 50% 75% 100%


4.5 45.0 55.0 65.3 149.1
quantile(moru$Speed)*1.60934

0% 25% 50% 75% 100%


7.24203 72.42030 88.51370 105.08990 239.95259
• Mínimo
min(moru$Speed)

[1] 4.5
min(moru$Speed)*1.60934

[1] 7.24203
which(moru$Speed==min(moru$Speed)) # ubicación del mínimo

[1] 149
moru$Name[which(moru$Speed==min(moru$Speed))]

[1] "Tuff-Tuff T\u008cget"


moru$Park[which(moru$Speed==min(moru$Speed))]

[1] "Gr\u009ana Lund"


• Máximo
max(moru$Speed)

[1] 149.1
max(moru$Speed)*1.60934

[1] 239.9526
which(moru$Speed==max(moru$Speed)) # ubicación del máximo

[1] 139

4
moru$Name[which(moru$Speed==max(moru$Speed))]

[1] "Formula Rossa"


moru$Park[which(moru$Speed==max(moru$Speed))]

[1] "Ferrari World Abu Dhabi"


Interpretación: La montaña más lenta en los registros de 2015 fue Tuff-Tuff Tåget del parque Gröna Lund en Estocolmo,
Suecia, con una velocidad de 7.24 km/h. El 25% de las montañas rusas tiene una velocidad inferior a 72.42 km/h. El 50%
de las montañas rusas tiene una velocidad inferior a 88.51 km/h. Y el 25% tiene una velocidad que supera los 105.09 km/h.
La montaña rusa más rápida en 2015 era Formula Rossa en el parque Ferrari World Abu Dhabi con una velocidad de
239.95 km/h.

Medidas de variabilidad o de dispersión


• Varianza
var(moru$Speed)

[1] 348.3759
• Desviación estándar
sd(moru$Speed)

[1] 18.66483
sd(moru$Speed)*1.60934

[1] 30.03806
Interpretación: La desviación estándar de la velocidad de las montañas rusas registradas en 2015 es 30.04 km/h.
• Rango intercuartílico
IQR(moru$Speed)

[1] 20.3
IQR(moru$Speed)*1.60934

[1] 32.6696
Interpretación: El rango intercuartílico de la velocidad de las montañas rusas es 32.67 km/h.

Resúmenes gráficos

hist(moru$Speed,main="Montañas rusas en el mundo",


xlab="Velocidad (mph)",ylab="Frecuencia")

Histograma

5
Montañas rusas en el mundo

80
60
Frecuencia

40
20
0

0 50 100 150

Velocidad (mph)
hist(moru$Speed*1.60934,main="Montañas rusas en el mundo",
xlab="Velocidad (km/h)",ylab="Frecuencia")

Montañas rusas en el mundo


60
50
Frecuencia

40
30
20
10
0

0 50 100 150 200

Velocidad (km/h)
Interpretación: La distribución de la velocidad de las montañas rusas a nivel mundial en 2015 es sesgada a la derecha.

6
boxplot(moru$Speed,main="Montañas rusas en el mundo",
ylab="Velocidad (mph)")

Diagrama de caja
Montañas rusas en el mundo

150
100
Velocidad (mph)

50
0

boxplot(moru$Speed*1.60934,main="Montañas rusas en el mundo",


ylab="Velocidad (km/h)")

Montañas rusas en el mundo


200
Velocidad (km/h)

150
100
50
0

Interpretación: La distribución de la velocidad de las montañas rusas a nivel mundial en 2015 es sesgada a la derecha.

7
Taller

1. Para la variable Inversions de la base de datos moru. Obtener en R:


a. las frecuencias absolutas
b. las frecuencias relativas
c. diagrama de barras con las frecuencias relativas
d. describa en un párrafo los principales hallazgos.
2. Para la variable Length de la base de datos moru escriba en R los comandos para obtener:
a. las medidas de tendencia central
b. las medidas de orden
c. las medidas de dispersión
d. el histograma
e. el diagrama de caja
f. describa en un párrafo los principales hallazgos en cuanto a centro, dispersión y forma de la distribución.

Viernes

Revisión de taller

1. Para la variable Inversions de la base de datos moru. Obtener en R:


a. las frecuencias absolutas
addmargins(table(moru$Inversions))

0 1 Sum
107 134 241
b. las frecuencias relativas
addmargins(prop.table(table(moru$Inversions)))

0 1 Sum
0.4439834 0.5560166 1.0000000
c. diagrama de barras con las frecuencias relativas
barplot(prop.table(table(moru$Inversions)),
main="Distribución de Inversions",
ylab="Frecuencia relativa",
xlab="Ausencia/Presencia de loops")

8
Distribución de Inversions

0.5
0.4
Frecuencia relativa

0.3
0.2
0.1
0.0

0 1

Ausencia/Presencia de loops
d. describa en un párrafo los principales hallazgos.
De las montañas rusas reportadas el 44% corresponde a montañas rusas que no tienen inversiones.
2. Para la variable Length de la base de datos moru escriba en R los comandos para obtener:
a. las medidas de tendencia central
# Como la variable original está medida en pies (ft), con el fin de facilitar la interpretación,
# vamos a crear una nueva variable: longitud, que multiplica la variable original Length
# por el factor 0.3048 para convertirla en metros

moru$longitud=moru$Length*0.3048
mean(moru$longitud)

[1] 783.3581
median(moru$longitud)

[1] 738.5304
b. las medidas de orden
quantile(moru$longitud)

0% 25% 50% 75% 100%


60.1980 369.9967 738.5304 1092.0070 2478.9689
• Mínimo
min(moru$longitud)

[1] 60.198
which(moru$longitud==min(moru$longitud)) # ubicación del mínimo

[1] 102

9
moru$Name[which(moru$longitud==min(moru$longitud))]

[1] "Wild West Express"


moru$Park[which(moru$longitud==min(moru$longitud))]

[1] "Glenwood Caverns Adventure Park"


• Máximo
max(moru$longitud)

[1] 2478.969
which(moru$longitud==max(moru$longitud)) # ubicación del mínimo

[1] 73
moru$Name[which(moru$longitud==max(moru$longitud))]

[1] "Steel Dragon 2000"


moru$Park[which(moru$longitud==max(moru$longitud))]

[1] "Nagashima Spa Land"


c. las medidas de dispersión
var(moru$longitud)

[1] 242306
sd(moru$longitud)

[1] 492.2459
IQR(moru$longitud)

[1] 722.0102
d. el histograma
hist(moru$longitud)

10
Histogram of moru$longitud

60
50
40
Frequency

30
20
10
0

0 500 1000 1500 2000 2500

moru$longitud
e. el diagrama de caja
boxplot(moru$longitud)
2500
2000
1500
1000
500
0

f. describa en un párrafo los principales hallazgos en cuanto a centro, dispersión y forma de la distribución.
Para esta base de datos registrada en el 2015, la longitud promedio de las montañas rusas es 783.36 m, un poco más de
3/4 de kilómetro. La montaña rusa más corta es Wild West del parque Express Glenwood Caverns Adventure Park en
Glenwood Springs, Colorado, con una longitud de 60.20 m. El 25% de las montañas rusas tiene una longitud inferior a 370
m. El 50% tienen una longitud inferior a 738.53 m. El 75% tienen una longitud inferior a 1092.01 m. Y la montaña rusa
más larga mide 2478.97 m, está en Japón en el parque Nagashima Spa Land y se llama Steel Dragon 2000. En cuanto a la
disperión, la desviación estándar de la longitud de las montañas rusas es 492.25 m. Y el rango intercuartílico es 722.01 m.

11
Por último, en el histrograma de la longitud de las montaña rusas, vemos una distribución bimodal, con modas en las
clases 200-400 y 800-100, la primera con una frecuencia de 60 montañas rusas y la segunda con 36. En el diagrama de caja
no se visualizan las modas, sino una distribución sesgada a la derecha con dos outliers superiores.

EDA univariado R - algunos detalles


Con el fin de facilitar la interpretación, vamos a crear una nueva variable: velocidad, que multiplica la variable original
Speed que fue medida en millas por hora (mph), por el factor 1.60934 para convertirla en kilómetros por hora (km/h):
moru$velocidad=moru$Speed*1.60934

• Función summary
summary(moru$velocidad)

Min. 1st Qu. Median Mean 3rd Qu. Max.


7.242 72.420 88.514 89.078 105.090 239.953
• Histograma
hv=hist(moru$velocidad,main="Montañas rusas en el mundo",
xlab="Velocidad (km/h)",ylab="Frecuencia")

Montañas rusas en el mundo


60
50
Frecuencia

40
30
20
10
0

0 50 100 150 200

Velocidad (km/h)
hv

$breaks
[1] 0 20 40 60 80 100 120 140 160 180 200 220 240

$counts
[1] 1 9 29 51 66 55 22 4 2 1 0 1

$density
[1] 0.0002074689 0.0018672199 0.0060165975 0.0105809129 0.0136929461 0.0114107884 0.0045643154

12
[8] 0.0008298755 0.0004149378 0.0002074689 0.0000000000 0.0002074689

$mids
[1] 10 30 50 70 90 110 130 150 170 190 210 230

$xname
[1] "moru$velocidad"

$equidist
[1] TRUE

attr(,"class")
[1] "histogram"
• Diagrama de caja
bv=boxplot(moru$velocidad,main="Montañas rusas en el mundo",
ylab="Velocidad (mph)")

Montañas rusas en el mundo


200
Velocidad (mph)

150
100
50
0

bv

$stats
[,1]
[1,] 26.07131
[2,] 72.42030
[3,] 88.51370
[4,] 105.08990
[5,] 152.88730

$n
[1] 241

$conf
[,1]
[1,] 85.18869
[2,] 91.83871

$out

13
[1] 193.12080 160.93400 160.93400 239.95259 7.24203

$group
[1] 1 1 1 1 1

$names
[1] ""
quantile(moru$Speed*1.60934)

0% 25% 50% 75% 100%


7.24203 72.42030 88.51370 105.08990 239.95259
# cotas para detectar outliers
cotainferior=quantile(moru$velocidad)[2]-1.5*IQR(moru$velocidad)
cotainferior

25%
23.4159
cotasuperior=quantile(moru$velocidad)[4]+1.5*IQR(moru$velocidad)
cotasuperior

75%
154.0943
# datos de velocidad ordenados
moru$velodidad[order(moru$velocidad)]

NULL
# valores detectados como outliers por debajo
(moru$velocidad[which(moru$velocidad<cotainferior)])

[1] 7.24203
# valores detectados como outliers por encima
(moru$velocidad[which(moru$velocidad>cotasuperior)])

[1] 193.1208 160.9340 160.9340 239.9526

EDA bivariado

boxplot(moru$velocidad~moru$Track,main="Montañas rusas en el mundo por tipo",


ylab="Velocidad (km/h)")

14
Montañas rusas en el mundo por tipo

200
Velocidad (km/h)

150
100
50
0

Steel Wood

moru$Track
boxplot(velocidad~Track,data=moru,
main="Montañas rusas en el mundo por tipo",
ylab="Velocidad (km/h)")

Montañas rusas en el mundo por tipo


200
Velocidad (km/h)

150
100
50
0

Steel Wood

Track

15
aggregate(velocidad~Track,data=moru,FUN=summary)

Track velocidad.Min. velocidad.1st Qu. velocidad.Median velocidad.Mean velocidad.3rd Qu.


1 Steel 7.24203 70.00629 88.51370 88.51066 105.57270
2 Wood 64.37360 83.68568 89.96211 93.22518 104.60710
velocidad.Max.
1 239.95259
2 126.17226

Ingresando los datos de la misma variable cuantitativa medida en dos grupos

• Ejemplo: estatura (en cm) de los estudiantes de Diseño Experimental de Química


# Ingresando los datos a vectores
mujeres=c(163,170,152,164,159,160,155,155,160,158,168,164,161,157,156,162,165,153,161,156,160,153,156)
hombres=c(170,178,177,171,177,175,180,170,180,176,174)

# Diagramas de caja lado a lado


boxplot(mujeres,hombres,main="Estudiantes de DEQuímica",
ylab="Estatura (cm)",
col=c("orange","darkgreen")) #colores en los diagramas
# Adicionando la leyenda a la figura
legend("topleft",legend=c("Mujeres","Hombres"),col=c("orange","darkgreen"),cex=0.8,lty=1,lwd=2,bty="n")

Estudiantes de DEQuímica
180

Mujeres
Hombres
175
170
Estatura (cm)

165
160
155

summary(mujeres)

Min. 1st Qu. Median Mean 3rd Qu. Max.


152.0 156.0 160.0 159.5 162.5 170.0
summary(hombres)

Min. 1st Qu. Median Mean 3rd Qu. Max.


170.0 172.5 176.0 175.3 177.5 180.0

16
Taller

1. Para la base de datos que usted buscó para la última clase, realice el punto 2 del taller anterior para una de las
variables cuantitativas de su base de datos, es decir:
a. las medidas de tendencia central, interprete.
b. resumen de cinco números, interprete.
c. las medidas de dispersión en unidades lineales, interprete.
d. el histograma, ¿cuál es la forma de la distribución?.
e. el diagrama de caja, ¿cuáles son los valores de las cotas inferior y superior para detectar outliers? ¿Alguna observación
fue detectada como outlier?
2. Si su base de datos tiene una variable cuantitativa y una categórica realice el EDA bivariado de esas dos variables,
tanto numérico como gráfico. De lo contrario consulte una base de datos con una variable categórica y una variable
cuantitativa, o un ejemplo/ejercicio con datos donde se haya medido la misma variable cuantitativa en dos grupos,
como en el ejemplo de las estaturas presentado en esta guía.

17

También podría gustarte