rm(list=ls()) #Limpiar entorno de trabajo
setwd("/home/daniel/Dropbox/U CENTRAL/02 2020/01 Primer semestre 2020/Analisis de datos cuantitativos I/Clases/12") #Escribir el directorio en que va a trabajar
#Sólo si no has instalado antes los paquetes requeridos:
# install.packages("foreign")
# install.packages("dplyr")
# install.packages("car")
library(foreign) #Paquete para importar datos
library(dplyr) #Paquete de procesamiento de bases de datos
library(car) #Paquete de análisis de datos

Abrir base de datos CEP 84 (Diciembre 2019).

CEP84 <- read.spss("/home/daniel/Dropbox/U CENTRAL/02 2020/01 Primer semestre 2020/Analisis de datos cuantitativos I/Bases de datos/CEP84/Encuesta CEP 84 Dic 2019 v1.sav", to.data.frame = TRUE) 
#ajustar ruta a tu pc

Prueba Z (Z-test) para dos proporciones

La prueba Z para dos proporciones permite determinar si la proporción de elementos que tienen un atributo en dos poblaciones es la misma. Sus supuestos de aplicación son:

La prueba Z para dos proporciones permite evaluar las siguientes hipótesis nulas:

Veamos un ejemplo.

Necesitamos saber si la proporción de personas que aprueban una nueva Constitución varía según sexo. Por lo tanto,

Se decide trabajar con un nivel de confianza del 95% y un nivel de significación de \(\alpha = 0.05\).

# Primero, preparamos los datos para el análisis.

#Nueva constitución
CEP84$ESP_45 <- na_if(CEP84$ESP_45,"88.- No sabe") #No sabe como NA
CEP84$ESP_45 <- na_if(CEP84$ESP_45,"99.- No contesta") #No contesta como NA
CEP84$ESP_45 <- droplevels(CEP84$ESP_45) # Borrar niveles no usados
levels(CEP84$ESP_45) #Ver niveles
## [1] "1.- Aprueba" "2.- Rechaza"
levels(CEP84$ESP_45) <- c("Aprueba", "Rechaza") #Ordenar un poco los niveles

#Sexo
levels(CEP84$DS_P1) #Ver niveles de variable sexo
## [1] "1. - HOMBRE" "2. - MUJER"
levels(CEP84$DS_P1) <- c("Hombre", "Mujer") #Mejorar el formato de los niveles del factor

Comprobamos supuestos de aplicación.

table(CEP84$ESP_45, CEP84$DS_P1)
##          
##           Hombre Mujer
##   Aprueba    412   559
##   Rechaza     78   110

Dado que el diseño de muestra de la Encuesta CEP84 es de tipo probabilístico se cumple que la muestra sea un subconjunto aleatorio de la población. Asimismo, los grupos conformados por hombres y mujeres conforman grupos independientes o no pareados. Y por último, se comprueba que para hombres y mujeres, en cada nivel de las actitudes hacia una nueva Constitución hay más de 10 casos.

ztest <- prop.test(x = c(412, 559), n = c(490, 669), conf.level = 0.95, 
          alternative = "two.sided") 
          #Si es contraste unilateral en alternative escribimos "less" o "greater" segun corresponda

sqrt(ztest$statistic) #Estadistico Z
## X-squared 
## 0.1584438
ztest$p.value #Valor p
## [1] 0.8741071
ztest$parameter #Grados de libertad
## df 
##  1

Con un 95% de confianza, existe evidencia suficiente para no rechazar la hipótesis nula de igualdad de proporciones (\(Z = 0.16, \; df = 1, \; p > 0.05\)) de “apruebo” entre hombres y mujeres. Por lo tanto, es posible sostener que no existen diferencias significativas en la proporción de personas que aprueban una nueva Constitución, según sexo. El 84.08% de los hombres y el 83.56% de las mujeres contestaron que aprueban una nueva Constitución.

Prueba t (t-test) para medias de dos grupos independientes

La prueba t para medias de dos grupos indendientes permite determinar si la media en dos poblaciones es la misma. Sus supuestos de aplicación son:

La prueba t para medias de dos grupos indendientes permite evaluar las siguientes hipótesis nulas:

Veamos un ejemplo.

Necesitamos saber cómo se asocian las creencias respecto del sueldo que debiera ganar un obrero no calificado de una fábrica (sueldo ético obrero) y las actitudes respecto de una nueva Constitución (aprueba o rechaza). Por lo tanto, definimos las siguientes hipótesis a contrastar:

Se decide trabajar con un nivel de confianza del 95% y un nivel de significación de \(\alpha = 0.05\).

# Primero, preparamos los datos para el análisis.

#Sueldo ético obreros
class(CEP84$ESP_15C1) #Qué clase de vector es? Numeric, ok.
## [1] "numeric"

Comprobamos supuestos de aplicación. Primero, dado el diseño de muestra de la encuesta CEP sabemos que cada muestra comparada es un subconjunto aleatorio de la población. Y dado el carácter transversal de los datos y que vamos a comparar grupos según sexo, sabemos que las muestras son independientes.

Luego, evaluamos si hay una distribución aproximadamente normal en ambos grupos.

Se comienza evaluando la presencia de datos atípicos.

#Diagrama de cajas con fines exploratorios
boxplot(CEP84$ESP_15C1 ~ CEP84$ESP_45,
        xlab = "Nueva Constitución", ylab = "Sueldo ético obrero")

Se detecta presencia de datos atípicos. Se decide eliminar datos atípicos (convertirlos en NA).

#Se crea función para identificar valores atípicos como casos más distantes que  1.5 veces el rango intercuantilico (IQR) y reemplazarlos por NA.
outliersNA <- function(x, na.rm = TRUE, ...) {
  qnt <- quantile(x, probs=c(.25, .75), na.rm = na.rm, ...)
  H <- 1.5 * IQR(x, na.rm = na.rm)
  y <- x
  y[x < (qnt[1] - H)] <- NA
  y[x > (qnt[2] + H)] <- NA
  y
} 

#remover outliers
CEP84$sueldo.n.obreros <- outliersNA(CEP84$ESP_15C1, na.rm = TRUE)

#Diagrama de cajas sin valores atípicos
boxplot(CEP84$sueldo.n.obreros ~ CEP84$ESP_45, 
        xlab = "Nueva Constitución", ylab = "Sueldo ético obrero") 

Una vez removidos los valores atípicos, se evalúa normalidad en la variable sueldo ético obrero.

#Chequear normalidad en ambas poblaciones (Test de Shapiro-Wilk)
CEP84 %>%
  group_by(CEP84$ESP_45) %>%
  summarise(statistic = shapiro.test(sueldo.n.obreros)$statistic, 
            p.value = shapiro.test(sueldo.n.obreros)$p.value)
## Warning: Factor `CEP84$ESP_45` contains implicit NA, consider using
## `forcats::fct_explicit_na`
## # A tibble: 3 x 3
##   `CEP84$ESP_45` statistic  p.value
##   <fct>              <dbl>    <dbl>
## 1 Aprueba            0.884 1.10e-25
## 2 Rechaza            0.908 4.37e- 9
## 3 <NA>               0.877 2.36e-15
#Chequear normalidad mediante gráfico q-q normal
qqPlot(CEP84$sueldo.n.obreros, groups = CEP84$ESP_45)

Considerando tanto el test de Shapiro-Wilk para quienes aprueban una nueva Constitución (\(W = 0.88, \; p < 0.05\)) y para quienes la rechazan (\(W = 0.91, \; p < 0.05\)), como los gráficos q-q normal, se concluye que el sueldo ético obrero no sigue una distribución normal en ambos grupos. Sin embargo, dado que ambos grupos poseen más de 30 casos en la muestra es posible realizar una prueba t, ya que ésta es robusta frente a la violación del supuesto de normalidad cuando \(n > 30\).

Por último, se evalúa el supuesto de homogeneidad de varianzas.

#Prueba F de homogeneidad de varianzas
var.test(sueldo.n.obreros ~ ESP_45, data = CEP84)
## 
##  F test to compare two variances
## 
## data:  sueldo.n.obreros by ESP_45
## F = 0.83293, num df = 920, denom df = 176, p-value = 0.1033
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
##  0.6567758 1.0375378
## sample estimates:
## ratio of variances 
##          0.8329306

De acuerdo con el Test F de homogeneidad de varianzas estimado (\(F = 0.83, \; df = 920, \; p > 0.05\)), es posible asumir que existe igualdad de varianzas.

t.test(sueldo.n.obreros ~ ESP_45, data = CEP84, var.equal = TRUE) 
## 
##  Two Sample t-test
## 
## data:  sueldo.n.obreros by ESP_45
## t = 1.0361, df = 1096, p-value = 0.3004
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -13198.96  42736.96
## sample estimates:
## mean in group Aprueba mean in group Rechaza 
##              619068.4              604299.4
#Si no hay igualdad de varianzas: var.equal = FALSE
#Para constrastes unilaterales agregamos: alternative = "less" o alternative = "greater"

Con un 95% de confianza, existe evidencia suficiente para no rechazar la hipótesis nula de igualdad de medias (\(t = 1.04, \; df = 1096, \; p > 0.05\)) de sueldo ético obrero entre personas que aprueban y rechazan una nueva Constitución. Por lo tanto, es posible sostener que no existen diferencias significativas en las creencias respecto del sueldo que debiera ganar un obrero no calificado de una fábrica, según actitudes hacia una nueva Constitución. En promedio, quienes aprueban proponen un sueldo ético obrero de $619,068 y quienes rechazan, $604,299 -lo que constituye una diferencia no significativa.

Prueba t (t-test) para medias de dos grupos no independientes o pareados

La prueba t para medias de dos grupos no indendientes permite determinar si la media en dos poblaciones pareadas es la misma. Sus supuestos de aplicación son:

La prueba t para medias de dos grupos no indendientes permite evaluar las siguientes hipótesis nulas:

Veamos un ejemplo.

Supongamos que un equipo de fútbol ha cambiado de entrenador y en su contrato se señala que una vez que se han jugado 100 partidos se evaluará su rendimiento en una muestra aleatoria de 50 partidos, empleando un indicador que varía de 0 a 100. Por lo tanto, definimos las siguientes hipótesis a contrastar:

Se decide trabajar con un nivel de confianza del 95% y un nivel de significación de \(\alpha = 0.05\).

# Primero, generar datos ficticios.
set.seed(123)
antiguo.entrenador <- rnorm(100, 55, 17)
nuevo.entrenador <- antiguo.entrenador - runif(100,10,20)
# Muestras aleatorias
antiguo.entrenador.muestra <- sample(antiguo.entrenador, 50)
nuevo.entrenador.muestra <- sample(nuevo.entrenador, 50)

Comprobamos supuestos de aplicación. Sabemos que ambas muestras son un subconjunto aleatorio de los 100 partidos jugados antes y después del cambio de entrenador. Además, dado que todas las medidas se refieren al mismo equipo, son muestras no independientes.

Se evalúa normalidad en las variables.

#Chequear normalidad en ambas poblaciones (Test de Shapiro-Wilk)
shapiro.test(antiguo.entrenador.muestra)
## 
##  Shapiro-Wilk normality test
## 
## data:  antiguo.entrenador.muestra
## W = 0.98539, p-value = 0.7882
shapiro.test(nuevo.entrenador.muestra)
## 
##  Shapiro-Wilk normality test
## 
## data:  nuevo.entrenador.muestra
## W = 0.97117, p-value = 0.2581
#Chequear normalidad mediante gráfico q-q normal
qqPlot(antiguo.entrenador.muestra)

## [1] 38 46
qqPlot(nuevo.entrenador.muestra)

## [1] 31 14

Considerando tanto el test de Shapiro-Wilk para los datos antes (\(W = 0.99, \; p > 0.05\)) y despúes del cambio de entrenador (\(W = 0.97, \; p > 0.05\)), como los gráficos q-q normal, se concluye que los datos siguen una distribución normal.

t.test(antiguo.entrenador.muestra, nuevo.entrenador.muestra, 
       paired = TRUE, conf.level = 0.95, alternative = "two.sided")
## 
##  Paired t-test
## 
## data:  antiguo.entrenador.muestra and nuevo.entrenador.muestra
## t = 3.9557, df = 49, p-value = 0.0002457
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##   5.973904 18.311525
## sample estimates:
## mean of the differences 
##                12.14271
#Para constrastes unilaterales agregamos: alternative = "less" o alternative = "greater"
mean(antiguo.entrenador.muestra)
## [1] 54.59773
mean(nuevo.entrenador.muestra)
## [1] 42.45502

Con un 95% de confianza, existe evidencia suficiente para rechazar la hipótesis nula de igualdad de medias (\(t = 3.96, \; df = 49, \; p < 0.05\)) del rendimiento del equipo antes y después del cambio de entrenador. Por lo tanto, es posible sostener que existen diferencias significativas. En promedio, antes del cambio el equipo rindió un 54.60 y luego, 42.46.

#Podemos llegar a la misma conclusión con un contraste unilateral
t.test(antiguo.entrenador.muestra, nuevo.entrenador.muestra, 
       paired = TRUE, conf.level = 0.95, alternative = "less")
## 
##  Paired t-test
## 
## data:  antiguo.entrenador.muestra and nuevo.entrenador.muestra
## t = 3.9557, df = 49, p-value = 0.9999
## alternative hypothesis: true difference in means is less than 0
## 95 percent confidence interval:
##      -Inf 17.28924
## sample estimates:
## mean of the differences 
##                12.14271