En este documento tendremos como fin ilustrar un archivo de R-Markdown para los estudiantes en el curso de Estadística para que sea mucho más fácil y compacto para ellos realizar sus propios informes.

Introducción a R-MarkDown

Inicialmente realizaremos la importación de la base de datos pero no sin antes definifir cada variable:
  1. Edad: Edad de las personas en años
  2. Peso: Peso de las personas en kg
  3. Altura: Altura de las personas en cm
  4. Sexo: Sexo de las personas (Hombre o Mujer)
  5. Muñeca: Longitud de la muñeca en centímetros
  6. Bícepts: Longitud de los bíceps en centíemtros ## Importación de la base de datos
library(readxl)
Data <- read_excel("C:/Users/sebas/OneDrive/Escritorio/Universidad Javeriana/Profesora Isabel/Data.xlsx")
X<- data.frame(Data)
#Observar los primeros elementos
head(X)
##   edad peso altura   sexo muneca biceps
## 1   43 87.3  188.0 Hombre   12.2   35.8
## 2   65 80.0  174.0 Hombre   12.0   35.0
## 3   45 82.3  176.5 Hombre   11.2   38.5
## 4   37 73.6  180.3 Hombre   11.2   32.2
## 5   55 74.1  167.6 Hombre   11.8   32.9
## 6   33 85.9  188.0 Hombre   12.4   38.5
#Observar la clase de los elementos
str(X)
## 'data.frame':    36 obs. of  6 variables:
##  $ edad  : num  43 65 45 37 55 33 25 35 28 26 ...
##  $ peso  : num  87.3 80 82.3 73.6 74.1 85.9 73.2 76.3 65.9 90.9 ...
##  $ altura: num  188 174 176 180 168 ...
##  $ sexo  : chr  "Hombre" "Hombre" "Hombre" "Hombre" ...
##  $ muneca: num  12.2 12 11.2 11.2 11.8 12.4 10.6 11.3 10.2 12 ...
##  $ biceps: num  35.8 35 38.5 32.2 32.9 38.5 38.3 35 32.1 40.4 ...
#Observamos que la columna del género no aparece como un factor así
#Que lo corregiremos
X$sexo<- factor(X$sexo,levels=c("Hombre","Mujer"),labels=c("Hombre",
                                                           "Mujer"))
#Comprobamos
str(X)
## 'data.frame':    36 obs. of  6 variables:
##  $ edad  : num  43 65 45 37 55 33 25 35 28 26 ...
##  $ peso  : num  87.3 80 82.3 73.6 74.1 85.9 73.2 76.3 65.9 90.9 ...
##  $ altura: num  188 174 176 180 168 ...
##  $ sexo  : Factor w/ 2 levels "Hombre","Mujer": 1 1 1 1 1 1 1 1 1 1 ...
##  $ muneca: num  12.2 12 11.2 11.2 11.8 12.4 10.6 11.3 10.2 12 ...
##  $ biceps: num  35.8 35 38.5 32.2 32.9 38.5 38.3 35 32.1 40.4 ...

Ahora procederemos a realizar estadísticas descriptivas básicas con la función summary

summary(X)
##       edad            peso           altura          sexo        muneca      
##  Min.   :19.00   Min.   :42.00   Min.   :147.2   Hombre:18   Min.   : 8.300  
##  1st Qu.:24.75   1st Qu.:54.95   1st Qu.:164.8   Mujer :18   1st Qu.: 9.475  
##  Median :28.00   Median :71.50   Median :172.7               Median :10.650  
##  Mean   :31.44   Mean   :68.95   Mean   :171.6               Mean   :10.467  
##  3rd Qu.:37.00   3rd Qu.:82.40   3rd Qu.:179.4               3rd Qu.:11.500  
##  Max.   :65.00   Max.   :98.20   Max.   :190.5               Max.   :12.400  
##      biceps     
##  Min.   :23.50  
##  1st Qu.:25.98  
##  Median :32.15  
##  Mean   :31.17  
##  3rd Qu.:35.05  
##  Max.   :40.40
#También recordemos podemos aplicar otras descriptivas
#Desviación estándar
apply(X[,-4],2,sd)
##      edad      peso    altura    muneca    biceps 
## 10.554469 14.868999 10.520170  1.175463  5.234392
#Crear funciones para realizar el coeficiente de variación
coefvar<- function(x){
  coefvar<- round((sd(x)/abs(mean(x)))*100,3)
}
cat("Coeficiente de variación %:")
## Coeficiente de variación %:
apply(X[,-4],2,coefvar)
##   edad   peso altura muneca biceps 
## 33.565 21.564  6.132 11.231 16.795

Ahora procederemos a realizar los diferentes gráficos descriptivos y evaluación de estructuras de correlación lineal.

cor<- round(cor(X[,-4],method="pearson"),2);cor
##        edad peso altura muneca biceps
## edad   1.00 0.52   0.33   0.62   0.48
## peso   0.52 1.00   0.80   0.85   0.91
## altura 0.33 0.80   1.00   0.66   0.71
## muneca 0.62 0.85   0.66   1.00   0.88
## biceps 0.48 0.91   0.71   0.88   1.00
#Podemos hacerlo mucho más bonito básandonos en librerías como ggplot2 y reshape
library(ggplot2);library(reshape2)
melted_cor <- melt(cor)
  ggplot(data = melted_cor, aes(x=Var1, y=Var2, fill=value)) + 
    geom_tile() +
    geom_text(aes(Var2, Var1, label = value), size = 5) +
    scale_fill_gradient2(low = "blue", high = "red",
                         limit = c(-1,1), name=("Correlation Pearson")) +
    theme(axis.title.x = element_blank(),
          axis.title.y = element_blank(),
          panel.background = element_blank())

#Ahora evaluamos esta estructura de correlación con diagramas de dispersión
pairs(X[,-4],pch=19)

#Ahora procederemos a realizar histogramas junto con densidades para
#Cada variable cuantitativa
hist(X$edad,main="",xlab="Edad",col="aquamarine4",freq=FALSE,ylab="Frecuencia Relativa",panel.first=grid())
lines(density(X$edad),lwd=2,lty=2)

#Procedemos a realizar boxplots por grupos
boxplot(X$biceps~X$sexo,main="",xlab="Sexo",ylab="Circuferencia del Biceps en cm",pch=19,col="white",border=c("blue4","pink"))

## Agregando mas detalles
# Vertical box plot
boxplot(X$biceps~X$sexo,main="",xlab="Sexo",ylab="Circuferencia del Biceps en cm",pch=19,col="white",border=c("blue4","pink"))
grid(nx = NULL, ny = NULL,
     lty = 1, col = "gray", lwd = 1)
boxplot(X$biceps~X$sexo,xlab="Sexo",ylab="Circuferencia del Biceps en cm",pch=19,col="white",border=c("blue4","pink"),add=T)
# Points
stripchart(X$biceps~X$sexo,              # Data
           method = "jitter", # Random noise
           pch = 19,          # Pch symbols
           col = c("blue4","pink"),           # Color of the symbol
           vertical = TRUE,   # Vertical mode
           add = TRUE)