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.
| 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 |
#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)))
#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.
#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.
#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")
#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
#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
#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
#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.
#install.packages("moments")
library(moments)
#Asimetria
skewness(estudiantes$Altura)
## [1] -0.818641
#Curtosis
kurtosis(estudiantes$Altura)
## [1] 2.769188
#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
#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.
#Dependencia efectiva
#Se deja como ejercicio para el lector.
#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])