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(vcd)
library(DT)
library(DescTools)
En caso de no tenerlas, instalamos las librerías copiando y pegando el siguiente codigo en la consola.
install.packages("tidyverse")
install.packages("vcd")
install.packages("DescTools")
install.packages("DT")
Luego podemos comenzar con el análisis de datos. Para ello, crear un nuevo script con el nombre de analisisBiva. Copiar y ejecutar cada uno de los códigos en R detallados más adelante.
Leemos los datos desde SPSS con la librería haven y utilizando el enlace hacia los datos:
library(haven)
## Registered S3 methods overwritten by 'tibble':
## method from
## format.tbl pillar
## print.tbl pillar
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.
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 C2P7: Tipo de contrato.
head(datossalud$C2P7)
## <labelled<double>[6]>: ¿QUÉ TIPO DE CONTRATO TIENE CON ESTE ESTABLECIMIENTO DE SALUD?
## [1] 5 5 2 2 5 5
##
## Labels:
## value label
## 1 Locaciòn de servicios (Honorarios profesionales)
## 2 Contrato Administrativo de Servicios (CAS)
## 3 Contrato a plazo fijo (sujeto a modalidad)
## 4 Nombrado, permanente
## 5 Plazo indeterminado o indefinido (D.S.728)
## 6 Otro
Observamos el dataset solo con las variables de interés:
Seleccionamos los datos de los médicos con el siguiente código:
datostemp <- datossalud[,c("C2P1","C2P4","C2P7")]
names(datostemp) = c("profesion","sexo","contrato")
datos <- datostemp[datostemp$profesion==1,]
Y finalmente observamos los datos:
head(datos)
## # A tibble: 6 x 3
## profesion sexo contrato
## <dbl+lbl> <dbl+lbl> <dbl+lbl>
## 1 1 [Médico] 1 [Hombre] 5 [Plazo indeterminado o indefinido (D.S.728)]
## 2 1 [Médico] 1 [Hombre] 5 [Plazo indeterminado o indefinido (D.S.728)]
## 3 1 [Médico] 2 [Mujer] 2 [Contrato Administrativo de Servicios (CAS)]
## 4 1 [Médico] 1 [Hombre] 5 [Plazo indeterminado o indefinido (D.S.728)]
## 5 1 [Médico] 1 [Hombre] 3 [Contrato a plazo fijo (sujeto a modalidad)]
## 6 1 [Médico] 1 [Hombre] 5 [Plazo indeterminado o indefinido (D.S.728)]
Ahora, realizamos el análisis de cada variable: C2P4(Sexo) y C2P7(Contrato). Observamos la tabla de frecuencias, proporciones, y gráfico de barras para cada variable:
#contrato
head(datos$sexo)
## <labelled<double>[6]>: SEXO
## [1] 1 1 2 1 1 1
##
## Labels:
## value label
## 1 Hombre
## 2 Mujer
# tabla de frecuencias
tabla_sexo = table(datos$sexo)
tabla_sexo
##
## 1 2
## 1657 562
# tabla de frecuencias con proporciones
prop.table(tabla_sexo)*100
##
## 1 2
## 74.67328 25.32672
De esta tabla, se observa que hay 74.7% de médicos y solo 25.3% de médicas. Podemos añadir, finalmente, un gráfico, para observar estas diferencias rápidamente.
barplot(tabla_sexo,
main="Sexo")
# muestra de datos
head(datos$contrato)
## <labelled<double>[6]>: ¿QUÉ TIPO DE CONTRATO TIENE CON ESTE ESTABLECIMIENTO DE SALUD?
## [1] 5 5 2 5 3 5
##
## Labels:
## value label
## 1 Locaciòn de servicios (Honorarios profesionales)
## 2 Contrato Administrativo de Servicios (CAS)
## 3 Contrato a plazo fijo (sujeto a modalidad)
## 4 Nombrado, permanente
## 5 Plazo indeterminado o indefinido (D.S.728)
## 6 Otro
# Tabla de frecuencias
tabla_contrato = table(datos$contrato)
tabla_contrato
##
## 1 2 3 4 5 6
## 158 279 138 881 707 56
# tabla de frecuencias con proporciones.
prop.table(tabla_contrato)*100
##
## 1 2 3 4 5 6
## 7.120324 12.573231 6.219018 39.702569 31.861199 2.523659
# gráfico de barras
barplot(tabla_contrato,
main="Contrato")
forma_grafico <- par(mfrow=c(1,2))
barplot(100*prop.table(tabla_sexo),
ylim=c(0,100),
names.arg = c("Hombre","Mujer"),
ylab="Porcentaje")
barplot(100*prop.table(tabla_contrato),
ylim=c(0,100),col=1:6,
ylab="Porcentaje",xaxt="n")
legend(1,100,legend=c("Recibos","CAS","Plazo fijo","Nombrado","Plazo Indeterminado","Otros"),
col=1:6,bty="n",pch=15)
¿Qué observo en estos resultados? (Obtener conclusiones a partir de las tablas de proporciones)
Ahora, realizaremos un análisis bivariado utilizando tablas de contingencia:
tabla_conti <- table(datos$sexo,datos$contrato)
tabla_conti
##
## 1 2 3 4 5 6
## 1 128 172 85 684 547 41
## 2 30 107 53 197 160 15
Interpretación:
Ejercicio: Interpretar para las demás categorías de contrato.
Ahora, utilizaremos la función prop.table para obtener la tabla en proporciones; y adicionamos el parámetro margin a la función.
margin=1
significa que los porcentajes estan calculados sobre la base de los totales por filas. (Los porcentajes por cada fila suman 100%)margin=2
significa que los porcentajes estan calculados sobre la base de los totales por columnas. (Los porcentajes por cada columna suman 100%)tabla1 <- prop.table(tabla_conti, margin=1) #
round(tabla1,2)
##
## 1 2 3 4 5 6
## 1 0.08 0.10 0.05 0.41 0.33 0.02
## 2 0.05 0.19 0.09 0.35 0.28 0.03
Interpretación:
Ejercicio: Interpretar resultados para el porcentaje de contratos de plazo indeterminado entre hombres y mujeres.
tabla2 <- prop.table(tabla_conti, margin=2) #
round(tabla2,2)
##
## 1 2 3 4 5 6
## 1 0.81 0.62 0.62 0.78 0.77 0.73
## 2 0.19 0.38 0.38 0.22 0.23 0.27
Para la interpretación comparamos la distribución condicional a cada tipo de contrato con la distribución marginal del sexo.
Interpretación:
En general, se observo que los médicos representan el 74.7% del total y las médicas solo el 25.3%. En algunos tipos de contratos, se observan diferencias con respecto a esta distribución, especialmente en CAS (2), Contrato a plazo fijo (3), y Locación de servicios(1)
Otra forma de analizar y mostrar la relación entre las variables es con gráficos:
barplot(prop.table(tabla_conti,1),
beside = T,
ylim = c(0,1),
col=c("darkblue","skyblue"),
ylab = "Proporcion")
legend( 9, 0.9,
legend=c("Hombre","Mujer"),
col=c("darkblue","skyblue"),
bty="n",
pch=15)
legend(2,1,
legend=c("1: Recibos",
"2: CAS",
"3: Plazo fijo",
"4: Nombrado",
"5: Plazo Indeterminado",
"6: Otros"),
bty="n")
O este otro gráfico de barras acumulado:
library(vcd)
## Loading required package: grid
mosaicplot(table(datos$contrato,datos$sexo),
main="",
color = c("darkblue","skyblue"),
xlab = "Contratos", # label for x-axis
ylab = "Sexo" # label for y-axis
)
#abline(h=mean(datos$sexo==2))
abline(h=0.253, col=2)
¿Qué conclusiones obtiene a partir de este análisis? ¿Hay relación entre el sexo y el tipo de contrato?
Evaluamos si existe o no asociación entre el sexo y los tipos de contrato de manera objetiva utilizando una prueba de hipótesis.
Definimos la significancia: \(5\)%
Elegimos la prueba de hipótesis: Chi-cuadrado para la independencia.
Calculamos el estadístico de prueba y p-valor en R:
chisq.test(datos$sexo, datos$contrato)
##
## Pearson's Chi-squared test
##
## data: datos$sexo and datos$contrato
## X-squared = 47.742, df = 5, p-value = 4.009e-09
¿A qué conclusión llegamos con esta prueba?
Ahora, continuamos analizando la relación entre las variables sexo y tipos de contrato. Esta vez analizamos el grado de asociación entre las variables utilizando para ello dos medidas de asociación muy conocidas.
Para los calculos en R, necesitaremos la librería DescTools.
library(DescTools)
ContCoef(datos$sexo, datos$contrato)
## [1] 0.1451281
CramerV(datos$sexo, datos$contrato)
## [1] 0.146681
¿Qué grado de relación existe entre estas dos variables?
Recordar lo siguiente :
Crear un nuevo script, copiar el código y realizar las modificaciones correspondientes para realizar un análisis de la asociación entre el sexo y el tipo de contrato esta vez para los enfermeros.