Introducción

Formalmente, se podría definir el Análisis Exploratorio de Datos - AED, como un conjunto de técnicas estadísticas cuya finalidad es conseguir un entendimiento básico de los datos y de las relaciones existentes entre las variables objeto de estudio, donde Se caracteriza un conjunto de individuos intentando desucubrir regularidades y singularidades de los mismos.

Las conclusiones obtenidas serán aplicables exclusivamente a los individuos considerados explícitamente en el estudio, sin que puedan hacerse extrapolaciones con validez científica fuera de ese contexto.

Este notebook muestra como usar algunas instrucciones propias del lenguaje y programa estadístico de software libre R, útiles en el Análisis Exploratorio de Datos, sin pretender ser exhaustiva ni agotar cada capacidad que ofrece el mismo. Se asume que lector esta familiarizado con los fundamentos de estadística, así como los conceptos básicos tanto del análisis descriptivo y exploratorio univariado como del análisis descriptivo y exploratorio multivariado.

No olvide repdoducir este ejercicio escribiendo el código. Recuerde: no copiar y pegar. Cuando copia y pega, casi siempre tiene una vista general que concluye con “claro, ya entiendo la lógica” (pero no es así). Cuando escribe cada linea de código, está viendo cada instrucción y se ve obligado a inspeccionarla con mayor detalle (y probar sus propias variaciones para mejorarla). Como resultado, aprende mucho mejor.

Finalmente, sería beneficioso si aplicara las instrucciones de código presentadas aquí a sus propios datos.

Datos estudiantes Geoestadística 2019-1
Genero Fidelidad Edad Peso Altura
Maculino Muy fiel 23 65 1.75
Maculino Algo fiel 24 64 1.78
Maculino Muy fiel 24 63 1.73
Maculino Algo fiel 25 68 1.69
Maculino Algo fiel 25 67 1.72
Maculino Algo fiel 26 68 1.81
Femenino Muy fiel 30 66 1.60
Maculino Algo fiel 25 70 1.70
Femenino Muy fiel 25 38 1.50
Maculino Algo fiel 35 85 1.75
Maculino Muy fiel 34 65 1.80
Maculino Muy fiel 33 71 1.73
Femenino Muy fiel 34 58 1.57
Femenino Muy fiel 36 63 1.64

Análisis univariado de datos cualitativos

#frecuencias absolutas
fa <- table(estudiantes$Genero)

#frecuencias relativas
fr <- round(table(estudiantes$Genero)/length(estudiantes$Genero),2)

#tabla de frecuencias
cbind(fa,fr)
##          fa   fr
## Femenino  4 0.29
## Maculino 10 0.71
#Gráfico de barras
barplot(fa,ylab="Frec. absoluta",xlab="Genero",main="Genero de os estudiantes")

#Categorias
cls <- levels(estudiantes$Genero)

# frecuencias expresadas en porcentaje
pct = 100*fr

#etiquetas
lbl = paste(cls," ",round(pct,1),"%",sep ="")

#Gráfico circular 2D
pie(fa, labels = lbl, col=rainbow(length(lbl)))

#Gráfico circular 3D
#install.packages("plotrix")
library(plotrix)
pie3D(fa, labels = lbl, explode=.2, col=rainbow(length(lbl)))

Análisis multivariado de datos cualitativos

#Tabla de contigencia por frecuencia absoluta
cont.abs <- table(estudiantes$Fidelidad,estudiantes$Genero)
cont.abs
##            
##             Femenino Maculino
##   Algo fiel        0        6
##   Muy fiel         4        4
#Tabla de contigencia por frecuencia relativa
cont.rel <- round(prop.table(cont.abs),2)
cont.rel
##            
##             Femenino Maculino
##   Algo fiel     0.00     0.43
##   Muy fiel      0.29     0.29
#Frecuencia marginal por fila
prop.table(cont.abs,1)
##            
##             Femenino Maculino
##   Algo fiel      0.0      1.0
##   Muy fiel       0.5      0.5
#Frecuencia marginal por columna
prop.table(cont.abs,2)
##            
##             Femenino Maculino
##   Algo fiel      0.0      0.6
##   Muy fiel       1.0      0.4
#Total por fila
margin.table(cont.abs, 1)
## 
## Algo fiel  Muy fiel 
##         6         8
#Total por columna
margin.table(cont.abs, 2)
## 
## Femenino Maculino 
##        4       10
#Diagrama de barras
barplot(cont.abs,ylab="Frec. absoluta",xlab="Genero",main="Genero de los estudiantes", col=cm.colors(2), legend.text=c("Algo fiel","Muy fiel"))

#Diagrama de barras perfil fila
#Por ahora, esta instrución se deja como ejercicio para el lector.

#Diagrama de barras perfil columna
#Por ahora, esta instrución se deja como ejercicio para el lector.

Análisis univariado de datos cuantivativos

#frecuencias absolutas
fa <- table(estudiantes$Edad)

#frecuencias relativas
fr <- round(table(estudiantes$Edad)/length(estudiantes$Edad),2)

#frecuencias absolutas acumuladas
Fa <- cumsum(fa)

#frecuencias relativas acumuladas
Fr <- cumsum(fr)

#tabla de frecuencias
cbind(fa,fr,Fa,Fr)
##    fa   fr Fa   Fr
## 23  1 0.07  1 0.07
## 24  2 0.14  3 0.21
## 25  4 0.29  7 0.50
## 26  1 0.07  8 0.57
## 30  1 0.07  9 0.64
## 33  1 0.07 10 0.71
## 34  2 0.14 12 0.85
## 35  1 0.07 13 0.92
## 36  1 0.07 14 0.99
#Moda
table(estudiantes$Edad)
## 
## 23 24 25 26 30 33 34 35 36 
##  1  2  4  1  1  1  2  1  1
which.max(table(estudiantes$Edad))
## 25 
##  3
#Diagrama de frecuencias
plot(fa, ylab="Frec. absoluta", xlab="Edad",main="Edad estudiantes")

#Diagrama de frecuencias acumuladas
#Por ahora, esta instrución se deja como ejercicio para el lector.

Datos agrupados

#Definición del número de clases (Regla de Sturges)
C <- nclass.Sturges(estudiantes$Altura)

#Definición de logitud de clase
L = ((max(estudiantes$Altura)-min(estudiantes$Altura))/C)

#Definción de rangos
bins<-seq(min(estudiantes$Altura),max(estudiantes$Altura),by=L)
rangos<-cut(estudiantes$Altura, bins)
table(rangos)
## rangos
##  (1.5,1.56] (1.56,1.62] (1.62,1.69] (1.69,1.75] (1.75,1.81] 
##           0           2           1           5           5
#Creción tabla de frecuencias
transform(table(rangos), Frec.rel = round(prop.table(Freq),2), Frec.acum=cumsum(Freq), Frec.rel.acum
= round(cumsum(Frec.rel=prop.table(Freq)),2))
##        rangos Freq Frec.rel Frec.acum Frec.rel.acum
## 1  (1.5,1.56]    0     0.00         0          0.00
## 2 (1.56,1.62]    2     0.15         2          0.15
## 3 (1.62,1.69]    1     0.08         3          0.23
## 4 (1.69,1.75]    5     0.38         8          0.62
## 5 (1.75,1.81]    5     0.38        13          1.00
#Histograma
hist(estudiantes$Altura, main="Altura de los estudiantes", ylab="Frecuencia",xlab="Altura")

Datos no agrupados

Medidas de tendencia central

#Media aritmética
mean(estudiantes$Altura)
## [1] 1.697857
#Media recortada
mean(estudiantes$Altura,trim=0.2)
## [1] 1.709
#Mediana
median(estudiantes$Altura)
## [1] 1.725

Medidas de posición

#Máximo
max(estudiantes$Altura)
## [1] 1.81
#Mínimo
min(estudiantes$Altura)
## [1] 1.5
#Rango
range(estudiantes$Altura)
## [1] 1.50 1.81
max(estudiantes$Altura)-min(estudiantes$Altura)
## [1] 0.31

Cuantiles

#Cuartiles
quantile(estudiantes$Altura)
##     0%    25%    50%    75%   100% 
## 1.5000 1.6525 1.7250 1.7500 1.8100
#Mediana
quantile(estudiantes$Altura,.5)
##   50% 
## 1.725
#Primer decil
quantile(estudiantes$Altura,.1)
##   10% 
## 1.579
#Primer percentil
quantile(estudiantes$Altura,.01)
##     1% 
## 1.5091
#Cinco números
fivenum(estudiantes$Altura)
## [1] 1.500 1.640 1.725 1.750 1.810
#Resumen
summary(estudiantes$Altura)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   1.500   1.653   1.725   1.698   1.750   1.810
#Diagrama de caja y bigotes
boxplot(estudiantes$Altura,  ylab="Altura (m)")

#Diagrama de tallos y hojas 
stem(estudiantes$Altura,scale = 2)
## 
##   The decimal point is 1 digit(s) to the left of the |
## 
##   15 | 0
##   15 | 7
##   16 | 04
##   16 | 9
##   17 | 0233
##   17 | 558
##   18 | 01

Medidas de dispersión

#Varianza
var(estudiantes$Altura)
## [1] 0.008171978
#Desviación estándar
sd(estudiantes$Altura)
## [1] 0.09039899
# Coeficiente de variación media
sd(estudiantes$Altura)/mean(estudiantes$Altura)
## [1] 0.05324299
#MEDA
#Por ahora, esta instrución se deja como ejercicio para el lector.

#Coeficiente de variación MEDA
#Por ahora, esta instrución se deja como ejercicio para el lector.

Medidas de forma

#install.packages("moments")
library(moments)

#Asimetria
skewness(estudiantes$Altura)
## [1] -0.818641
#Curtosis
kurtosis(estudiantes$Altura)
## [1] 2.769188

Análisis multivariado de datos cuantitativos

#Matriz de covarianza
cov(estudiantes[,4:5])
##              Peso      Altura
## Peso   97.7637363 0.593241758
## Altura  0.5932418 0.008171978
#Matriz de correlación 
cor(as.matrix(estudiantes[,4:5]))
##             Peso    Altura
## Peso   1.0000000 0.6637113
## Altura 0.6637113 1.0000000

Medidas de variabilidad conjunta

#Varianza Total
#Se deja como ejercicio para el lector.

#Varianza Generalizada
#Se deja como ejercicio para el lector.

#Varianza Efectiva
#Se deja como ejercicio para el lector.

Medidas de dependencia conjunta

#Dependencia efectiva
#Se deja como ejercicio para el lector.

Diagramas multivariados

#Diagramas de dispersión
plot(estudiantes[,5],estudiantes[,4], main="Diagrama de dispersión", xlab="Altura (m)", ylab="Peso (kg)")

#Matriz de diagramas de dispersión 
pairs(estudiantes[,3:5])