PRÁCTICA CALIFICADA 12

http://rpubs.com/Brayan_Milla/540318

EXPLORACIÓN BIVARIADA

  1. Carga de data:
library(rio)

linkGIT="https://github.com/JoseManuelMagallanes/Estadistica_Para_AnalisisPolitico/raw/master/hsb.sav"
hsb=import(linkGIT)
str(hsb,strict.width="cut",width=50)
## 'data.frame':    600 obs. of  15 variables:
##  $ ID    : num  1 2 3 4 5 6 7 8 9 10 ...
##   ..- attr(*, "format.spss")= chr "F5.0"
##  $ SEX   : num  2 1 2 2 2 1 1 2 1 2 ...
##   ..- attr(*, "format.spss")= chr "F5.0"
##  $ RACE  : num  2 2 2 2 2 2 2 2 2 2 ...
##   ..- attr(*, "format.spss")= chr "F5.0"
##  $ SES   : num  1 1 1 2 2 2 1 1 2 1 ...
##   ..- attr(*, "format.spss")= chr "F5.0"
##  $ SCTYP : num  1 1 1 1 1 1 1 1 1 1 ...
##   ..- attr(*, "format.spss")= chr "F5.0"
##  $ HSP   : num  3 2 2 3 3 2 1 1 1 1 ...
##   ..- attr(*, "format.spss")= chr "F5.0"
##  $ LOCUS : num  0.29 -0.42 0.71 0.06 0.22 0.46 0..
##   ..- attr(*, "format.spss")= chr "F5.2"
##  $ CONCPT: num  0.88 0.03 0.03 0.03 -0.28 0.03 -..
##   ..- attr(*, "format.spss")= chr "F5.2"
##  $ MOT   : num  0.67 0.33 0.67 0 0 0 0.33 1 0.33..
##   ..- attr(*, "format.spss")= chr "F5.2"
##  $ CAR   : num  10 2 9 15 1 11 10 9 9 11 ...
##   ..- attr(*, "format.spss")= chr "F5.0"
##  $ RDG   : num  33.6 46.9 41.6 38.9 36.3 49.5 62..
##   ..- attr(*, "format.spss")= chr "F5.2"
##  $ WRTG  : num  43.7 35.9 59.3 41.1 48.9 46.3 64..
##   ..- attr(*, "format.spss")= chr "F5.2"
##  $ MATH  : num  40.2 41.9 41.9 32.7 39.5 46.2 48..
##   ..- attr(*, "format.spss")= chr "F5.2"
##  $ SCI   : num  39 36.3 44.4 41.7 41.7 41.7 63.4..
##   ..- attr(*, "format.spss")= chr "F5.2"
##  $ CIV   : num  40.6 45.6 45.6 40.6 45.6 35.6 55..
##   ..- attr(*, "format.spss")= chr "F5.2"

Formatear: 2. Lea la metadata,y de formato:

hsb$ID=as.character(hsb$ID)

hsb[,c(2,3,5,6,10)]=lapply(hsb[,c(2,3,5,6,10)],as.factor)

hsb$HSP=as.ordered(hsb$HSP)

Ahora:

str(hsb,strict.width="cut",width=50)
## 'data.frame':    600 obs. of  15 variables:
##  $ ID    : chr  "1" "2" "3" "4" ...
##  $ SEX   : Factor w/ 2 levels "1","2": 2 1 2 2 2..
##  $ RACE  : Factor w/ 4 levels "1","2","3","4": 2..
##  $ SES   : num  1 1 1 2 2 2 1 1 2 1 ...
##   ..- attr(*, "format.spss")= chr "F5.0"
##  $ SCTYP : Factor w/ 2 levels "1","2": 1 1 1 1 1..
##  $ HSP   : Ord.factor w/ 3 levels "1"<"2"<"3": 3..
##  $ LOCUS : num  0.29 -0.42 0.71 0.06 0.22 0.46 0..
##   ..- attr(*, "format.spss")= chr "F5.2"
##  $ CONCPT: num  0.88 0.03 0.03 0.03 -0.28 0.03 -..
##   ..- attr(*, "format.spss")= chr "F5.2"
##  $ MOT   : num  0.67 0.33 0.67 0 0 0 0.33 1 0.33..
##   ..- attr(*, "format.spss")= chr "F5.2"
##  $ CAR   : Factor w/ 17 levels "1","2","3","4",...
##  $ RDG   : num  33.6 46.9 41.6 38.9 36.3 49.5 62..
##   ..- attr(*, "format.spss")= chr "F5.2"
##  $ WRTG  : num  43.7 35.9 59.3 41.1 48.9 46.3 64..
##   ..- attr(*, "format.spss")= chr "F5.2"
##  $ MATH  : num  40.2 41.9 41.9 32.7 39.5 46.2 48..
##   ..- attr(*, "format.spss")= chr "F5.2"
##  $ SCI   : num  39 36.3 44.4 41.7 41.7 41.7 63.4..
##   ..- attr(*, "format.spss")= chr "F5.2"
##  $ CIV   : num  40.6 45.6 45.6 40.6 45.6 35.6 55..
##   ..- attr(*, "format.spss")= chr "F5.2"

Preguntas bivariadas

a. Tipo 1: NUM-DICO - Si tenemos que estos son los promedios de matematicas para hombres y mujeres:

f1=formula(MATH ~ SEX)
aggregate(f1, hsb, mean)
##   SEX     MATH
## 1   1 52.34542
## 2   2 51.43456

Podemos inferir que a los hombres les va mejor en MATH? Se puede afirmar que sí, porque tienen mayor rendimiento que las mujeres.

b. Tipo 2: NUM-POLI Si tenemos que estos son los promedios de matematicas según programa escolar:

f2=formula(MATH ~ HSP)
aggregate(f2, hsb,mean) 
##   HSP     MATH
## 1   1 55.81071
## 2   2 49.09172
## 3   3 46.26803

Podemos inferir que a los alumnos del programa general les va mejor en MATH?

Probando Hipótesis

Las hipótesis se prueban siguiendo camino paramétrico o NO paramétrico.

#Tipo 1: Decidiendo si es no no paramétrico

Probemos normalidad de la variable, ¿que significa eso?

La curva normal es una distribución estadística importante:

Cuando los datos que tienes tienen una distribución parecida a esa curva, se puede aplicar un tipo de técnicas conocidas como las paramétricas.

Esta gráfica compara el histograma de las notas de matematica, y muestra la curva normal:

library(ggplot2)
ggplot(hsb,aes(x=MATH)) + geom_histogram(aes(y = ..density..),bins = 20, fill='green') +
        stat_function(fun = dnorm, colour = "red",
                      args = list(mean = mean(hsb$MATH, na.rm = TRUE),
                                 sd = sd(hsb$MATH, na.rm = TRUE))) + facet_grid(~SEX) + coord_flip()

¿Podrias afirmar que tu variable MATH se distribuye normalmente en cada caso?

Otra alternativa gráfica es:

library(ggpubr)
## Loading required package: magrittr
ggqqplot(data=hsb,x="MATH") + facet_grid(. ~ SEX)

Si los puntos se alejan mucho de la diagonal, se aleja de la normalidad.

Como es dificil hacerlo visualmente siempre, podemos usar el test de Shapiro-Wilk, que nos reporta la probabilidad que los datos tengan esa distribución.

normalidadTest=function(x) {y =shapiro.test(x); 
                            c(y$statistic, y$p.value)}

resultado= aggregate(f1, hsb,
                     FUN = normalidadTest) 

library(knitr)

shapiroTest=as.data.frame(resultado[,2])
names(shapiroTest)=c("SW_Statistic","Probabilidad")
kable(cbind(resultado[1],shapiroTest))
SEX SW_Statistic Probabilidad
1 0.9837903 0.0034565
2 0.9790040 0.0001031

Opcion Paramétrica para dicotómica: Si hay normalidad usa la prueba t:

t.test(f1,hsb)
## 
##  Welch Two Sample t-test
## 
## data:  MATH by SEX
## t = 1.1722, df = 560.59, p-value = 0.2416
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.6154067  2.4371360
## sample estimates:
## mean in group 1 mean in group 2 
##        52.34542        51.43456

Esta prueba informa la probabilidad que la media de MATH sea la misma en ambos grupos de SEX.

Opcion No Paramétrica para dicotómica:

Si no hay normalidad usa la prueba Mann-Whitney:

wilcox.test(f1,hsb)
## 
##  Wilcoxon rank sum test with continuity correction
## 
## data:  MATH by SEX
## W = 46789, p-value = 0.3086
## alternative hypothesis: true location shift is not equal to 0

Verificando para tipo 2: Queremos saber si hay normalidad de la numerica en cada grupo de la categorica:

resultado= aggregate(f2, hsb,
                     FUN = normalidadTest) 

library(knitr)

shapiroTest=as.data.frame(resultado[,2])
names(shapiroTest)=c("SW_Statistic","Probabilidad")
kable(cbind(resultado[1],shapiroTest))
HSP SW_Statistic Probabilidad
1 0.9888836 0.0187048
2 0.9810514 0.0423975
3 0.9512192 0.0000496

Como al menos una tiene probabilidad menor a 0.05, debemos ir por el camino no paramétrico.

Opcion Paramétrica para politomica:

summary(aov(f2, data=hsb))
##              Df Sum Sq Mean Sq F value Pr(>F)    
## HSP           2  10515    5258   73.72 <2e-16 ***
## Residuals   597  42579      71                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Los astericos indican que la probabilidad de que todas las medias sean iguales es menor a 0.05. De ahi que al menos una difiere de las demás. Tratemos de detectar las diferencias:

library(ggpubr)
ggerrorplot(hsb, x = "HSP", 
            y = "MATH", 
            desc_stat = "mean_ci"
            )

El nivel 1 se diferenciaría de los demás.

Opcion No Paramétrica para politomica: Aquí puedes usar la prueba de Kruskal-Wallis:

kruskal.test(f2,hsb)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  MATH by HSP
## Kruskal-Wallis chi-squared = 121.26, df = 2, p-value < 2.2e-16

Aqui no muestra asteriscos, pero la probabilidad (p-value) es también menor a 0.05.

Visualmente:

ggplot(data=hsb, aes(x=HSP, y=MATH)) + geom_boxplot(notch = T)

En este caso, se ha puesto un ‘notch’ al boxplot. Si los notches se intersectan, se asume igualdad de medianas, de ahí que la opcion 1 es diferente a las demás.