Semana 3

Estudio de diferencias en data observacional

Carguemos los datos de “infoPeru”. Como los datos están en un archivo de EXCEL, debemos llamar a las funciones de openxlsx (esta biblioteca de funciones debe estar previamente instalada):

library(openxlsx)
dataPeru=read.xlsx("dataPeru.xlsx",2)

El objeto dataPeru tiene los datos de la segunda hoja (la primera tenia el diccionario de datos).

Esta data es observacional, pues no ha sido producida en un experimento (ni cuasi-experimento).

Confirmemos que variables tenemos:

names(dataPeru)
##  [1] "IDDPTO"             "IDPROV"             "NOMBDEP"           
##  [4] "NOMBPROV"           "vida"               "educacion"         
##  [7] "permanenciaescolar" "ingresofamilia"     "identidad"         
## [10] "salud"              "asistenciaedu"      "saneamiento"       
## [13] "electrificacion"    "costa"              "capital"           
## [16] "tamano"             "fecundidad"         "desnutricion"      
## [19] "densidadpob"        "mortalidad"         "analfa"            
## [22] "analfa1"            "analfa2"            "analfa3"           
## [25] "analfa4"            "pob"                "pob_ur"            
## [28] "pob_rural"          "pob_h"              "pob_m"

Diferencias entre GRUPOS

Se dice que tenemos diferencias entre grupos cuando queremos saber si el valor promedio de cada grupo difiere de los demás.

Dos grupos

  1. Escojamos algun “grupo”, es decir una variable categórica que diferencie a nuestras provincias. Por ejemplo, costa:
# explorando
table(dataPeru$costa)
## 
##  NO  SI 
## 166  26

De lo anterior, vemos que tenemos 26 provincias se encuentran en la costa.

  1. Elijamos la variable numérica de interés. Por ejemplo, saneamiento:
summary(dataPeru$saneamiento)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.2351 41.1141 54.5285 56.3032 72.3195 99.5000

En este caso la mediana (median) nos indica que a nivel de todas las provincias del Perú, el 50% de las provincias tienen viviendas con agua y desague en un 54.52% .

  1. Ahora, queremos saber el saneamiento por grupo:
# saneamiento por grupo:

aggregate(saneamiento ~ costa, data=dataPeru,median) 
##   costa saneamiento
## 1    NO    51.65420
## 2    SI    84.63195

Las “diferencias” que vemos entre saneamiento entre las provincias ubicadas en la costa y las demas nos parece indicar que la existencia de saneamiento es mucho mayor en la costa.

Una prueba estadistica para saber si tales diferencias son significativas nos la ofrece la prueba de wilcoxon:

# si obtienes "TRUE", los valores medios serán diferentes:

wilcox.test(saneamiento ~ costa,
            data=dataPeru)$p.value<=0.05 
## [1] TRUE

Esta prueba nos hace pensar que en efecto los valores medios serían diferentes.

library(ggpubr)
## Loading required package: ggplot2
## Loading required package: magrittr
ggerrorplot(dataPeru, x = "costa", 
            y = "saneamiento", 
            desc_stat = "median_iqr"
            )

La prueba de Wilcox sugiere que las medianas son diferentes y que también la gráfica sugiere lo mismo. Veamos más detalles:

library(ggpubr)
ggerrorplot(dataPeru, x = "costa", 
            y = "saneamiento", 
            desc_stat = "median_iqr",
            add='dotplot'
            )
## `stat_bindot()` using `bins = 30`. Pick better value with `binwidth`.

Jugando a lo sano, deberíamos seguir al gráfico.

Tres grupos o más

Podemos hacer este análisis si tenemos una variable categorica con más de dos valores, por ejemplo:

table(dataPeru$tamano)
## 
##  1  2  3  4  5 
## 68 63 44 16  1

Ese es el tamaño de la provincia segun poblacion. Ahi está Lima, pero mejor analizamos sin ella:

dataPeru2=dataPeru[dataPeru$tamano<5,]

Entonces:

aggregate(saneamiento ~ tamano, data=dataPeru2,median) 
##   tamano saneamiento
## 1      1    49.34105
## 2      2    52.44790
## 3      3    62.59475
## 4      4    85.72050

Las medianas son diferentes, queremos saber si esa diferencia es significativa:

# si obtienes "TRUE", al menos un  val medio serán diferente a los demás:
kruskal.test(vida ~ tamano,
            data=dataPeru2)$p.value<=0.05 
## [1] TRUE
ggerrorplot(dataPeru2, x = "tamano", 
            y = "saneamiento", 
            desc_stat = "median_iqr",
            add='dotplot'
            )
## `stat_bindot()` using `bins = 30`. Pick better value with `binwidth`.

Del gráfico podríamos concluir que el cuarto grupo y tercer grupo podrían diferir de los dos primeros; y que los dos primeros son prácticamente idénticos.