Nota: La versión actualizada de este documento se encuentra en este enlace
Antes de iniciar, nos aseguramos de haber instalado las librerías necesarias.
library(haven)
library(summarytools)
En caso de no tenerlas, instalamos las librerías copiando y pegando el siguiente codigo en la consola.
install.packages("tidyverse")
install.packages("summarytools")
Luego podemos comenzar con el análisis de datos. Para ello, crear un nuevo script y guardarlo con el nombre de analisisBivar. A continuación, copiar y ejecutar cada uno de los códigos detallados más adelante.
Leemos los datos desde SPSS con la librería haven y utilizando el enlace hacia los datos:
library(haven)
enlace<-"http://portal.susalud.gob.pe/wp-content/uploads/archivo/base-de-datos/2015/CUESTIONARIO%2002%20-%20CAPITULOS.sav"
datossalud = read_sav(enlace)
Exploramos variables que interesan en el análisis. La función attr muestra detalles de las variables.
Observaremos la variable C2P1: profesión
head(datossalud$C2P1)
## <labelled<double>[6]>: ¿CUÁL ES SU PROFESIÓN?
## [1] 2 2 2 2 2 1
##
## Labels:
## value label
## 1 Médico
## 2 Enfermero/a
Variable C2P4: sexo.
head(datossalud$C2P4)
## <labelled<double>[6]>: SEXO
## [1] 2 2 2 2 2 1
##
## Labels:
## value label
## 1 Hombre
## 2 Mujer
Variable C2P2EDAD: Tipo de contrato.
head(datossalud$C2P2EDAD)
## [1] 40 42 27 31 38 67
Seleccionamos el dataset solo con las variables de interés:
Seleccionamos los datos de los médicos y además solo las variables de interés con el siguiente código:
datostemp <- datossalud[,c("C2P1","C2P4","C2P2EDAD")]
names(datostemp) = c("profesion","sexo","edad")
datos <- datostemp[datostemp$profesion==1,]
Y finalmente observamos los datos:
head(datos)
| profesion | sexo | edad |
|---|---|---|
| 1 | 1 | 67 |
| 1 | 1 | 54 |
| 1 | 2 | 35 |
| 1 | 1 | 43 |
| 1 | 1 | 38 |
| 1 | 1 | 46 |
Realizamos el análisis individual de las variables de interés: Sexo y Edad.
Para la variable sexo realizamos una tabla de frecuencias y observamos los resultados.
tabla_sexo = table(datos$sexo)
tabla_sexo
##
## 1 2
## 1657 562
prop.table(tabla_sexo)
##
## 1 2
## 0.7467328 0.2532672
summarytools::freq(as.factor(datos$sexo))
## Frequencies
##
## Freq % Valid % Valid Cum. % Total % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
## 1 1657 74.67 74.67 74.67 74.67
## 2 562 25.33 100.00 25.33 100.00
## <NA> 0 0.00 100.00
## Total 2219 100.00 100.00 100.00 100.00
Interpretación:
La variable cuantitativa edad la analizamos utilizando medidas de posición central, dispersión y además un gráfico (histograma o gráficos de cajas).
summary(datos$edad)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 24.00 37.00 46.00 46.45 56.00 88.00
sd(datos$edad)
## [1] 11.38578
# Coeficiente de variación.
cv = sd(datos$edad)/mean(datos$edad)
Fisher.asi = function(x) mean((x - mean(x,na.rm=T))^3,na.rm=T)/sd(x,na.rm=T)^3
Fisher.asi(datos$edad)
## [1] 0.143489
Esta vez, utilizaremos un histograma para observar la distribución de la edad de los médicos.
library(summarytools)
histo<- hist(datos$edad,
main="Histograma de las edades",
color='yellow')
cortes <- histo$breaks # Cortes para la variable a partir del histograma
var_cat <- cut(datos$edad,cortes) # categorizada
freq(var_cat) # Tabla de frecuencias
## Frequencies
## var_cat
## Type: Factor
##
## Freq % Valid % Valid Cum. % Total % Total Cum.
## ------------- ------ --------- -------------- --------- --------------
## (20,25] 2 0.090 0.090 0.090 0.090
## (25,30] 173 7.796 7.886 7.796 7.886
## (30,35] 309 13.925 21.812 13.925 21.812
## (35,40] 300 13.520 35.331 13.520 35.331
## (40,45] 291 13.114 48.445 13.114 48.445
## (45,50] 291 13.114 61.559 13.114 61.559
## (50,55] 260 11.717 73.276 11.717 73.276
## (55,60] 301 13.565 86.841 13.565 86.841
## (60,65] 213 9.599 96.440 9.599 96.440
## (65,70] 66 2.974 99.414 2.974 99.414
## (70,75] 7 0.315 99.730 0.315 99.730
## (75,80] 2 0.090 99.820 0.090 99.820
## (80,85] 3 0.135 99.955 0.135 99.955
## (85,90] 1 0.045 100.000 0.045 100.000
## <NA> 0 0.000 100.000
## Total 2219 100.000 100.000 100.000 100.000
Comenzamos observando las diferencias entre los dos grupos: hombres y mujeres. Los gráficos más utilizados son gráficos de cajas (boxplots) o histogramas para observar estas diferencias.
config_grafico <- par(mfrow=c(1,2))
hist(datos$edad[datos$sexo==1],
prob=T,xlab="Edad (años)",ylab="Densidad",
main="Hombres",xlim=c(20,90),ylim=c(0,0.04))
hist(datos$edad[datos$sexo==2],
prob=T,xlab="Edad (años)",ylab="Densidad",
main="Mujeres",xlim=c(20,90))
boxplot(edad~sexo,
datos,
xlab="Sexo",
ylab="Edad (anos)",
xaxt="n")
axis(1, at=1:2,
labels=c("Hombre","Mujer"))
¿Qué observo en estos resultados? ¿Es sencillo comparar la tendencia central, dispersión y asimetría a partir de este gráfico? ¿Podemos responder las siguientes preguntas?
Para una comparación cuantitativa adicional a los gráficos, veremos los resultados de las medidas de resumen por cada grupo:
by(datos$edad,datos$sexo,summary)
## datos$sexo: 1
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 24.00 38.00 48.00 47.77 57.00 88.00
## ------------------------------------------------------------
## datos$sexo: 2
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 25.00 34.00 40.00 42.56 51.00 68.00
by(datos$edad,datos$sexo,IQR)
## datos$sexo: 1
## [1] 19
## ------------------------------------------------------------
## datos$sexo: 2
## [1] 17
by(datos$edad,datos$sexo,Fisher.asi)
## datos$sexo: 1
## [1] 0.05708801
## ------------------------------------------------------------
## datos$sexo: 2
## [1] 0.4042966
Interpretación:
Las médicas son, en general, más jóvenes que los médicos La mediana de las edades para las mujeres (\(Me_{M}=\) 40) es menor a la de los médicos (\(Me_{H}=\) 48).
Se observa una ligera diferencia en la dispersión de las edades de los hombres(\(RIC_{M}=\) 19) y médicas (\(RIC_{M}=\) 17).
Hay mayor asimetría con cola a la derecha para las edades de las médicas ((\(CA_{F_M}=\) 0.06) que para los médicos(\(CA_{F_H}=\) 0.4).
Conclusión: se evidencia asociación entre el sexo y la edad de los médicos.
Otros gráficos que se pueden observar para realizar esta comparación son los siguientes:
plot(density(datos$edad[datos$sexo==1]),
xlab="Edad",ylab="Densidad",main="",ylim=c(0,0.05))
lines(density(datos$edad[datos$sexo==2]),col=2)
legend(60,0.05,legend=c("Hombres","Mujeres"),
col=1:2,lty=1,bty="n")
plot(ecdf(datos$edad[datos$sexo==1]),
main="")
lines(ecdf(datos$edad[datos$sexo==2]),
col=2)
Evaluamos, ahora, con una prueba estadística, si existe o no asociación entre el sexo y la edad mediante una prueba de hipótesis.
La prueba que utilizaremos se llama prueba t o t.test.
Las hipótesis que estamos utilizando para esta prueba son las siguientes:
t.test(edad~sexo,datos)
##
## Welch Two Sample t-test
##
## data: edad by sexo
## t = 9.7861, df = 1012.4, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## 4.158236 6.244127
## sample estimates:
## mean in group 1 mean in group 2
## 47.76524 42.56406
Observamos el p-valor y concluimos:
Crear un nuevo script y modificar los códigos para realizar un análisis de la asociación entre el sexo y las edades de los enfermeros(as). Escoger un gráfico para la comparación de los grupos e interpretar las médidas de resumen comparando por sexo.