Francisco García García (2014-12-08)
En cualquier análisis estadístico siempre debemos realizar un descriptivo de la muestra con un doble objetivo:
Comprobar la calidad de los datos
Conocer detalladamente los datos. Esto nos ayudará a decidir la estrategia de análisis más adecuada.
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)
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
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
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)
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:
main: Título principal del gráfico
xlab: Etiqueta para el eje X
ylab: Etiqueta para el eje Y
col: vector de colores
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")
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")
Modificamos la escala del eje Y
boxplot(edad, col = "red", main = "Evaluación de riesgos laborales", xlab = "Edad",
ylimit = c(0,45))
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))
Seleccionamos colores que nos gusten más para cada sector del gráfico:
pie(table(contrato), col = c("red", "blue", "pink", "green", "grey", "yellow"))
Además incluimos un título
pie(table(contrato), col = c("red", "blue", "pink", "green", "grey", "yellow"),
main = "Tipos de contratos")
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))
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")
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")
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.
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)
¿Qué relación hay entre la edad y la jornada? Lo vemos gráficamente:
boxplot(edad ~ jornada)
¿Qué relación hay entre la edad y la carfisi?
boxplot(edad ~ carfisi)
¿Qué relación hay entre el peso y la talla?
plot(peso, talla)
representamos cada sujeto con triángulos azules
plot(peso, talla, pch = 2, col = "blue", main = "peso vs. talla")
un poco más grandes!
plot(peso, talla, pch = 2, col = "blue", main = "peso vs. talla", cex=2)
¿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
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?
En la base de datos exposiciones se incluye información sobre la exposición a determinados riesgos laborales en un grupo de trabajadores.
David S. Moore. Estadística aplicada básica. Editorial Antoni Bosch. Manual de Estadística Básica.
Quick-R Web con recursos para trabajar con R.
r-tutor An R Introduction to Statistics.