df=read_sav("profesores3.sav") %>% select(Genero,EtapaAgrupada, Escenario1, Escenario2, Escenario3, Escenario4) %>%
  filter(as.integer(EtapaAgrupada)<=4) 
dfc=df %>% as_factor() %>% mutate(EtapaAgrupada=droplevels(EtapaAgrupada))
#dfc
      lalonde=dfc

      rndr3 <- function(x, name, ...) {
        if (length(x) == 0) {
          y <- lalonde[[name]]
          s <- rep("", length(render.default(x=y, name=name, ...)))
          if (is.numeric(y)) {
                p=lm(y ~ EtapaAgrupada,data=lalonde) %>% anova() %>% .[[5]] %>% .[[1]]
            } else {
             p <- chisq.test(table(y, droplevels(lalonde$EtapaAgrupada)))$p.value
          }
          s[2] <- sub("<", "&lt;", format.pval(p, digits=3, eps=0.001))
          s
        } else {
          render.default(x=x, name=name, ...)
        }
      }
      
      rndr.strat3 <- function(label, n, ...) {
        ifelse(n==0, label, render.strat.default(label, n, ...))
      }
      
      
      lalonde$EtapaAgrupada=factor(as.numeric(dfc$EtapaAgrupada),levels=c(1,2,3,4,5),labels=c(levels(dfc$EtapaAgrupada),"p-valor"))
      
      table1( ~ Genero+Escenario1+Escenario2+Escenario3+Escenario4 | EtapaAgrupada,
              data=lalonde, droplevels=F, render=rndr3, render.strat=rndr.strat3, overall=F
      )
Infantil
(n=304)
Primaria
(n=1311)
Secundaria
(n=916)
Bachillerato
(n=115)
p-valor
Género
Femenino 293 (96.4%) 932 (71.1%) 608 (66.4%) 66 (57.4%) <0.001
Masculino 11 (3.6%) 379 (28.9%) 308 (33.6%) 49 (42.6%)
Escenario 1: la autonomía de los centros:
Nada de acuerdo 120 (39.5%) 531 (40.5%) 266 (29.0%) 27 (23.5%) <0.001
Poco de acuerdo 103 (33.9%) 388 (29.6%) 295 (32.2%) 42 (36.5%)
Bastante de acuerdo 60 (19.7%) 280 (21.4%) 230 (25.1%) 23 (20.0%)
Muy de acuerdo 21 (6.9%) 112 (8.5%) 125 (13.6%) 23 (20.0%)
Escenario 2, ajuste del currículo: 
Nada de acuerdo 63 (20.7%) 236 (18.0%) 75 (8.2%) 13 (11.3%) <0.001
Poco de acuerdo 116 (38.2%) 469 (35.8%) 230 (25.1%) 35 (30.4%)
Bastante de acuerdo 93 (30.6%) 422 (32.2%) 405 (44.2%) 50 (43.5%)
Muy de acuerdo 32 (10.5%) 184 (14.0%) 206 (22.5%) 17 (14.8%)
Escenario 3, evaluación positiva condicionada:
Nada de acuerdo 51 (16.8%) 234 (17.8%) 206 (22.5%) 24 (20.9%) 0.00761
Poco de acuerdo 99 (32.6%) 458 (34.9%) 347 (37.9%) 43 (37.4%)
Bastante de acuerdo 118 (38.8%) 467 (35.6%) 269 (29.4%) 31 (27.0%)
Muy de acuerdo 36 (11.8%) 152 (11.6%) 94 (10.3%) 17 (14.8%)
Escenario 4: Evaluación positiva sin condiciones
Nada de acuerdo 65 (21.4%) 431 (32.9%) 564 (61.6%) 62 (53.9%) <0.001
Poco de acuerdo 53 (17.4%) 272 (20.7%) 154 (16.8%) 27 (23.5%)
Bastante de acuerdo 91 (29.9%) 290 (22.1%) 102 (11.1%) 12 (10.4%)
Muy de acuerdo 95 (31.2%) 318 (24.3%) 96 (10.5%) 14 (12.2%)
      df1=dfc %>% select(Genero,EtapaAgrupada)
      dfn=df %>% select(Escenario1, Escenario2,Escenario3,Escenario4) %>% bind_cols(df1)
      lalonde=dfn

      rndr3 <- function(x, name, ...) {
        if (length(x) == 0) {
          y <- lalonde[[name]]
          s <- rep("", length(render.default(x=y, name=name, ...)))
          if (is.numeric(y)) {
                p=lm(y ~ EtapaAgrupada,data=lalonde) %>% anova() %>% .[[5]] %>% .[[1]]
            } else {
             p <- chisq.test(table(y, droplevels(lalonde$EtapaAgrupada)))$p.value
          }
          s[2] <- sub("<", "&lt;", format.pval(p, digits=3, eps=0.001))
          s
        } else {
          render.default(x=x, name=name, ...)
        }
      }
      
      rndr.strat3 <- function(label, n, ...) {
        ifelse(n==0, label, render.strat.default(label, n, ...))
      }
      
      
      lalonde$EtapaAgrupada=factor(as.numeric(dfn$EtapaAgrupada),levels=c(1,2,3,4,5),labels=c(levels(dfn$EtapaAgrupada),"p-valor"))
      
      table1( ~ Genero+Escenario1+Escenario2+Escenario3+Escenario4 | EtapaAgrupada,
              data=lalonde, droplevels=F,  render=rndr3, render.strat=rndr.strat3, overall=F
      )
Infantil
(n=304)
Primaria
(n=1311)
Secundaria
(n=916)
Bachillerato
(n=115)
p-valor
Género
Femenino 293 (96.4%) 932 (71.1%) 608 (66.4%) 66 (57.4%) <0.001
Masculino 11 (3.6%) 379 (28.9%) 308 (33.6%) 49 (42.6%)
Escenario 1: la autonomía de los centros:
Mean (SD) 1.94 (0.932) 1.98 (0.980) 2.23 (1.02) 2.37 (1.05) <0.001
Median [Min, Max] 2.00 [1.00, 4.00] 2.00 [1.00, 4.00] 2.00 [1.00, 4.00] 2.00 [1.00, 4.00]
Escenario 2, ajuste del currículo: 
Mean (SD) 2.31 (0.917) 2.42 (0.941) 2.81 (0.876) 2.62 (0.874) <0.001
Median [Min, Max] 2.00 [1.00, 4.00] 2.00 [1.00, 4.00] 3.00 [1.00, 4.00] 3.00 [1.00, 4.00]
Escenario 3, evaluación positiva condicionada:
Mean (SD) 2.46 (0.907) 2.41 (0.912) 2.27 (0.925) 2.36 (0.975) 0.00172
Median [Min, Max] 3.00 [1.00, 4.00] 2.00 [1.00, 4.00] 2.00 [1.00, 4.00] 2.00 [1.00, 4.00]
Escenario 4: Evaluación positiva sin condiciones
Mean (SD) 2.71 (1.12) 2.38 (1.17) 1.71 (1.03) 1.81 (1.05) <0.001
Median [Min, Max] 3.00 [1.00, 4.00] 2.00 [1.00, 4.00] 1.00 [1.00, 4.00] 1.00 [1.00, 4.00]
library(ggmosaic)
dfc %>% pivot_longer(cols=c(-Genero,-EtapaAgrupada))%>% rename(Escenario=name) %>%
  ggplot() +
   geom_mosaic(aes(x = product(value,Escenario), fill=value), na.rm=TRUE) + 
  facet_wrap(~EtapaAgrupada)+
  scale_fill_brewer()

pd <- position_dodge(0.1)
dfn %>% as.data.frame() %>% mutate(Escenario1=as.integer(Escenario1),
                                   Escenario2=as.integer(Escenario2),
                                   Escenario3=as.integer(Escenario3),
                                   Escenario4=as.integer(Escenario4))%>% pivot_longer(cols=c(-Genero,-EtapaAgrupada)) %>% rename(Etapa=EtapaAgrupada) %>%
  rename (Escenario=name) %>%
  mutate(Escenario=str_replace(Escenario,"Escenario","")) %>%
  group_by(Etapa,Escenario) %>% summarise(media=mean(value,na.rm=0),se=sd(value,na.rm=0)/sqrt(n())) %>%
  ungroup() %>% mutate(ci=1*se) %>%
  ggplot(aes(x=Escenario,y=media,colour=Etapa,group=Etapa)) +
  geom_errorbar(aes(ymin=media-ci, ymax=media+ci), colour="#44444488", lty=2, width=.1, position=pd)+
  geom_line(position=pd) +
    geom_point(position=pd, size=3) +
  ylab("Puntuación media")+coord_cartesian(ylim=c(1,4))

pd <- position_dodge(0.1)
dfn %>% as.data.frame() %>% mutate(Escenario1=as.integer(Escenario1),
                                   Escenario2=as.integer(Escenario2),
                                   Escenario3=as.integer(Escenario3),
                                   Escenario4=as.integer(Escenario4))%>% pivot_longer(cols=c(-Genero,-EtapaAgrupada)) %>% rename(Etapa=EtapaAgrupada) %>%
  rename (Escenario=name) %>%
  mutate(Escenario=str_replace(Escenario,"Escenario","")) %>%
  group_by(Etapa,Escenario) %>% summarise(media=mean(value,na.rm=0),se=sd(value,na.rm=0)/sqrt(n())) %>%
  ungroup() %>% mutate(ci=1*se) %>%
  ggplot(aes(x=Escenario,y=media,colour=Etapa,group=Etapa)) +
  geom_errorbar(aes(ymin=media-ci, ymax=media+ci), colour="#44444488", lty=2, width=.1, position=pd)+
  geom_line(position=pd) +
    geom_point(position=pd, size=3) +
  ylab("Puntuación media")+coord_cartesian(ylim=c(1,4))+facet_wrap(~Etapa)

pd <- position_dodge(0.1)
df2= dfn %>% as.data.frame() %>% mutate(Escenario1=as.integer(Escenario1),
                                   Escenario2=as.integer(Escenario2),
                                   Escenario3=as.integer(Escenario3),
                                   Escenario4=as.integer(Escenario4))%>% pivot_longer(cols=c(-Genero,-EtapaAgrupada)) %>% rename(Etapa=EtapaAgrupada) %>%
rename (Escenario=name) %>%
  mutate(Escenario=as.integer(str_replace(Escenario,"Escenario","")))
df2 %>%
  ggplot(aes(x=Escenario,y=value,colour=Etapa,group=Etapa)) +
  geom_smooth(method="lm",formula = y ~ splines::bs(x, 0),lwd=3)+
  geom_jitter(alpha=0.2)+
  ylab("Grado de acuerdo")+coord_cartesian(ylim=c(0.5,4.5))+
  facet_wrap(~Etapa)+
   scale_x_continuous(breaks=c(1,2,3,4),
        labels=c("Escenario 1:\nautonomía de\nlos centros", "Escenario 2:\nAjuste currículo", "Escenario 3:\nEv. positiva\ncondicionada","Escenario 4:\nEv.positiva\nsin condiciones"))+
     scale_y_continuous(breaks=c(1,2,3,4),
        labels=c("Nada", "Poco", "Bastante","Mucho"))
## Warning in splines::bs(x, 0): 'df' was too small; have used 3

## Warning in splines::bs(x, 0): 'df' was too small; have used 3

## Warning in splines::bs(x, 0): 'df' was too small; have used 3

## Warning in splines::bs(x, 0): 'df' was too small; have used 3