Datos y Paquetes

library(ggplot2)
## Warning: package 'ggplot2' was built under R version 3.3.3
library(Rmisc)
## Warning: package 'Rmisc' was built under R version 3.3.3
## Loading required package: lattice
## Loading required package: plyr
## Warning: package 'plyr' was built under R version 3.3.3
library(stringr)

load("genero12.Rda")

Ojiva: Gráfico de distribución acumulada de frecuencias relativas

ggplot(genero12, aes(P19A, colour=SEXO)) + geom_step(stat = "ecdf") +
  labs(colour = "Sexo") + xlab("Horas") + ylab("Proporción de casos") +
  ggtitle("Horas semanales dedicadas a labores domésticas según \nsexo del entrevistado. Proporción acumulada de casos") + theme_bw()
## Warning: Removed 7 rows containing non-finite values (stat_ecdf).

ggplot(genero12, aes(P19A, colour=SEXO)) + geom_step(stat = "ecdf") +
  labs(colour = "Sexo") + xlab("Horas") + ylab("Proporción de casos") +
  ggtitle("Horas semanales dedicadas a labores domésticas según \nsexo del entrevistado. Proporción acumulada de casos") + facet_grid(GEDAD~.) +
  theme_bw() 
## Warning: Removed 7 rows containing non-finite values (stat_ecdf).

ggplot(genero12, aes(P19A, colour=SEXO)) + geom_step(stat = "ecdf") +
  labs(colour = "Sexo") + xlab("Horas") + ylab("Proporción de casos") +
  ggtitle("Horas semanales dedicadas a labores domésticas según \nsexo del entrevistado. Proporción acumulada de casos") + facet_grid(GEDAD~NSEGrup) +
  theme_bw() 
## Warning: Removed 7 rows containing non-finite values (stat_ecdf).

Gráfico de Puntos

res1 <- summarySE(data=genero12, measurevar = "P19A", 
                  groupvars = c("SEXO", "GEDAD"), na.rm=T)
res1
##        SEXO    GEDAD   N     P19A       sd        se       ci
## 1 Masculino  18 a 29 203 13.51232 12.67896 0.8898886 1.754662
## 2 Masculino  30 a 44 187 13.70588 14.26531 1.0431827 2.057991
## 3 Masculino 45 a más 197 13.89340 13.65216 0.9726760 1.918254
## 4  Femenino  18 a 29 204 26.57843 20.35761 1.4253177 2.810326
## 5  Femenino  30 a 44 195 33.09744 21.17175 1.5161406 2.990235
## 6  Femenino 45 a más 210 33.91905 21.82199 1.5058602 2.968622
ggplot(res1, aes(x=GEDAD, y=P19A, shape=SEXO)) + geom_point(size=3) +
  ylim(0,50) + labs(shape="Sexo") + xlab("Grupos de Edad") + ylab("Horas") +
  ggtitle("Promedio de horas semanales dedicadas a labores domésticas\nsegún sexo del entrevistado y grupo de edad") + theme_bw()

res2 <- summarySE(data=genero12, measurevar = "P19A", 
                  groupvars = c("SEXO", "GEDAD", "NSEGrup"), na.rm=T)
res2
##         SEXO    GEDAD NSEGrup   N     P19A        sd       se       ci
## 1  Masculino  18 a 29     A/B  49 13.26531  9.551997 1.364571 2.743654
## 2  Masculino  18 a 29       C  72 11.93056 11.240428 1.324697 2.641371
## 3  Masculino  18 a 29     D/E  82 15.04878 15.212813 1.679974 3.342622
## 4  Masculino  30 a 44     A/B  31 14.16129 13.774607 2.473992 5.052566
## 5  Masculino  30 a 44       C  59 13.66102 11.509532 1.498413 2.999400
## 6  Masculino  30 a 44     D/E  97 13.58763 15.964644 1.620964 3.217588
## 7  Masculino 45 a más     A/B  44 14.40909 13.090593 1.973481 3.979904
## 8  Masculino 45 a más       C  52 12.92308 13.883050 1.925233 3.865066
## 9  Masculino 45 a más     D/E 101 14.16832 13.879531 1.381065 2.739994
## 10  Femenino  18 a 29     A/B  46 21.97826 17.237542 2.541537 5.118918
## 11  Femenino  18 a 29       C  60 20.91667 16.242121 2.096849 4.195785
## 12  Femenino  18 a 29     D/E  98 32.20408 22.520533 2.274917 4.515081
## 13  Femenino  30 a 44     A/B  46 27.21739 18.443804 2.719391 5.477134
## 14  Femenino  30 a 44       C  58 33.48276 20.897613 2.743991 5.494747
## 15  Femenino  30 a 44     D/E  91 35.82418 22.231906 2.330537 4.630018
## 16  Femenino 45 a más     A/B  46 35.50000 19.713222 2.906556 5.854104
## 17  Femenino 45 a más       C  55 31.38182 20.246162 2.729992 5.473304
## 18  Femenino 45 a más     D/E 109 34.53211 23.450724 2.246172 4.452303
ggplot(res2, aes(x=GEDAD, y=P19A, shape=SEXO)) + geom_point(size=3) +
  ylim(0,50) + labs(shape="Sexo") + xlab("Grupos de Edad") + ylab("Horas") +
  ggtitle("Promedio de horas semanales dedicadas a labores domésticas\nsegún sexo del entrevistado y grupo de edad, por nivel socioeconómico") + facet_grid(.~NSEGrup) +
  theme_bw()

Gráfico de puntos para la escala de homofobia

Primero calculamos la escala de homofobia

p51d <- as.numeric(genero12$P51D)
p51d[p51d==5] <- NA
p51d <- (p51d - 5)*(-1)

p51e <- as.numeric(genero12$P51E)
p51f <- as.numeric(genero12$P51F)
p51g <- as.numeric(genero12$P51G)
p51h <- as.numeric(genero12$P51H)
p51i <- as.numeric(genero12$P51I)
p51j <- as.numeric(genero12$P51J)

p51e[p51e==5] <- NA
p51f[p51f==5] <- NA
p51g[p51g==5] <- NA
p51h[p51h==5] <- NA
p51i[p51i==5] <- NA
p51j[p51j==5] <- NA

p51e <- (p51e - 5)*(-1)
p51f <- (p51f - 5)*(-1)
p51g <- (p51g - 5)*(-1)
p51h <- (p51h - 5)*(-1)
p51i <- (p51i - 5)*(-1)
p51j <- (p51j - 5)*(-1)

p51k <- as.numeric(genero12$P51K)

p51k[p51k==5] <- NA

genero12$homofob <- (((p51d + p51e + p51f + p51g + p51h + p51i + p51j +
                          p51k)-8)/24)*100
h_sex <- summarySE(genero12, measurevar = "homofob", groupvars = "SEXO", na.rm=T)[, c(1,3)]
h_edad <- summarySE(genero12, measurevar = "homofob", groupvars = "GEDAD", na.rm=T)[, c(1,3)]
h_reg <- summarySE(genero12, measurevar = "homofob", groupvars = "DOMINIO", na.rm=T)[, c(1,3)]
h_nse <- summarySE(genero12, measurevar = "homofob", groupvars = "NSEGrup", na.rm=T)[, c(1,3)]
h_educ <- summarySE(genero12, measurevar = "homofob", groupvars = "P48", na.rm=T)[-11, c(1,3)]
## Warning in qt(conf.interval/2 + 0.5, datac$N - 1): NaNs produced
h_sex$var <- "Sexo"
h_edad$var <- "Edad"
h_educ$var <- "Nivel Educativo"
h_reg$var <- "Dominio"
h_nse$var <- "NSE"

colnames(h_sex) <- c("categ", "homofob", "var")
colnames(h_edad) <- c("categ", "homofob", "var")
colnames(h_educ) <- c("categ", "homofob", "var")
colnames(h_reg) <- c("categ", "homofob", "var")
colnames(h_nse) <- c("categ", "homofob", "var")


sumar_homof <- rbind(h_sex, h_edad, h_educ, h_nse, h_reg)


ggplot(sumar_homof, aes(x=categ, y=homofob)) + geom_point() +
  ylab("Escala de homofobia") + ylim(40,60) + xlab("") +
  coord_flip() + facet_grid(var ~., scales = 'free', space = 'free') +
  ggtitle("Media en la escala de homofobia, según \nvariables sociodemográficas") +
  theme_bw()

Gráfico de puntos y líneas

Los puntos representan un % y la línea da la idea de una progresión

library(plyr)

genero12$gedad3 <- cut(genero12$EDAD, breaks = c(18, 25, 35, 50, 65, 92), 
                       include.lowest = T)

sum3 <- ddply(genero12, .(gedad3), summarize,
      All=length(gedad3),
      p51d=sum(P51D=="Muy de acuerdo" | P51D=="De acuerdo")/All*100)
      

sum3
##    gedad3 All     p51d
## 1 [18,25] 288 20.83333
## 2 (25,35] 283 25.44170
## 3 (35,50] 363 29.20110
## 4 (50,65] 182 33.51648
## 5 (65,92]  87 36.78161
library(ggplot2)

ggplot(sum3, aes(x=gedad3, y=p51d, group=1)) + geom_point(size=3) + geom_line(size=1) +
  ylim(0,50) + xlab("Grupos de Edad") + ylab("% de entrevistados") +
  ggtitle("Porcentaje de entrevistados que están de acuerdo con la frase:\n''Jamás tendría un amigo homosexual o una amiga lesbiana'',\nsegún grupos de edad") +
  theme_bw()

Gráfico de medias de la escala de homofobia según grupos de edad:

Generamos una tabla de estadísticos descriptivos y a partir de ella hacemos el gráfico:

library(Rmisc)
sum4 <- summarySE(genero12, measurevar = "homofob", groupvars = "gedad3", na.rm=T)
sum4
##    gedad3   N  homofob       sd        se       ci
## 1 [18,25] 236 46.64548 17.51611 1.1402014 2.246322
## 2 (25,35] 222 50.50676 16.60461 1.1144283 2.196267
## 3 (35,50] 269 50.15489 15.77946 0.9620905 1.894217
## 4 (50,65] 139 53.17746 16.82131 1.4267652 2.821148
## 5 (65,92]  65 57.69231 17.75776 2.2025785 4.400156
ggplot(sum4, aes(x=gedad3, y=homofob, group=1)) + geom_point() +
  geom_line() + ylim(25,75) + xlab("Grupos de edad") +
  ylab("Escala de homofobia") +
  ggtitle("Media de la escala de homofobia según grupo de edad \n(0=Nada homofóbico; 100=Muy homofóbico)") +
  theme_bw()

Múltiples grupos

sum5 <- summarySE(genero12, measurevar = "homofob", 
                  groupvars = c("gedad3", "NSEGrup"), na.rm=T)
sum5
##     gedad3 NSEGrup   N  homofob       sd       se       ci
## 1  [18,25]     A/B  63 38.88889 16.94988 2.135484 4.268772
## 2  [18,25]       C  81 46.96502 16.67984 1.853316 3.688216
## 3  [18,25]     D/E  92 51.67572 16.87213 1.759041 3.494119
## 4  (25,35]     A/B  41 46.64634 15.89952 2.483088 5.018508
## 5  (25,35]       C  70 51.66667 14.51026 1.734307 3.459848
## 6  (25,35]     D/E 111 51.20120 17.97328 1.705949 3.380790
## 7  (35,50]     A/B  54 45.91049 13.18835 1.794707 3.599727
## 8  (35,50]       C  73 50.22831 15.66569 1.833531 3.655077
## 9  (35,50]     D/E 142 51.73122 16.52751 1.386958 2.741921
## 10 (50,65]     A/B  40 48.75000 16.59171 2.623380 5.306287
## 11 (50,65]       C  36 53.35648 14.83438 2.472397 5.019234
## 12 (50,65]     D/E  63 55.88624 17.67189 2.226448 4.450607
## 13 (65,92]     A/B  15 60.27778 16.58213 4.281487 9.182876
## 14 (65,92]       C  17 58.33333 12.05816 2.924534 6.199736
## 15 (65,92]     D/E  33 56.18687 20.78435 3.618091 7.369810
ggplot(sum5, aes(x=gedad3, y=homofob, shape=NSEGrup, 
                 linetype=NSEGrup, group=NSEGrup)) + geom_point(size=2) +
  geom_line() + ylim(25,75) + xlab("Grupos de edad")  +
  ylab("Escala de homofobia") +
  scale_linetype(name="NSE") +
  scale_shape_discrete(name="NSE") +
  ggtitle("Media de la escala de homofobia según grupo de edad \ny nivel socioeconómico (0=Nada homofóbico; 100=Muy homofóbico)") +
  theme_bw()

Gráficos bivariables para dos variables cuantitativas: Diagrama de dispersión

Primero los datos:

library(foreign)
mundo05 <- read.spss("mundo2005.sav", to.data.frame = T)
## Warning in read.spss("mundo2005.sav", to.data.frame = T): mundo2005.sav:
## Unrecognized record type 7, subtype 18 encountered in system file
names(mundo05)
##  [1] "Pais"        "Region"      "Pob"         "tgf_75"      "tgf_05"     
##  [6] "anticonc"    "mortInf"     "pbi"         "evida_masc"  "evida_f"    
## [11] "alfab_f"     "alfab_masc"  "matric_fem"  "matric_masc" "pea_fem"    
## [16] "pea_fem2"    "pbiPc05"
ggplot(mundo05, aes(x=matric_fem, y=anticonc, colour=Region)) +
  geom_point() + xlab("% de mujeres matriculadas en educ. sec.") +
  ylab("% de uso de anticonceptivos") +
  ggtitle("Mundo 2005: Uso de anticonceptivos según matrícula femenina en \nsecundaria por país") + theme_bw()
## Warning: Removed 25 rows containing missing values (geom_point).