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"
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"
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? **
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? **
Las hipótesis se prueban siguiendo camino paramétrico o NO paramétrico.
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.
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"
)
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)
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.