Estadistica Descriptiva

Sahlre

4 de mayo de 2016

Estadistica Descriptiva

Esta semana aprenderemos sobre el uso de R para realizar el primer análisis estadístico que se hace sobre una base de datos: Estadística descriptiva. Nos concentraremos en la descripción de la estructura de los datos que almacena cada una de las variables. Para lograrla se utilizaran medidas de sintesis y de dispersión, apoyadas de diferentes gráficos. Se explicará uno de los paquetes estadísticos que permite realizar las mejores gráficas del mercado.

Para aplicar ejemplificar los conceptos se utilizará la siguiente base de datos ficticia de un grupo de 100 estudiantes de la Corporación Universitaria Americana a quienes se les pregunto sobre lo siguiente:

El siguiente código crea el data.frame que almacena la base de datos mencionada

set.seed(1) #No se preocupen si no entienden este código
Estado_civil <- c(rep("Divorciado", 21),
                  rep("Casado", 58),
                  rep("Soltero", 33),
                  rep("Viudo", 15),
                  rep("Union Libre", 23))
Estado_civil <- sample(Estado_civil, 100, replace = T)

Nivel_Educativo <- c(rep("Ninguno", 44),
                     rep("Primaria", 67),
                     rep("Secundaria", 43),
                     rep("Tecnica o Tecnologia", 36),
                     rep("Pregrado", 20),
                     rep("Posgrado", 9))
Nivel_Educativo <- sample(Nivel_Educativo, 100)

Salario <- (sample(rlnorm(10000, 0, 1), 100))*500000
Edad <- rnorm(100, 50, 6)
Promedio <- rnorm(100, 3.3, 0.5) 

bd <- data.frame(Edad = Edad,
                 Estado_civil = Estado_civil,
                 Nivel_Educativo = Nivel_Educativo,
                 Salario = Salario,
                 Notas = Promedio)

Primer Paso: Organizar la base de datos

Recuerde que existen diversos tipos de variables que se utilizan en investigación:

Antes de aplicar estadística descriptiva debes revisar como se subieron cada una de las variable a R, esto lo puedes lograr usando la función str()

str(bd)
## 'data.frame':    100 obs. of  5 variables:
##  $ Edad           : num  38.6 46.9 45.3 54.4 58.1 ...
##  $ Estado_civil   : Factor w/ 5 levels "Casado","Divorciado",..: 1 1 3 4 1 4 4 3 3 2 ...
##  $ Nivel_Educativo: Factor w/ 6 levels "Ninguno","Posgrado",..: 5 4 4 2 5 4 1 4 3 5 ...
##  $ Salario        : num  1782804 198402 207249 120315 223002 ...
##  $ Notas          : num  3.55 4.04 3.08 3.18 2.66 ...

Observa que las variables continuas fueron subidas como variables numericas y las variables cualitativas fueron subidas como factor, hasta aquí todo esta bien.

Sin embargo, recuerda que debes estar atento con las variables cualitativas ordinales ya que R no las reconoce de manera automática (Si lo se, R no es perfecto). Por ejemplo, la variable nivel educativo es cualitativa ordinal y seguramente R no la esta tratando como tal, entonces debemos ayudarle.

#No representa una variable cualitativa, ya que R organiza alfabeticamente
summary(bd$Nivel_Educativo)
##              Ninguno             Posgrado             Pregrado 
##                   21                    3                   10 
##             Primaria           Secundaria Tecnica o Tecnologia 
##                   35                   21                   10
levels(bd$Nivel_Educativo)
## [1] "Ninguno"              "Posgrado"             "Pregrado"            
## [4] "Primaria"             "Secundaria"           "Tecnica o Tecnologia"
#Para transformar
bd$Nivel_Educativo <- factor(bd$Nivel_Educativo,
                             levels = c("Ninguno", "Primaria", "Secundaria",
                                        "Tecnica o Tecnologia", "Pregrado",
                                        "Posgrado"),
                             ordered = T)

#Ahora todo es como queremos
summary(bd$Nivel_Educativo)
##              Ninguno             Primaria           Secundaria 
##                   21                   35                   21 
## Tecnica o Tecnologia             Pregrado             Posgrado 
##                   10                   10                    3
levels(bd$Nivel_Educativo)
## [1] "Ninguno"              "Primaria"             "Secundaria"          
## [4] "Tecnica o Tecnologia" "Pregrado"             "Posgrado"

Segundo Paso: Gráficos y Medidas estadísticas para cada variable, variable cuantitativa caso continuo

Las medidas de sintesis se extraen utilizando la función summary() o utilizando la función describe() del paquete psych

#Función summary() sobre la variable notas
summary(bd$Notas)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   2.148   2.954   3.381   3.331   3.728   4.736
#Primero debes instalar el paquete psych, este paso se hace una sola vez
#install.packages("psych")

#Segundo debes cargarlo al sistema, esto lo debes hacer cada vez que abres R studio
library(psych)
## Warning: package 'psych' was built under R version 3.2.5
#Luego de hacer los anteriores pasos puedes utilizar la funcion describe()
describe(bd$Notas)
##   vars   n mean   sd median trimmed  mad  min  max range skew kurtosis
## 1    1 100 3.33 0.51   3.38    3.33 0.59 2.15 4.74  2.59 0.03    -0.49
##     se
## 1 0.05

Los gráficos que se utilizan para las variables continuas son tres; en un reporte de investigación es conveniente utilizar uno, aquel que describa mejor los datos. Graficaremos utilizando el paquete ggplot2.

Histograma

#Instalando el paquete ggplot2
#Primero descargas el paquete usando la función install.packages()
#install.packages("ggplot2")

#Segundo subo o cargo el paquete al sistema usando la función library()
library(ggplot2)
## 
## Attaching package: 'ggplot2'
## The following objects are masked from 'package:psych':
## 
##     %+%, alpha
#Creando el histograma
ggplot(bd, aes(x=Notas)) +
  geom_histogram(fill = "green", colour = "black") +
  xlab("Promedio") + ylab("Frecuencia absoluta")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Gráfico de densidad de probabilidad

ggplot(bd, aes(x=Notas)) + 
  geom_line(stat = "density") + 
  expand_limits(y = 0)

Box plot - Diagrama de caja

boxplot(bd$Notas, 
        xlab = "Notas", 
        horizontal = T,
        col = "green")

Medidas de sintesis por grupo

Medidas de sintesis por grupo es un análisis que se usa en la mayoría de las investigaciones, R tiene maneras eficientes de obtenerlas sin necesidad de hacer selección de datos. Suponga que le piden averiguar ciertas medidas de sintesis por grupo (variable cualitativa o cuantitativa discreta), específicamente las notas por estado civil

#Utilizando la función describeBy() del paquete psych
describeBy(bd$Notas, bd$Estado_civil)
## group: Casado
##   vars  n mean   sd median trimmed  mad  min max range skew kurtosis   se
## 1    1 43  3.3 0.49   3.21    3.29 0.65 2.41 4.4  1.99 0.18    -1.07 0.07
## -------------------------------------------------------- 
## group: Divorciado
##   vars  n mean   sd median trimmed  mad  min  max range  skew kurtosis
## 1    1 10 3.14 0.59   3.28    3.14 0.42 2.15 4.12  1.97 -0.15    -1.19
##     se
## 1 0.19
## -------------------------------------------------------- 
## group: Soltero
##   vars  n mean   sd median trimmed  mad  min  max range  skew kurtosis
## 1    1 20 3.46 0.48   3.56    3.49 0.34 2.34 4.39  2.05 -0.53     0.01
##     se
## 1 0.11
## -------------------------------------------------------- 
## group: Union Libre
##   vars  n mean   sd median trimmed  mad  min  max range skew kurtosis   se
## 1    1 13 3.44 0.63   3.39    3.43 0.58 2.32 4.74  2.42 0.22    -0.58 0.17
## -------------------------------------------------------- 
## group: Viudo
##   vars  n mean   sd median trimmed  mad  min  max range skew kurtosis   se
## 1    1 14 3.27 0.47   3.12    3.27 0.57 2.53 4.01  1.48 0.16    -1.49 0.13
#Aplicando la función summary a cada uno de los valores asumidos
#por la variable Estado civil
tapply(bd$Notas, bd$Estado_civil, summary)
## $Casado
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   2.412   2.919   3.207   3.303   3.729   4.401 
## 
## $Divorciado
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   2.148   2.672   3.285   3.140   3.491   4.120 
## 
## $Soltero
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   2.344   3.179   3.556   3.459   3.726   4.392 
## 
## $`Union Libre`
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   2.319   3.092   3.390   3.441   3.837   4.736 
## 
## $Viudo
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   2.530   2.943   3.120   3.268   3.638   4.015

Las medidas de sintesis por grupo también se pueden complementar mediante gráficos.

#Histograma
ggplot(bd, aes(x=Notas)) + geom_histogram(fill="white", colour="black") +
facet_grid(Estado_civil ~ .)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

#Función de densidad
ggplot(bd, aes(x=Notas, fill=Estado_civil)) + 
  geom_density(alpha=.2)

#Boxplot o Diagrama de caja
ggplot(bd, aes(x=Estado_civil, y=Notas, fill = Estado_civil)) + geom_boxplot()

Segundo Paso: Gráficos y Medidas estadísticas para cada variable, variable cuanlitativa

La medida de sintesis se extrae de la función summary()

#Frecuencia absoluta
summary(bd$Nivel_Educativo)
##              Ninguno             Primaria           Secundaria 
##                   21                   35                   21 
## Tecnica o Tecnologia             Pregrado             Posgrado 
##                   10                   10                    3
#Frecuencia relativa
summary(bd$Nivel_Educativo) / length(bd$Nivel_Educativo)
##              Ninguno             Primaria           Secundaria 
##                 0.21                 0.35                 0.21 
## Tecnica o Tecnologia             Pregrado             Posgrado 
##                 0.10                 0.10                 0.03

Sólo se utiliza un gráfico para las variables cualitativas: el gráfico de barras

ggplot(bd, aes(x=Nivel_Educativo, fill = Nivel_Educativo)) + geom_bar()

#Frecuencia absoluta
summary(bd$Estado_civil)
##      Casado  Divorciado     Soltero Union Libre       Viudo 
##          43          10          20          13          14
#Frecuencia relativa
summary(bd$Estado_civil) / length(bd$Estado_civil)
##      Casado  Divorciado     Soltero Union Libre       Viudo 
##        0.43        0.10        0.20        0.13        0.14

Sólo se utiliza un gráfico para las variables cualitativas: el gráfico de barras

ggplot(bd, aes(x=Estado_civil, fill = Estado_civil)) + geom_bar()