Escuela de Ciencia Política

ESTADISTICA


Exploración Bivariada

  1. Carga de data:

Esta vez usaremos un archivo en SPSS. Este archivo no puede ser directamente leido desde Google.

En esta situacion, un archivo de este tipo debe ser guardado en GitHub. El archivo lo puedes descargar de aquí. Los archivos de este tipo, normalmente tienen un archivo de metadatos, donde se explica que significa cada columna y valores, para este archivo, puedes encontrar los metadatos aqui.

Cuando no sean CSV desde Google, debes usar la biblioteca rio junto con el link de GitHub. Aqui te paso mi link, pero debes luego cambiarlo por el tuyo:

library(rio)

linkGIT="https://github.com/JoseManuelMagallanes/Estadistica_Para_AnalisisPolitico/raw/master/hsb.sav"
data=import(linkGIT)

que tenemos?

str(data,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"
  1. Formatear:

Lea la metadata,y de formato:

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

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

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

Ahora:

str(data,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

  1. Tipo 1: NUM-DICO - Si tenemos que estos son los promedios de matematicas para hombres y mujeres:
f1=formula(MATH ~ SEX)
aggregate(f1, data,mean) 
##   SEX     MATH
## 1   1 52.34542
## 2   2 51.43456

** Podemos inferir que a los hombres les va mejor en MATH? **

  1. Tipo 2: NUM-POLI Si tenemos que estos son los promedios de matematicas según programa escolar:
f2=formula(MATH ~ HSP)
aggregate(f2, data,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.

  • Verificando para tipo 2:

Queremos saber si hay normalidad de la numerica en cada grupo de la categorica:

aggregate(f2, data,
          FUN = function(x) {y <- shapiro.test(x); c(y$statistic, y$p.value)}) 
##   HSP       MATH.W      MATH.V2
## 1   1 0.9888835605 0.0187048018
## 2   2 0.9810514423 0.0423975131
## 3   3 0.9512191510 0.0000495502

Un valor de probabilidad menor a 0.05 indica que NO hay normalidad.

Aqui lo puedes graficar:

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

Si los pun tos escapan de la recta diagonal, la variable se aleja de la normalidad.

  • Opcion Paramétrica para politomica:
summary(aov(f2, data=data))
##              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

Se indica que hay significancia en la prueba: debes rechazar la hipotesis de igualdad de medias.

Visualmente:

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

  • Opcion No Paramétrica para politomica:
kruskal.test(f2,data)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  MATH by HSP
## Kruskal-Wallis chi-squared = 121.26, df = 2, p-value < 2.2e-16

Mismo resultado.

Visualmente:

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

  • Opcion Paramétrica para dicotómica:
t.test(f1,data)
## 
##  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

Opcion No Paramétrica para dicotómica:

wilcox.test(f1,data)
## 
##  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

** Tarea:** Analizar READING y SCIENCE, por sexo y nivel socioeconómico. Escribir conclusiones.