library(rio) 
BD=import("COVID Isolation.xlsx")
# **Limpio mi base de datos**
#Limpio Q13
class(BD$Q13)
## [1] "character"
any(is.na(BD$Q13)) #Confirma que sí hay NA's
## [1] TRUE
sum(is.na(BD$Q13)) #Cantidad de valores perdidos en el vector
## [1] 62
BD1 <- BD[complete.cases(BD$Q13), ] #imputamos los NA's
BD1$Q13=as.numeric(BD1$Q13) #la convierto a numérica
## Warning: NAs introducidos por coerción
class(BD1$Q13)
## [1] "numeric"
sum(is.na(BD1$Q13))
## [1] 2
BD1 <- BD1[complete.cases(BD1$Q13), ] #volvemos a imputar NA's porque al convertirlo a numérica surgen nuevos datos perdios
sum(is.na(BD1$Q13))
## [1] 0
#Limpio Q10
class(BD1$Q10)
## [1] "character"
any(is.na(BD1$Q10)) #La variable Q10 no tiene NA's
## [1] FALSE
sum(is.na(BD1$Q10)) #Esto se confirma porque R me indica que tiene 0 datos perdidos
## [1] 0
BD1$Q10=as.factor(BD1$Q10)
class(BD1$Q10)
## [1] "factor"

Primer paso: Establecer la hipótesis.

Ambas hipótesis son acerca de los parámetros de la población.

Segundo paso: Calcular el estadístico a emplear

Para verificar la diferencia de medias se calcula el estadístico T, y uno de los primeros pasos es calcular las diferencias entre las medias muestrales, ya que es lo quiero extrapolar y por tanto saber si existe o no una diferencia significativa entre las medias poblacionales de ambos grupos: #primero voy a sacar la media de cada grupo

si= BD1[BD1$Q10=="Yes", "Q13"] #creo un objeto que contenga el promedio de horas de sueño del personal de la salud requiere seguir un horario de trabajo fijo mientras trabaja desde casa. de la base de datos voy a sacar el grupo que sí lo requiere y sus horas de sueño, ¿por qué son dos "=="?
no=BD1[BD1$Q10=="No", "Q13"] #creo un objeto que contenga el promedio de horas de sueño del personal de la salud que no requiere seguir un horario de trabajo fijo mientras trabaja desde casa 
mean(si, na.rm = TRUE) - mean(no, na.rm = TRUE)#calculo la diferencia de medias. Lo que quiero saber en adelante es si esta diferencia de media es estadísticamente significativa o no.
## [1] 0.07853885
#na.rm=TRUE para saber que tenemos NAs y se deben omitir al momento de generar el promedio (eliminar valores no asignados)
#La diferencia de medias es 0,0785 aprox

Tercer paso: Determinar el nivel de significancia

t.test(
  x           = si,
  y           = no,
  alternative = "two.sided", 
  mu          = 0,
  conf.level  = 0.95 #nivel de confianza (95%)
)
## 
##  Welch Two Sample t-test
## 
## data:  si and no
## t = 0.8077, df = 803.02, p-value = 0.4195
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.1123308  0.2694085
## sample estimates:
## mean of x mean of y 
##  7.031737  6.953198
#Respuesta: t = 0.8077, df = 803.02, p-value = 0.4195

Forma easy

t.test(BD1$Q13 ~ BD1$Q10)
## 
##  Welch Two Sample t-test
## 
## data:  BD1$Q13 by BD1$Q10
## t = -0.8077, df = 803.02, p-value = 0.4195
## alternative hypothesis: true difference in means between group No and group Yes is not equal to 0
## 95 percent confidence interval:
##  -0.2694085  0.1123308
## sample estimates:
##  mean in group No mean in group Yes 
##          6.953198          7.031737
#RPT: t = -0.8077, df = 803.02, p-value = 0.4195

Sexto paso: Interpretar

Se observa que el p-value es 0.4195, y es mayor al alpha (0.05), entonces compruebo la H0, por tanto, no existe una diferencia estadísticamente significativa entre las medias de horas de sueño del personal de la salud que requiere de un horario de trabajo fijo en casa vs el que no lo requiere con un 95% de confianza.

Paso FINAL: Graficar

library(Rmisc)
## Loading required package: lattice
## Loading required package: plyr
ci.indicador1 <- CI(si, ci=0.95)
ci.indicador2 <- CI(no, ci=0.95)
#PRIMERA FORMA: creo dos objetos que son los intervalos de confianza
group.CI(BD1$Q13~BD1$Q10,BD1,ci=0.95)
##   BD1$Q10 BD1$Q13.upper BD1$Q13.mean BD1$Q13.lower
## 1      No      7.087156     6.953198      6.819239
## 2     Yes      7.168103     7.031737      6.895370
#otra manera de formar mi grupo de intervalos de confianza: aquí es un solo código

Barras de Error

library(gplots)
## 
## Attaching package: 'gplots'
## The following object is masked from 'package:stats':
## 
##     lowess
plotmeans(BD1$Q13 ~ BD1$Q10, BD1) #gráfico de medias

#Lo hago más bonito
plotmeans(BD1$Q13 ~ BD1$Q10, BD1, mean.labels = TRUE, , digits=2,connect = FALSE,xlab = "Requerimiento de horario de trabajo fijo", ylab="Número de horas de sueño")

#Se observa que el número de horas de sueño del personal de salud que requiere un horario de trabajo fijo es mayor al número de horas de sueños del personal que no lo requiere. La media del primero es 6.05 vs la del segundo que es un 7.03. Por lo tanto, la diferencia de medias es 0,0785 aproximadamente. Sin embargo, esta diferencia numérica no implica que exista una diferencia estadística significativa. Como se observa en el gráfico, ambos intervalos de confianza se traslapan, por lo que se puede concluir que existe una diferencia estadísticamente significativa entre las medias de horas de sueño del personal que requiere de un horario fijo de trabajo vs el que no con un 95% de confianza

Barras de Error con GGPLOT

barraggplot <- summarySE(data=BD1, measurevar="Q13", groupvars="Q10", na.rm=FALSE, conf.interval=.95)
barraggplot
##   Q10   N      Q13       sd         se        ci
## 1  No 516 6.953198 1.548906 0.06818680 0.1339585
## 2 Yes 334 7.031737 1.266926 0.06932309 0.1363664
library(ggplot2)
ggplot(barraggplot, aes(x=Q10, y=Q13, group=1)) +
    geom_line() +
    geom_errorbar(width=.1, aes(ymin=Q13-ci, ymax=Q13+ci)) +
    geom_point(shape=21, size=3, fill="white") +
    ylim(5,9)+labs(x="Horario fijo de trabajo", y="Número de horas de sueño")