Organizando os dados para 2011

Eu fiz algumas escolhas aqui

sf::sf_use_s2(FALSE)

biomes_br %>%
  filter(name_biome == "Caatinga") -> biomes_caat

mun_brasil[biomes_caat,] -> mun_cat #Brazilian municipaities with caatinga forest

as.factor(mun_cat$code_muni)-> mun_cat$code_muni

censo_escolar %>%
  mutate(across(.cols = c(2:10), .fns = as.factor)) %>%
  right_join(y = mun_cat, by = c("id_municipio" = "code_muni", "sigla_uf"="abbrev_state")) %>% 
  filter(ano=="2011") %>% # retirando a pandemia
  filter(tipo_localizacao=="2") %>% #escola rural
  filter(tipo_situacao_funcionamento=="1") %>% 
  filter(rede!="4") %>% 
  select(2:10, local_funcionamento_predio_escolar, agua_filtrada, agua_inexistente,
           energia_inexistente, esgoto_inexistente, banheiro_fora_predio, banheiro_dentro_predio,
           banheiro_educacao_infantil, banheiro_pne, bercario, biblioteca, 
           cozinha, laboratorio_ciencias, laboratorio_informatica, 
           parque_infantil, quadra_esportes, sala_diretoria, sala_professor, sala_atendimento_especial,
           dependencia_pne, equipamento_computador, equipamento_copiadora,
           equipamento_impressora, equipamento_dvd,equipamento_tv,
           internet, alimentacao, -tipo_categoria_escola_privada,
           etapa_ensino_infantil_creche, etapa_ensino_fundamental, etapa_ensino_medio) %>% 
  #filter(is.na(etapa_ensino_infantil_creche)) %>% glimpse #59 rows are NA and there NA in both F and M
  drop_na() %>% 
  dplyr::select(4, 9:38) %>% 
  mutate( banheiro_full=case_when(
    banheiro_fora_predio==1 ~ 1,
    banheiro_dentro_predio == 1 ~ 1,
    banheiro_fora_predio==0 & banheiro_dentro_predio == 0 ~ 0,
    banheiro_fora_predio==0 & banheiro_dentro_predio == 1 ~ 1,
    banheiro_fora_predio==1 & banheiro_dentro_predio == 0 ~ 1,
  ),
  levels_schools=case_when(
    etapa_ensino_infantil_creche==1 & etapa_ensino_fundamental==0 & etapa_ensino_medio==0 ~ "inf",
    etapa_ensino_infantil_creche==0 & etapa_ensino_fundamental==1 & etapa_ensino_medio==0 ~ "school_F",
    etapa_ensino_infantil_creche==0 & etapa_ensino_fundamental==0 & etapa_ensino_medio==1 ~ "school_M",
    etapa_ensino_infantil_creche==1 & etapa_ensino_fundamental==1 & etapa_ensino_medio==0 ~ "inf_F",
    etapa_ensino_infantil_creche==1 & etapa_ensino_fundamental==0 & etapa_ensino_medio==1 ~ "inf_M",
    etapa_ensino_infantil_creche==0 & etapa_ensino_fundamental==1 & etapa_ensino_medio==1 ~ "F_M",
    etapa_ensino_infantil_creche==1 & etapa_ensino_fundamental==1 & etapa_ensino_medio==1 ~ "inf_F_M",
    etapa_ensino_infantil_creche==0 & etapa_ensino_fundamental==0 & etapa_ensino_medio==0 ~ "only_0"
  ),
  to_group=case_when(
    levels_schools=="inf" ~ "c_ber",
    levels_schools=="school_F" ~ "s_ber",
    levels_schools=="school_M" ~ "s_ber",
    levels_schools=="inf_F" ~ "c_ber",
    levels_schools=="inf_M" ~ "c_ber",
    levels_schools=="F_M" ~ "s_ber",
    levels_schools=="inf_F_M" ~ "c_ber",
    levels_schools=="only_0" ~ "only_0",
  ),
  across(.cols=c(levels_schools, to_group), .fns=as.factor)) %>% 
  dplyr::select(-etapa_ensino_infantil_creche, -etapa_ensino_fundamental, -etapa_ensino_medio,
                -banheiro_fora_predio, -banheiro_dentro_predio) %>% 
  group_by(to_group, .add = TRUE) %>% 
  #summarise(fre1=sum(length(id_escola)))
  group_split()->data_list

data_list[[1]] %>% # com coluna berçario
  dplyr::select(id_escola, levels_schools, everything(), -to_group) %>% 
  glimpse ->infantil_schools
## Rows: 5,253
## Columns: 28
## $ id_escola                          <fct> 24043320, 24017892, 26066971, 22079…
## $ levels_schools                     <fct> inf_F, inf, inf_F, inf_F, inf_F, in…
## $ local_funcionamento_predio_escolar <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
## $ agua_filtrada                      <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
## $ agua_inexistente                   <int> 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ energia_inexistente                <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ esgoto_inexistente                 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ banheiro_educacao_infantil         <int> 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ banheiro_pne                       <int> 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,…
## $ bercario                           <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ biblioteca                         <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ cozinha                            <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
## $ laboratorio_ciencias               <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ laboratorio_informatica            <int> 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0,…
## $ parque_infantil                    <int> 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,…
## $ quadra_esportes                    <int> 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,…
## $ sala_diretoria                     <int> 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1,…
## $ sala_professor                     <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,…
## $ sala_atendimento_especial          <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ dependencia_pne                    <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ equipamento_computador             <int> 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0,…
## $ equipamento_copiadora              <int> 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,…
## $ equipamento_impressora             <int> 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0,…
## $ equipamento_dvd                    <int> 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0,…
## $ equipamento_tv                     <int> 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0,…
## $ internet                           <int> 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,…
## $ alimentacao                        <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
## $ banheiro_full                      <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
data_list[[2]] %>% # escolas que irei excluir
  glimpse
## Rows: 580
## Columns: 29
## $ id_escola                          <fct> 22014594, 25050516, 22049282, 29444…
## $ local_funcionamento_predio_escolar <int> 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1,…
## $ agua_filtrada                      <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
## $ agua_inexistente                   <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ energia_inexistente                <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ esgoto_inexistente                 <int> 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ banheiro_educacao_infantil         <int> 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,…
## $ banheiro_pne                       <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ bercario                           <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ biblioteca                         <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ cozinha                            <int> 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,…
## $ laboratorio_ciencias               <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ laboratorio_informatica            <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ parque_infantil                    <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ quadra_esportes                    <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,…
## $ sala_diretoria                     <int> 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0,…
## $ sala_professor                     <int> 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0,…
## $ sala_atendimento_especial          <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ dependencia_pne                    <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ equipamento_computador             <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ equipamento_copiadora              <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ equipamento_impressora             <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ equipamento_dvd                    <int> 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0,…
## $ equipamento_tv                     <int> 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0,…
## $ internet                           <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ alimentacao                        <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
## $ banheiro_full                      <dbl> 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1,…
## $ levels_schools                     <fct> only_0, only_0, only_0, only_0, onl…
## $ to_group                           <fct> only_0, only_0, only_0, only_0, onl…
data_list[[3]] %>% # escolas que posso retirar a coluna berçario
  dplyr::select(id_escola, levels_schools, everything(),
                -parque_infantil, -bercario, -banheiro_educacao_infantil, -to_group) %>%
  glimpse->F_M_schools
## Rows: 20,775
## Columns: 25
## $ id_escola                          <fct> 22111018, 25043048, 25047809, 22138…
## $ levels_schools                     <fct> school_F, school_F, school_F, schoo…
## $ local_funcionamento_predio_escolar <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,…
## $ agua_filtrada                      <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
## $ agua_inexistente                   <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,…
## $ energia_inexistente                <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,…
## $ esgoto_inexistente                 <int> 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1,…
## $ banheiro_pne                       <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ biblioteca                         <int> 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,…
## $ cozinha                            <int> 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,…
## $ laboratorio_ciencias               <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ laboratorio_informatica            <int> 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0,…
## $ quadra_esportes                    <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ sala_diretoria                     <int> 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0,…
## $ sala_professor                     <int> 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,…
## $ sala_atendimento_especial          <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ dependencia_pne                    <int> 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,…
## $ equipamento_computador             <int> 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0,…
## $ equipamento_copiadora              <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ equipamento_impressora             <int> 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0,…
## $ equipamento_dvd                    <int> 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0,…
## $ equipamento_tv                     <int> 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0,…
## $ internet                           <int> 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0,…
## $ alimentacao                        <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
## $ banheiro_full                      <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,…

Como a ideia aqui é repetir exatamente o que o Soares fez, eu utilizei as variáveis de matrícula como uma forma de separar as escolas quanto aos seus níveis (infantil, fundamental e médio). NO entanto, descobri que existem escolas onde nessas três categorias o valor é 0:

etapa_ensino_infantil_creche==0 & etapa_ensino_fundamental==0 & etapa_ensino_medio==0 ~ "only_0"

Ao todo, dá um valor menor que 600 escolas. Então eu resolvi removê-las. Essas escolas são provavelmente, escolas profissionalizantes , EJA, etc.

Como Luke sugeriu, eu separei as escolas em infantil e Fundamental/Médio. Os valores eram, respectivamente, 5253 e 20775 escolas. E rodei um modelo irt de 2 parametros para cada um desses grupos.

2pl irt model for the “infantil” schools (2011)

Comecei retirando a variável alimentação, uma vez que ela não apresenta variação (todas as escolas tem uma mesma resposta já que são públicas).

infantil_schools %>%
  select(-alimentacao) %>% glimpse->infantil_schools
## Rows: 5,253
## Columns: 27
## $ id_escola                          <fct> 24043320, 24017892, 26066971, 22079…
## $ levels_schools                     <fct> inf_F, inf, inf_F, inf_F, inf_F, in…
## $ local_funcionamento_predio_escolar <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
## $ agua_filtrada                      <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
## $ agua_inexistente                   <int> 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ energia_inexistente                <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ esgoto_inexistente                 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ banheiro_educacao_infantil         <int> 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ banheiro_pne                       <int> 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,…
## $ bercario                           <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ biblioteca                         <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ cozinha                            <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
## $ laboratorio_ciencias               <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ laboratorio_informatica            <int> 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0,…
## $ parque_infantil                    <int> 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,…
## $ quadra_esportes                    <int> 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,…
## $ sala_diretoria                     <int> 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1,…
## $ sala_professor                     <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,…
## $ sala_atendimento_especial          <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ dependencia_pne                    <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ equipamento_computador             <int> 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0,…
## $ equipamento_copiadora              <int> 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,…
## $ equipamento_impressora             <int> 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0,…
## $ equipamento_dvd                    <int> 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0,…
## $ equipamento_tv                     <int> 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0,…
## $ internet                           <int> 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,…
## $ banheiro_full                      <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…

m_2pl_infantil_schools <- mirt(infantil_schools[,c(-1:-2)], 1, itemtype = "2PL", verbose = T) 
## 
Iteration: 1, Log-Lik: -37741.553, Max-Change: 2.41415
Iteration: 2, Log-Lik: -34776.486, Max-Change: 1.22362
Iteration: 3, Log-Lik: -34328.465, Max-Change: 0.53468
Iteration: 4, Log-Lik: -34150.003, Max-Change: 0.33718
Iteration: 5, Log-Lik: -34071.177, Max-Change: 0.24990
Iteration: 6, Log-Lik: -34031.219, Max-Change: 0.16330
Iteration: 7, Log-Lik: -34011.606, Max-Change: 0.14091
Iteration: 8, Log-Lik: -34003.457, Max-Change: 0.11953
Iteration: 9, Log-Lik: -33999.070, Max-Change: 0.08688
Iteration: 10, Log-Lik: -33997.370, Max-Change: 0.07381
Iteration: 11, Log-Lik: -33995.102, Max-Change: 0.04304
Iteration: 12, Log-Lik: -33994.077, Max-Change: 0.03673
Iteration: 13, Log-Lik: -33993.607, Max-Change: 0.03048
Iteration: 14, Log-Lik: -33993.227, Max-Change: 0.02031
Iteration: 15, Log-Lik: -33993.027, Max-Change: 0.01489
Iteration: 16, Log-Lik: -33992.824, Max-Change: 0.00745
Iteration: 17, Log-Lik: -33992.800, Max-Change: 0.00597
Iteration: 18, Log-Lik: -33992.781, Max-Change: 0.00383
Iteration: 19, Log-Lik: -33992.765, Max-Change: 0.00140
Iteration: 20, Log-Lik: -33992.758, Max-Change: 0.00128
Iteration: 21, Log-Lik: -33992.753, Max-Change: 0.00117
Iteration: 22, Log-Lik: -33992.738, Max-Change: 0.00033
Iteration: 23, Log-Lik: -33992.738, Max-Change: 0.00030
Iteration: 24, Log-Lik: -33992.737, Max-Change: 0.00027
Iteration: 25, Log-Lik: -33992.737, Max-Change: 0.00026
Iteration: 26, Log-Lik: -33992.736, Max-Change: 0.00130
Iteration: 27, Log-Lik: -33992.735, Max-Change: 0.00059
Iteration: 28, Log-Lik: -33992.735, Max-Change: 0.00028
Iteration: 29, Log-Lik: -33992.735, Max-Change: 0.00024
Iteration: 30, Log-Lik: -33992.735, Max-Change: 0.00117
Iteration: 31, Log-Lik: -33992.734, Max-Change: 0.00064
Iteration: 32, Log-Lik: -33992.734, Max-Change: 0.00031
Iteration: 33, Log-Lik: -33992.734, Max-Change: 0.00021
Iteration: 34, Log-Lik: -33992.734, Max-Change: 0.00103
Iteration: 35, Log-Lik: -33992.734, Max-Change: 0.00096
Iteration: 36, Log-Lik: -33992.733, Max-Change: 0.00090
Iteration: 37, Log-Lik: -33992.733, Max-Change: 0.00091
Iteration: 38, Log-Lik: -33992.732, Max-Change: 0.00066
Iteration: 39, Log-Lik: -33992.732, Max-Change: 0.00035
Iteration: 40, Log-Lik: -33992.732, Max-Change: 0.00017
Iteration: 41, Log-Lik: -33992.732, Max-Change: 0.00067
Iteration: 42, Log-Lik: -33992.732, Max-Change: 0.00039
Iteration: 43, Log-Lik: -33992.732, Max-Change: 0.00016
Iteration: 44, Log-Lik: -33992.732, Max-Change: 0.00062
Iteration: 45, Log-Lik: -33992.732, Max-Change: 0.00048
Iteration: 46, Log-Lik: -33992.732, Max-Change: 0.00014
Iteration: 47, Log-Lik: -33992.732, Max-Change: 0.00012
Iteration: 48, Log-Lik: -33992.732, Max-Change: 0.00057
Iteration: 49, Log-Lik: -33992.732, Max-Change: 0.00028
Iteration: 50, Log-Lik: -33992.732, Max-Change: 0.00013
Iteration: 51, Log-Lik: -33992.732, Max-Change: 0.00010
Iteration: 52, Log-Lik: -33992.732, Max-Change: 0.00052
Iteration: 53, Log-Lik: -33992.731, Max-Change: 0.00049
Iteration: 54, Log-Lik: -33992.731, Max-Change: 0.00010

M2(m_2pl_infantil_schools) 
##             M2  df p      RMSEA   RMSEA_5  RMSEA_95      SRMSR       TLI
## stats 5736.199 275 0 0.06149153 0.0601054 0.0628766 0.04907296 0.8586996
##             CFI
## stats 0.8704746

A função M2 calcula o quanto o modelo se adapta aos dados por meio de vários índices diferentes. De maneira muito simples:

Assim, de modo geral, podemos considerar que o modelo tá ruim. Quase nenhum critério é atendido. Para entender melhor o que tá causando isso, eu tentei avaliar os itens (variáveis) que estão sendo usados.

Avaliando os itens

Isso pode ser feito de várias formas também. Aqui optei por usar todas que eu conhecia, começando pela análise de fator das variáveis (summary), e depois calculandos os valores de RMSEA para cada uma delas (itemfit). Por fim, também determinei a descriminação e dificuldades dos itens (coef).

summary(m_2pl_infantil_schools) # should be >50
##                                         F1      h2
## local_funcionamento_predio_escolar  0.5107 0.26083
## agua_filtrada                      -0.1112 0.01237
## agua_inexistente                   -0.2729 0.07446
## energia_inexistente                -0.6939 0.48154
## esgoto_inexistente                 -0.6018 0.36217
## banheiro_educacao_infantil          0.4061 0.16494
## banheiro_pne                        0.6474 0.41908
## bercario                            0.0897 0.00804
## biblioteca                          0.5689 0.32369
## cozinha                             0.5768 0.33275
## laboratorio_ciencias                0.6707 0.44988
## laboratorio_informatica             0.7983 0.63725
## parque_infantil                     0.4231 0.17900
## quadra_esportes                     0.7162 0.51300
## sala_diretoria                      0.6672 0.44518
## sala_professor                      0.5246 0.27516
## sala_atendimento_especial           0.7581 0.57475
## dependencia_pne                     0.5477 0.29998
## equipamento_computador              0.9069 0.82249
## equipamento_copiadora               0.6651 0.44232
## equipamento_impressora              0.9144 0.83608
## equipamento_dvd                     0.8933 0.79793
## equipamento_tv                      0.9204 0.84713
## internet                            0.8444 0.71297
## banheiro_full                       0.6845 0.46857
## 
## SS loadings:  10.742 
## Proportion Var:  0.43 
## 
## Factor correlations: 
## 
##    F1
## F1  1

itemfit(m_2pl_infantil_schools)
##                                  item    S_X2 df.S_X2 RMSEA.S_X2 p.S_X2
## 1  local_funcionamento_predio_escolar  41.850      10      0.025  0.000
## 2                       agua_filtrada  23.255      14      0.011  0.056
## 3                    agua_inexistente  56.526      13      0.025  0.000
## 4                 energia_inexistente  19.704       8      0.017  0.012
## 5                  esgoto_inexistente  43.432       9      0.027  0.000
## 6          banheiro_educacao_infantil  48.346      13      0.023  0.000
## 7                        banheiro_pne  16.290      12      0.008  0.178
## 8                            bercario  28.863      11      0.018  0.002
## 9                          biblioteca  59.590      12      0.027  0.000
## 10                            cozinha  23.550       9      0.018  0.005
## 11               laboratorio_ciencias   0.088       2      0.000  0.957
## 12            laboratorio_informatica 120.552      10      0.046  0.000
## 13                    parque_infantil  17.378      13      0.008  0.183
## 14                    quadra_esportes  24.339      11      0.015  0.011
## 15                     sala_diretoria  35.648      11      0.021  0.000
## 16                     sala_professor  56.990      12      0.027  0.000
## 17          sala_atendimento_especial  17.005      10      0.012  0.074
## 18                    dependencia_pne  47.701      13      0.023  0.000
## 19             equipamento_computador  34.090       8      0.025  0.000
## 20              equipamento_copiadora  29.573      12      0.017  0.003
## 21             equipamento_impressora  36.949       8      0.026  0.000
## 22                    equipamento_dvd  67.367       7      0.041  0.000
## 23                     equipamento_tv  37.404       7      0.029  0.000
## 24                           internet  77.968      10      0.036  0.000
## 25                      banheiro_full  48.688       8      0.031  0.000

params2PL_inf_schools <- coef(m_2pl_infantil_schools, IRTpars = TRUE, simplify = TRUE)
round(params2PL_inf_schools$items, 2)
##                                        a     b g u
## local_funcionamento_predio_escolar  1.01 -3.36 0 1
## agua_filtrada                      -0.19 14.80 0 1
## agua_inexistente                   -0.48 -4.77 0 1
## energia_inexistente                -1.64 -2.93 0 1
## esgoto_inexistente                 -1.28 -3.23 0 1
## banheiro_educacao_infantil          0.76  3.45 0 1
## banheiro_pne                        1.45  2.89 0 1
## bercario                            0.15 28.97 0 1
## biblioteca                          1.18  2.14 0 1
## cozinha                             1.20 -3.28 0 1
## laboratorio_ciencias                1.54  5.25 0 1
## laboratorio_informatica             2.26  0.77 0 1
## parque_infantil                     0.79  4.11 0 1
## quadra_esportes                     1.75  2.23 0 1
## sala_diretoria                      1.52  0.10 0 1
## sala_professor                      1.05  1.85 0 1
## sala_atendimento_especial           1.98  2.70 0 1
## dependencia_pne                     1.11  3.09 0 1
## equipamento_computador              3.66  0.16 0 1
## equipamento_copiadora               1.52  1.81 0 1
## equipamento_impressora              3.84  0.35 0 1
## equipamento_dvd                     3.38 -0.11 0 1
## equipamento_tv                      4.01 -0.22 0 1
## internet                            2.68  1.66 0 1
## banheiro_full                       1.60 -2.95 0 1

A análise de fator mostra os valores de F1 e h2. F1 indica o quanto cada item é relacionado com a variável latente (acima de 0.5 é bom). E h2 mostra a propoção que a variável explica da variável latente. Em nosso caso, os itens: agua_filtrada, agua_inexistente, banheiro_educacao_infantil, bercario, parque_infantil apresentam valor abaixo de 0.5. Principalmente, os itens: agua_filtrada, agua_inexistente, bercario, já que eles também tem uma baixíssima variância (h2).

A análise de cada item separadamente mostrou resultados um pouco diferentes. Para essa análise, um item se encaixe bem no modelo se S_X2 e RMSEA.S_X2 forem pequenos (RMSEA.S_X2<0.08 é aceitável) e p.S_X2 não significante (> 0.05). Nossos resultados demonstram que embora todas os nossos valores estejam dentro do RMSEA aceitável, quase nenhuma variável deu não siginificante. Exceto agua_filtrada, banheiro_pne, laboratorio_ciencias, parque_infantil e sala_atendimento_especial todas as outras deram significantes.

Por fim, a última análise foi sobre a discriminação (a) e dificuldade de cada item (b). A discriminação corresponde a capacidade do item de discriminar os indivíduos (escolas) com diferentes níveis do trait (infraestrutura). Enquanto que a dificuldade é onde o item está na escala da variável latente. De maneira mais simples, é a posícção mais informativa do item na escala/curva da variável latente. De maneira geral, baixos valores de a indicam que a variável não contribui muito enquanto que se b for muito discrepante, indica que aquela variável tá puxando a curva para um lado. nossos resultados mostram que os mesmos itens da análise de fator estão com baixa discrminação (agua_filtrada, agua_inexistente, banheiro_educacao_infantil, bercario, parque_infantil). Além disso, agua_filtrada e bercario tem valores exorbitantes de dificuldade.

Com tudo isso, pode ser difícil interpretar qual variável está prejudicando o modelo. A significância do valor de p nesse caso, pode ser devido a i) poucos dados, ii) x2 ser ser sensitivo a misfit local e iii) existência de outros fatores que modificam os itens. Acredito que é mais fácil ter acontecido isso pelas razões i e ii. Mas a terceira opção é válida visto que não controlamos as escolas de acordo com a complexidade.

Refazendo o modelo

infantil_schools %>% 
dplyr::select(-agua_filtrada, -agua_inexistente, -banheiro_educacao_infantil, -bercario,
              -parque_infantil)->reshape_data_inft_schools

m_2pl_infantil_schools_02 <- mirt(reshape_data_inft_schools[,c(-1:-2)], 1, itemtype = "2PL", verbose = T) 
## 
Iteration: 1, Log-Lik: -31678.297, Max-Change: 2.30059
Iteration: 2, Log-Lik: -29206.478, Max-Change: 0.90398
Iteration: 3, Log-Lik: -28805.410, Max-Change: 0.55005
Iteration: 4, Log-Lik: -28626.136, Max-Change: 0.30421
Iteration: 5, Log-Lik: -28554.036, Max-Change: 0.22425
Iteration: 6, Log-Lik: -28517.637, Max-Change: 0.17367
Iteration: 7, Log-Lik: -28499.606, Max-Change: 0.14060
Iteration: 8, Log-Lik: -28491.047, Max-Change: 0.10465
Iteration: 9, Log-Lik: -28485.966, Max-Change: 0.10356
Iteration: 10, Log-Lik: -28483.367, Max-Change: 0.07208
Iteration: 11, Log-Lik: -28481.713, Max-Change: 0.07018
Iteration: 12, Log-Lik: -28480.877, Max-Change: 0.05012
Iteration: 13, Log-Lik: -28480.303, Max-Change: 0.03593
Iteration: 14, Log-Lik: -28479.956, Max-Change: 0.02989
Iteration: 15, Log-Lik: -28479.749, Max-Change: 0.02174
Iteration: 16, Log-Lik: -28479.500, Max-Change: 0.01261
Iteration: 17, Log-Lik: -28479.469, Max-Change: 0.01069
Iteration: 18, Log-Lik: -28479.445, Max-Change: 0.00930
Iteration: 19, Log-Lik: -28479.376, Max-Change: 0.00114
Iteration: 20, Log-Lik: -28479.373, Max-Change: 0.00034
Iteration: 21, Log-Lik: -28479.373, Max-Change: 0.00163
Iteration: 22, Log-Lik: -28479.372, Max-Change: 0.00036
Iteration: 23, Log-Lik: -28479.372, Max-Change: 0.00028
Iteration: 24, Log-Lik: -28479.372, Max-Change: 0.00137
Iteration: 25, Log-Lik: -28479.371, Max-Change: 0.00074
Iteration: 26, Log-Lik: -28479.371, Max-Change: 0.00037
Iteration: 27, Log-Lik: -28479.371, Max-Change: 0.00021
Iteration: 28, Log-Lik: -28479.371, Max-Change: 0.00104
Iteration: 29, Log-Lik: -28479.371, Max-Change: 0.00020
Iteration: 30, Log-Lik: -28479.371, Max-Change: 0.00088
Iteration: 31, Log-Lik: -28479.370, Max-Change: 0.00073
Iteration: 32, Log-Lik: -28479.370, Max-Change: 0.00037
Iteration: 33, Log-Lik: -28479.370, Max-Change: 0.00019
Iteration: 34, Log-Lik: -28479.370, Max-Change: 0.00075
Iteration: 35, Log-Lik: -28479.370, Max-Change: 0.00033
Iteration: 36, Log-Lik: -28479.370, Max-Change: 0.00017
Iteration: 37, Log-Lik: -28479.370, Max-Change: 0.00069
Iteration: 38, Log-Lik: -28479.370, Max-Change: 0.00030
Iteration: 39, Log-Lik: -28479.370, Max-Change: 0.00015
Iteration: 40, Log-Lik: -28479.370, Max-Change: 0.00063
Iteration: 41, Log-Lik: -28479.370, Max-Change: 0.00027
Iteration: 42, Log-Lik: -28479.369, Max-Change: 0.00013
Iteration: 43, Log-Lik: -28479.369, Max-Change: 0.00057
Iteration: 44, Log-Lik: -28479.369, Max-Change: 0.00023
Iteration: 45, Log-Lik: -28479.369, Max-Change: 0.00012
Iteration: 46, Log-Lik: -28479.369, Max-Change: 0.00052
Iteration: 47, Log-Lik: -28479.369, Max-Change: 0.00019
Iteration: 48, Log-Lik: -28479.369, Max-Change: 0.00010

M2(m_2pl_infantil_schools_02) 
##             M2  df p      RMSEA    RMSEA_5   RMSEA_95      SRMSR       TLI
## stats 4511.782 170 0 0.06973442 0.06797802 0.07149294 0.05297804 0.8768078
##             CFI
## stats 0.8897754

#summary(m_2pl_infantil_schools_02) # should be >50
#itemfit(m_2pl_infantil_schools_02)
#params2PL_inf_schools_02 <- coef(m_2pl_infantil_schools_02, IRTpars = TRUE, simplify = TRUE)
#round(params2PL_inf_schools_02$items, 2)
#personfitPlot(m_2pl_infantil_schools_02)

anova(m_2pl_infantil_schools, m_2pl_infantil_schools_02)
##                                AIC    SABIC       HQ      BIC    logLik
## m_2pl_infantil_schools    68085.46 68254.91 68200.25 68413.79 -33992.73
## m_2pl_infantil_schools_02 57038.74 57174.29 57130.57 57301.40 -28479.37
##                                  X2       df p
## m_2pl_infantil_schools                        
## m_2pl_infantil_schools_02 11026.724 32505846 1

O modelo refeito é melhor, mas sem uma real diferença estatística.

2pl irt model for the “fundamenal” and “médio” schools (2011)

F_M_schools %>%
  select(-alimentacao) %>% 
  glimpse -> F_M_schools
## Rows: 20,775
## Columns: 24
## $ id_escola                          <fct> 22111018, 25043048, 25047809, 22138…
## $ levels_schools                     <fct> school_F, school_F, school_F, schoo…
## $ local_funcionamento_predio_escolar <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,…
## $ agua_filtrada                      <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
## $ agua_inexistente                   <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,…
## $ energia_inexistente                <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,…
## $ esgoto_inexistente                 <int> 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1,…
## $ banheiro_pne                       <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ biblioteca                         <int> 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,…
## $ cozinha                            <int> 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,…
## $ laboratorio_ciencias               <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ laboratorio_informatica            <int> 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0,…
## $ quadra_esportes                    <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ sala_diretoria                     <int> 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0,…
## $ sala_professor                     <int> 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,…
## $ sala_atendimento_especial          <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ dependencia_pne                    <int> 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,…
## $ equipamento_computador             <int> 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0,…
## $ equipamento_copiadora              <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ equipamento_impressora             <int> 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0,…
## $ equipamento_dvd                    <int> 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0,…
## $ equipamento_tv                     <int> 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0,…
## $ internet                           <int> 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0,…
## $ banheiro_full                      <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,…

m_2pl_FM_schools <- mirt(F_M_schools[,c(-1:-2)], 1, itemtype = "2PL", verbose = T) 
## 
Iteration: 1, Log-Lik: -134487.306, Max-Change: 2.64716
Iteration: 2, Log-Lik: -118088.585, Max-Change: 1.06315
Iteration: 3, Log-Lik: -114647.767, Max-Change: 0.70062
Iteration: 4, Log-Lik: -113477.298, Max-Change: 0.81727
Iteration: 5, Log-Lik: -112709.001, Max-Change: 0.45710
Iteration: 6, Log-Lik: -112203.691, Max-Change: 0.26833
Iteration: 7, Log-Lik: -112054.498, Max-Change: 0.15843
Iteration: 8, Log-Lik: -111963.513, Max-Change: 0.16453
Iteration: 9, Log-Lik: -111916.324, Max-Change: 0.08513
Iteration: 10, Log-Lik: -111890.830, Max-Change: 0.06931
Iteration: 11, Log-Lik: -111878.697, Max-Change: 0.08420
Iteration: 12, Log-Lik: -111869.551, Max-Change: 0.04423
Iteration: 13, Log-Lik: -111863.515, Max-Change: 0.04500
Iteration: 14, Log-Lik: -111860.478, Max-Change: 0.02985
Iteration: 15, Log-Lik: -111857.803, Max-Change: 0.02532
Iteration: 16, Log-Lik: -111853.700, Max-Change: 0.01155
Iteration: 17, Log-Lik: -111852.957, Max-Change: 0.00752
Iteration: 18, Log-Lik: -111852.366, Max-Change: 0.00692
Iteration: 19, Log-Lik: -111850.142, Max-Change: 0.00542
Iteration: 20, Log-Lik: -111850.022, Max-Change: 0.00395
Iteration: 21, Log-Lik: -111849.917, Max-Change: 0.00310
Iteration: 22, Log-Lik: -111849.699, Max-Change: 0.00549
Iteration: 23, Log-Lik: -111849.634, Max-Change: 0.00193
Iteration: 24, Log-Lik: -111849.599, Max-Change: 0.00156
Iteration: 25, Log-Lik: -111849.552, Max-Change: 0.00134
Iteration: 26, Log-Lik: -111849.530, Max-Change: 0.00124
Iteration: 27, Log-Lik: -111849.511, Max-Change: 0.00116
Iteration: 28, Log-Lik: -111849.434, Max-Change: 0.00141
Iteration: 29, Log-Lik: -111849.427, Max-Change: 0.00104
Iteration: 30, Log-Lik: -111849.417, Max-Change: 0.00130
Iteration: 31, Log-Lik: -111849.411, Max-Change: 0.00122
Iteration: 32, Log-Lik: -111849.403, Max-Change: 0.00032
Iteration: 33, Log-Lik: -111849.402, Max-Change: 0.00025
Iteration: 34, Log-Lik: -111849.401, Max-Change: 0.00021
Iteration: 35, Log-Lik: -111849.400, Max-Change: 0.00020
Iteration: 36, Log-Lik: -111849.399, Max-Change: 0.00019
Iteration: 37, Log-Lik: -111849.396, Max-Change: 0.00074
Iteration: 38, Log-Lik: -111849.394, Max-Change: 0.00065
Iteration: 39, Log-Lik: -111849.392, Max-Change: 0.00059
Iteration: 40, Log-Lik: -111849.389, Max-Change: 0.00071
Iteration: 41, Log-Lik: -111849.387, Max-Change: 0.00016
Iteration: 42, Log-Lik: -111849.387, Max-Change: 0.00046
Iteration: 43, Log-Lik: -111849.386, Max-Change: 0.00011
Iteration: 44, Log-Lik: -111849.386, Max-Change: 0.00039
Iteration: 45, Log-Lik: -111849.385, Max-Change: 0.00067
Iteration: 46, Log-Lik: -111849.385, Max-Change: 0.00020
Iteration: 47, Log-Lik: -111849.385, Max-Change: 0.00043
Iteration: 48, Log-Lik: -111849.385, Max-Change: 0.00022
Iteration: 49, Log-Lik: -111849.384, Max-Change: 0.00018
Iteration: 50, Log-Lik: -111849.384, Max-Change: 0.00042
Iteration: 51, Log-Lik: -111849.384, Max-Change: 0.00010

M2(m_2pl_FM_schools) 
##             M2  df p      RMSEA    RMSEA_5   RMSEA_95     SRMSR       TLI
## stats 15739.37 209 0 0.05980778 0.05901623 0.06060026 0.0498329 0.9292922
##             CFI
## stats 0.9360263

O TLI, CFI e SRMSR estão bons e o RMSEA está dentro do aceitável.

Avaliando os itens

summary(m_2pl_FM_schools) # should be >50
##                                        F1      h2
## local_funcionamento_predio_escolar  0.724 0.52398
## agua_filtrada                      -0.039 0.00152
## agua_inexistente                   -0.194 0.03772
## energia_inexistente                -0.680 0.46299
## esgoto_inexistente                 -0.718 0.51536
## banheiro_pne                        0.769 0.59072
## biblioteca                          0.776 0.60293
## cozinha                             0.594 0.35285
## laboratorio_ciencias                0.853 0.72713
## laboratorio_informatica             0.862 0.74276
## quadra_esportes                     0.765 0.58570
## sala_diretoria                      0.790 0.62469
## sala_professor                      0.625 0.39034
## sala_atendimento_especial           0.755 0.56989
## dependencia_pne                     0.738 0.54498
## equipamento_computador              0.922 0.85052
## equipamento_copiadora               0.745 0.55500
## equipamento_impressora              0.940 0.88346
## equipamento_dvd                     0.938 0.88003
## equipamento_tv                      0.941 0.88528
## internet                            0.896 0.80279
## banheiro_full                       0.792 0.62783
## 
## SS loadings:  12.758 
## Proportion Var:  0.58 
## 
## Factor correlations: 
## 
##    F1
## F1  1
itemfit(m_2pl_FM_schools)
##                                  item     S_X2 df.S_X2 RMSEA.S_X2 p.S_X2
## 1  local_funcionamento_predio_escolar  244.022       8      0.038  0.000
## 2                       agua_filtrada   71.452      14      0.014  0.000
## 3                    agua_inexistente  161.415      15      0.022  0.000
## 4                 energia_inexistente   50.695      12      0.012  0.000
## 5                  esgoto_inexistente 1040.334      11      0.067  0.000
## 6                        banheiro_pne   32.562      13      0.009  0.002
## 7                          biblioteca   27.214      12      0.008  0.007
## 8                             cozinha  246.288      12      0.031  0.000
## 9                laboratorio_ciencias   22.693       9      0.009  0.007
## 10            laboratorio_informatica  114.026      10      0.022  0.000
## 11                    quadra_esportes   25.179      13      0.007  0.022
## 12                     sala_diretoria  103.687      11      0.020  0.000
## 13                     sala_professor  130.183      13      0.021  0.000
## 14          sala_atendimento_especial   48.893      13      0.012  0.000
## 15                    dependencia_pne   45.371      13      0.011  0.000
## 16             equipamento_computador   90.298       9      0.021  0.000
## 17              equipamento_copiadora   51.427      12      0.013  0.000
## 18             equipamento_impressora   49.855       8      0.016  0.000
## 19                    equipamento_dvd  402.290       8      0.049  0.000
## 20                     equipamento_tv  224.435       8      0.036  0.000
## 21                           internet   71.239      11      0.016  0.000
## 22                      banheiro_full  360.320       8      0.046  0.000
params2PL_FM_schools <- coef(m_2pl_FM_schools, IRTpars = TRUE, simplify = TRUE)
round(params2PL_FM_schools$items, 2)
##                                        a     b g u
## local_funcionamento_predio_escolar  1.79 -2.50 0 1
## agua_filtrada                      -0.07 42.67 0 1
## agua_inexistente                   -0.34 -5.04 0 1
## energia_inexistente                -1.58 -1.79 0 1
## esgoto_inexistente                 -1.76 -2.03 0 1
## banheiro_pne                        2.04  2.62 0 1
## biblioteca                          2.10  1.93 0 1
## cozinha                             1.26 -2.09 0 1
## laboratorio_ciencias                2.78  3.23 0 1
## laboratorio_informatica             2.89  1.19 0 1
## quadra_esportes                     2.02  2.45 0 1
## sala_diretoria                      2.20  0.67 0 1
## sala_professor                      1.36  1.63 0 1
## sala_atendimento_especial           1.96  3.07 0 1
## dependencia_pne                     1.86  2.73 0 1
## equipamento_computador              4.06  0.60 0 1
## equipamento_copiadora               1.90  2.04 0 1
## equipamento_impressora              4.69  0.76 0 1
## equipamento_dvd                     4.61  0.44 0 1
## equipamento_tv                      4.73  0.34 0 1
## internet                            3.43  1.68 0 1
## banheiro_full                       2.21 -2.06 0 1

A análise de fator e a discriminação deram bons resultados para todos os itens. O X2 deu bastante alto. Bastante mesmo. E nenhum item foi não significativo, de modo que tivemos o mesmo problema.

Avaliando os individuos

Essa é a parte que mais importa. É definitivamente, a infraestrutura das escolas.

ind_ability_2pl_FM<-personfit(m_2pl_FM_schools) 
ind_ability_2pl_FM %>% 
  glimpse()
## Rows: 20,775
## Columns: 5
## $ outfit   <dbl> 0.0394305, 1.2637153, 0.7351119, 0.0394305, 0.7220451, 0.3744…
## $ z.outfit <dbl> -0.92791190, 0.64353165, 0.26458664, -0.92791190, 0.25317505,…
## $ infit    <dbl> 0.1045913, 1.9187621, 1.5089868, 0.1045913, 1.3225306, 1.0646…
## $ z.infit  <dbl> -1.3291368, 1.1559920, 1.2163528, -1.3291368, 0.8727072, 0.34…
## $ Zh       <dbl> 0.85401298, -1.05497940, -0.74765176, 0.85401298, -0.59632189…

personfitPlot(m_2pl_FM_schools)


plot_histogram(ind_ability_2pl_FM$Zh)

A abilidade do indivíduo é traduzida em três medidas: z.outfit, z.infit e zh. Outfit é quando a abilidade é estimada sendo sensível a respostas sem padrões. Infit é quando a abilidade é estimada e não é sensível a alterações de padrões. E zh é a escala de infraestrutura escolar, propriamente falando.

De maneira geral, a primeira imagem mostra que a maioria da “abilidade” das escolas foram capturadas pelo modelo. No entanto, é importante a gente o segundo gráfico para notar que existem escolas com uma infraestrutura muito negativa. Isso pode significar realmente, a inexistência de infraestrutura. Mas também, pode ser devido a ausência de algumas respostas a itens específicos que tenham uma discriminação muito forte. Assim, antes de poder usar a escalaa, precisamos identificar melhor esses pontos.

Rascunho

Criando o indíce de infraestutura

#```{r, warning=FALSE, message=FALSE, collapse=TRUE, fig.align=‘center’, fig.dim=c(10,10)} personfit(m_2pl_infantil_schools_02) %>% dplyr::select(Zh) %>% glimpse->zh_inf_2011

zh_inf_2011_rescaled = 50 + ((zh_inf_2011\(Zh - median(zh_inf_2011\)Zh)) / sd(zh_inf_2011$Zh)) * 10

plot_histogram(zh_inf_2011_rescaled)

infantil_schools %>% dplyr::select(-agua_filtrada, -agua_inexistente, -banheiro_educacao_infantil, -bercario, -parque_infantil) %>% cbind(zh_inf_2011_rescaled) %>% rename(“zh”=zh_inf_2011_rescaled) %>% glimpse->inf_infra_index

summary(inf_infra_index)

devtools::install_github(“pmcharrison/psychTestR”) library(psychTestR)

seq(from = -18.85, to = 57.03, by = 4.0)->t1

information <- psychTestR::info(m_2pl_infantil_schools_02, theta = t1)

plot(trait_values, information, type = “l”, xlab = “Latent Trait”, ylab = “Test Information”, main = “Test Information Curve”)

personfit(m_2pl_FM_schools) %>% dplyr::select(Zh) %>% glimpse->zh_FM_2011

zh_FM_2011_rescaled = 50 + ((zh_FM_2011\(Zh - median(zh_FM_2011\)Zh)) / sd(zh_FM_2011$Zh)) * 10

plot_histogram(zh_FM_2011_rescaled)

F_M_schools %>% cbind(zh_FM_2011_rescaled) %>% rename(“zh”=zh_FM_2011_rescaled) %>% glimpse

#```

Tentanto colocar um agrupamento

Antes de comparar com 2019, acho que seria exramemente interessante rodar o modelo completo usando a complexidade. Tentei realizar essas análises não com a complexidade escolar em si, mas com quantidade de níveis que a escola tem. Segue abaixo

#```{r, warning=FALSE, message=FALSE, collapse=TRUE} library(lordif)

infantil_schools %>% group_by(levels_schools) %>% summarise(sum(length(id_escola))) glimpse levels(infantil_schools$levels_schools)

infantil_schools %>% mutate(levels_schools=as.character(levels_schools), levels_schools=as.factor(levels_schools))->teste1

levels(teste1$levels_schools)

dif_try01<- lordif(m_2pl_infantil_schools, teste1$levels_schools)

m_2pl_infantil_schools_03 <- mirt(teste1[,c(-1:-2)], 1, itemtype = “2PL”, verbose = T, group = “levels_schools”)

#```