Estadística Descriptiva con R

Francisco García García (2014-12-08)


0. Introducción

1. ¿Cómo leemos los datos en R?

2. Descripción numérica de una variable

3. Descripción gráfica de una variable

4. Descripción de relaciones entre parejas de variables

5. Ejercicios complementarios

6. Bibliografía y enlaces de interés




0. Introducción

En cualquier análisis estadístico siempre debemos realizar un descriptivo de la muestra con un doble objetivo:

  1. Comprobar la calidad de los datos

  2. Conocer detalladamente los datos. Esto nos ayudará a decidir la estrategia de análisis más adecuada.

1. ¿Cómo leemos los datos en R?

Existen varias funciones de lectura de datos en R según el formato del archivo. Cuando tenemos un fichero en excel, es aconsejable guardarlo previamente en formato csv y posteriormente lo leemos desde R con la función read.csv:

datos <- read.csv("riesgos.csv", header = T, sep = "\t")

Para obtener información detallada de esta función de lectura:

?read.csv

Algunas funciones para explorar los datos:

head(datos)
#>   id contrato  jornada turno carfisi carpsiqui expquímica edad peso talla
#> 1  2        3 completa     1      no        no         no   33   74   155
#> 2  3        1 completa     1      no        no         no   37   74   170
#> 3  6        5 completa     1      sí        no         no   35   67   170
#> 4  7        1 completa     1      sí        no         no   30   57   164
#> 5  8        3 completa     1      sí        no         sí   30   69   160
#> 6 10        2 completa     1      no        sí         no   32   56   160
tail(datos)
#>    id contrato jornada turno carfisi carpsiqui expquímica edad peso talla
#> 86 73        5 parcial     1      no        no         no   32   65   159
#> 87 75        1 parcial     1      no        no         no   33   87   185
#> 88 76        1 parcial     1      sí        no         no   30   76   178
#> 89 80        4 parcial     1      no        no         no   29   65   153
#> 90 82        1 parcial     1      no        no         no   35   78   190
#> 91 86        4 parcial     4      no        no         no   28   65   167
colnames(datos)
#>  [1] "id"         "contrato"   "jornada"    "turno"      "carfisi"   
#>  [6] "carpsiqui"  "expquímica" "edad"       "peso"       "talla"
dim(datos)
#> [1] 91 10
summary(datos)
#>        id          contrato         jornada       turno       carfisi
#>  Min.   : 1.0   Min.   :1.000   completa:67   Min.   :1.000   no:57  
#>  1st Qu.:23.5   1st Qu.:1.000   parcial :24   1st Qu.:1.000   sí:34  
#>  Median :46.0   Median :1.000                 Median :1.000          
#>  Mean   :46.0   Mean   :1.857                 Mean   :1.209          
#>  3rd Qu.:68.5   3rd Qu.:3.000                 3rd Qu.:1.000          
#>  Max.   :91.0   Max.   :5.000                 Max.   :4.000          
#>                                                                      
#>  carpsiqui expquímica      edad            peso           talla      
#>  no:46     no:86      Min.   :23.00   Min.   :50.00   Min.   :150.0  
#>  sí:45     sí: 5      1st Qu.:29.00   1st Qu.:62.00   1st Qu.:160.0  
#>                       Median :31.00   Median :69.00   Median :165.0  
#>                       Mean   :31.45   Mean   :70.34   Mean   :166.3  
#>                       3rd Qu.:34.00   3rd Qu.:76.00   3rd Qu.:171.0  
#>                       Max.   :39.00   Max.   :98.00   Max.   :190.0  
#>                                       NA's   :2
attach(datos)



2. Descripción numérica de una variable

2.1. Variables cuantitativas:

summary(edad)
#>    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
#>   23.00   29.00   31.00   31.45   34.00   39.00
sd(edad)
#> [1] 3.442427
sum(edad)
#> [1] 2862
is.na(edad)
#>  [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#> [12] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#> [23] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#> [34] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#> [45] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#> [56] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#> [67] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#> [78] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#> [89] FALSE FALSE FALSE

También es posible pedir un descriptivo de varias variables cuantitativas al mismo tiempo:

summary(datos[, c("edad","peso","talla")])
#>       edad            peso           talla      
#>  Min.   :23.00   Min.   :50.00   Min.   :150.0  
#>  1st Qu.:29.00   1st Qu.:62.00   1st Qu.:160.0  
#>  Median :31.00   Median :69.00   Median :165.0  
#>  Mean   :31.45   Mean   :70.34   Mean   :166.3  
#>  3rd Qu.:34.00   3rd Qu.:76.00   3rd Qu.:171.0  
#>  Max.   :39.00   Max.   :98.00   Max.   :190.0  
#>                  NA's   :2

2.2. Variables categóricas:

Obtenemos tablas de frecuencias absolutas con el comando table:

table(jornada)
#> jornada
#> completa  parcial 
#>       67       24

También es posible obtener tablas de frecuencias relativas combinando los comandos table con margin.table:

table(jornada)   / margin.table(table(jornada))
#> jornada
#>  completa   parcial 
#> 0.7362637 0.2637363

2.3. Ejercicios:

Tenemos una base de datos llamada estrés que incluye información sobre 90 trabajadores acerca de su nivel de estrés y diversas variables relacionadas con el puesto de trabajo.

A. Lee los datos en R utilizando la función read.csv.

B. ¿Qué variables contiene esta base de datos? (utiliza la función head)

C. Clasifica las variables según sean cuantitativas o categóricas. A continuación descríbelas utilizando los procedimientos que hemos visto anteriormente: tablas de frecuencias y descriptivos (en función del tipo de variable)



3. Descripción gráfica de una variable

Introducción a los gráficos en R:

Los comandos de R son funciones que incluyen un conjunto de argumentos separados por comas y todos ellos entre paréntesis:

# boxplot(datos, main = "primer gráfico", xlab = "nivel de colesterol")
# hist(datos, main = "primer gráfico", xlab = "nivel de colesterol") 

Argumentos generales que utilizaremos en los gráficos:

3.1. Variables cuantitativas:

Hay varias opciones: box-plots, histogramas,… Con un interrogante delante del nombre de la función obtenemos ayuda sobre su uso: ?boxplot

Es posible incluir o modificar elementos en el gráfico:

Incluimos color en la caja

boxplot(edad, col = "red")

plot of chunk unnamed-chunk-10

Añadimos un título principal y subtítulo para el eje X

boxplot(edad, col = "red", main = "Evaluación de riesgos laborales", xlab = "Edad") 

plot of chunk unnamed-chunk-11

Modificamos la escala del eje Y

boxplot(edad, col = "red", main = "Evaluación de riesgos laborales", xlab = "Edad",
        ylimit = c(0,45)) 

plot of chunk unnamed-chunk-12

3.2. Variables categóricas:

Comandos en R:

Los diagramas de barras son preferibles a los diagramas de sectores.

3.2.1 Gráficos circulares o de sectores: La variable contrato indica el tipo de contrato de cada trabajador: 1, 2, 3, 4, 5, 6

Preparamos una tabla de frecuencias

table(contrato)
#> contrato
#>  1  2  3  4  5 
#> 59  6 12  8  6

Generamos el diagrama de sectores

pie(table(contrato)) 

plot of chunk unnamed-chunk-14

Seleccionamos colores que nos gusten más para cada sector del gráfico:

pie(table(contrato), col = c("red", "blue", "pink", "green", "grey", "yellow"))  

plot of chunk unnamed-chunk-15

Además incluimos un título

pie(table(contrato),  col = c("red", "blue", "pink", "green", "grey", "yellow"),
    main = "Tipos de contratos") 

plot of chunk unnamed-chunk-16

3.2.2. Gráficos de barras: Este tipo de gráficos son útiles para representar variables categóricas o variables cuantitativas discretas

La variable contrato indica el tipo de contrato de cada trabajador: 1, 2, 3, 4, 5, 6

Preparamos una tabla de frecuencias

table(contrato)
#> contrato
#>  1  2  3  4  5 
#> 59  6 12  8  6

Generamos el diagrama de barras

barplot(table(contrato)) 

plot of chunk unnamed-chunk-18

Incluimos título del gráfico y títulos para los ejes X,Y.

barplot(table(contrato), xlab = "contratos", ylab = "frecuencias",
        main = "Evaluación de riesgos")

plot of chunk unnamed-chunk-19

Cambiamos el modo de visualización y añadimos color a las barras

barplot(table(contrato), horiz = TRUE, 
        ylab = "contratos", xlab = "frecuencias", 
        main = "Evaluación de riesgos", 
        col = "green")  

plot of chunk unnamed-chunk-20

3.3. Ejercicios:

Continuamos con la base de datos llamada estrés:

A. Describe gráficamente la variable nivel de estrés utilizando un diagrama de barras.

B. Describe gráficamente la variable sueldo utilizando un diagrama de cajas (boxplot).

C. Describe gráficamente la variable jornada utilizando un diagrama pastel o de sectores.



4. Descripción de relaciones entre parejas de variables

4.1. Varias variables categóricas

Obtenemos tablas de contingencia para dos variables categóricas utilizando comando table:

table(jornada, carfisi)
#>           carfisi
#> jornada    no sí
#>   completa 38 29
#>   parcial  19  5

También es posible estratificar la información anterior por una tercera variable:

table(jornada, carfisi, carpsiqui)
#> , , carpsiqui = no
#> 
#>           carfisi
#> jornada    no sí
#>   completa 14 14
#>   parcial  14  4
#> 
#> , , carpsiqui = sí
#> 
#>           carfisi
#> jornada    no sí
#>   completa 24 15
#>   parcial   5  1

La relación entre jornada y carga física se puede representar gráficamente:

plot(jornada, carfisi)

plot of chunk unnamed-chunk-23

4.2. Variable categórica vs. variable cuantitativa

¿Qué relación hay entre la edad y la jornada? Lo vemos gráficamente:

boxplot(edad ~ jornada) 

plot of chunk unnamed-chunk-24

¿Qué relación hay entre la edad y la carfisi?

boxplot(edad ~ carfisi) 

plot of chunk unnamed-chunk-25

4.3. Variable cuantitativa vs. variable cuantitativa

¿Qué relación hay entre el peso y la talla?

plot(peso, talla)

plot of chunk unnamed-chunk-26

representamos cada sujeto con triángulos azules

plot(peso, talla, pch = 2, col = "blue", main = "peso vs. talla")     

plot of chunk unnamed-chunk-27

un poco más grandes!

plot(peso, talla, pch = 2, col = "blue", main = "peso vs. talla", cex=2)    

plot of chunk unnamed-chunk-28

¿Se podría cuantificar la relación entre estas dos variables cuantitativas? Sí, mediante un coeficiente de correlación:

cor.test(peso,talla)
#> 
#>  Pearson's product-moment correlation
#> 
#> data:  peso and talla
#> t = 5.3627, df = 87, p-value = 6.67e-07
#> alternative hypothesis: true correlation is not equal to 0
#> 95 percent confidence interval:
#>  0.3237866 0.6402328
#> sample estimates:
#>       cor 
#> 0.4984336

4.4. Ejercicios:

Continuamos con la base de datos llamada estrés:

A. ¿Qué relación hay entre las variables sueldo y edad? Primero utiliza un gráfico que nos informe de la relación entre ambas variables y luego cuantifícala mediante un coeficiente de correlación.

B. Salario vs. género. ¿Quién cobra más en promedio, los hombres o las mujeres? Representa gráficamente ambas variables para describir la distribución de los salarios en cada uno de estos dos grupos.

C. Exposición a riesgos vs. género. ¿La exposición de riesgos laborales (carga física, psíquica y ruido) es igual para hombres que para mujeres?

D. Estrés vs. género. ¿El nivel de estrés es igual en hombres que en mujeres?



5. Ejercicios complementarios

En la base de datos exposiciones se incluye información sobre la exposición a determinados riesgos laborales en un grupo de trabajadores.



6. Bibliografía y enlaces interesantes: