Modelos Hierárquicos - Lab 1

1 Preparação

load("C:/Users/raphael.fernandez/Downloads/ArquivoProvaBR2007trab.RData")
data=dadosap
attach(data)

2 Analise inicial

str(data)
## 'data.frame':    26097 obs. of  29 variables:
##  $ id_aluno          : chr  " 679298" " 679298" " 679298" " 679299" ...
##  $ id_turma          : chr  "RJ01697" "RJ01697" "RJ01697" "RJ01697" ...
##  $ id_serie          : chr  "8" "8" "8" "8" ...
##  $ pk_cod_entidade   : chr  "3307633" "3307633" "3307633" "3307633" ...
##  $ id_dependencia_adm: chr  "3" "3" "3" "3" ...
##  $ id_localizacao    : chr  "1" "1" "1" "1" ...
##  $ sigla_uf          : chr  "RJ" "RJ" "RJ" "RJ" ...
##  $ cod_uf            : chr  "33" "33" "33" "33" ...
##  $ no_municipio      : chr  "RIO DE JANEIRO" "RIO DE JANEIRO" "RIO DE JANEIRO" "RIO DE JANEIRO" ...
##  $ cod_municipio     : chr  "3304557" "3304557" "3304557" "3304557" ...
##  $ y1                : num  150 260 172 155 140 ...
##  $ y2                : num  194 230 174 152 223 ...
##  $ AcertosLP         : int  4 14 6 8 2 4 4 5 4 9 ...
##  $ AcertosM          : int  4 8 4 5 9 9 6 3 4 4 ...
##  $ N_alu_pop         : int  35 35 35 35 35 35 35 35 35 35 ...
##  $ qst1sexo          : Factor w/ 2 levels "Feminin","Masculi": 2 1 2 1 1 1 1 1 1 2 ...
##  $ qst2raca          : Factor w/ 5 levels "AM","Br","IN",..: 5 5 2 3 3 5 5 5 2 2 ...
##  $ qst17numpess      : Factor w/ 6 levels ">8","m1","m2",..: 5 2 4 6 5 6 5 5 5 5 ...
##  $ qst18moramae      : Factor w/ 3 levels "Não","Não outra",..: 3 3 3 3 1 3 3 3 3 3 ...
##  $ qst19educmae      : Factor w/ 6 levels "11a14","15m",..: 3 3 1 3 6 3 1 5 3 6 ...
##  $ qst22morapai      : Factor w/ 3 levels "Não","Não outra",..: 1 2 3 1 3 3 3 3 3 3 ...
##  $ qst23educpai      : Factor w/ 6 levels "11a14","15m",..: 3 6 1 6 6 5 1 4 3 6 ...
##  $ qst35trabfora     : Factor w/ 2 levels "Não","Sim": 1 1 1 1 1 1 1 1 1 1 ...
##  $ qst38reprov       : Factor w/ 3 levels "Não","Sim 1vez",..: 1 2 1 1 1 2 2 1 1 1 ...
##  $ qst39abando       : Factor w/ 3 levels "Não","Sim 1vez",..: 3 1 1 1 1 1 1 1 1 1 ...
##  $ r16conspatio      : Factor w/ 4 levels "Adequado","Inadequad",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ r36ncompesc       : Factor w/ 6 levels "11a15","16a20",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ r52conscomp       : Factor w/ 3 levels "Bom","Regular",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ r58percbiblio     : Factor w/ 5 levels "Até 25","De26a50",..: 4 4 4 4 4 4 4 4 4 4 ...
##  - attr(*, "datalabel")= chr ""
##  - attr(*, "time.stamp")= chr " 5 Oct 2017 19:24"
##  - attr(*, "formats")= chr  "%9s" "%7s" "%1s" "%9s" ...
##  - attr(*, "types")= int  7 7 1 7 1 1 2 2 14 7 ...
##  - attr(*, "val.labels")= chr  "" "" "" "" ...
##  - attr(*, "var.labels")= chr  "código do aluno na prova brasil" "código da turma na prova brasil" "código da série" "código da escola" ...
##  - attr(*, "version")= int 12
##  - attr(*, "label.table")=List of 14
##   ..$ r58percbiblio: Named int  1 2 3 4 5
##   .. ..- attr(*, "names")= chr  "Até 25" "De26a50" "De51a75" "Mais75" ...
##   ..$ r52conscomp  : Named int  1 2 3
##   .. ..- attr(*, "names")= chr  "Bom" "Regular" "Ruim"
##   ..$ r36ncompesc  : Named int  1 2 3 4 5 6
##   .. ..- attr(*, "names")= chr  "11a15" "16a20" "1a5" "21a30" ...
##   ..$ r16conspatio : Named int  1 2 3 4
##   .. ..- attr(*, "names")= chr  "Adequado" "Inadequad" "Inexisten" "Regular"
##   ..$ qst39abando  : Named int  1 2 3
##   .. ..- attr(*, "names")= chr  "Não" "Sim 1vez" "Sim duas"
##   ..$ qst38reprov  : Named int  1 2 3
##   .. ..- attr(*, "names")= chr  "Não" "Sim 1vez" "Sim duas"
##   ..$ qst35trabfora: Named int  1 2
##   .. ..- attr(*, "names")= chr  "Não" "Sim"
##   ..$ qst23educpai : Named int  1 2 3 4 5 6
##   .. ..- attr(*, "names")= chr  "11a14" "15m" "4a7" "8a10" ...
##   ..$ qst22morapai : Named int  1 2 3
##   .. ..- attr(*, "names")= chr  "Não" "Não outra" "Sim"
##   ..$ qst19educmae : Named int  1 2 3 4 5 6
##   .. ..- attr(*, "names")= chr  "11a14" "15m" "4ª7" "8a10" ...
##   ..$ qst18moramae : Named int  1 2 3
##   .. ..- attr(*, "names")= chr  "Não" "Não outra" "Sim"
##   ..$ qst17numpess : Named int  1 2 3 4 5 6
##   .. ..- attr(*, "names")= chr  ">8" "m1" "m2" "m3" ...
##   ..$ qst2raca     : Named int  1 2 3 4 5
##   .. ..- attr(*, "names")= chr  "AM" "Br" "IN" "PR" ...
##   ..$ qst1sexo     : Named int  1 2
##   .. ..- attr(*, "names")= chr  "Feminin" "Masculi"
summary(data)
##    id_aluno           id_turma           id_serie        
##  Length:26097       Length:26097       Length:26097      
##  Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character  
##                                                          
##                                                          
##                                                          
##  pk_cod_entidade    id_dependencia_adm id_localizacao    
##  Length:26097       Length:26097       Length:26097      
##  Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character  
##                                                          
##                                                          
##                                                          
##    sigla_uf            cod_uf          no_municipio      
##  Length:26097       Length:26097       Length:26097      
##  Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character  
##                                                          
##                                                          
##                                                          
##  cod_municipio            y1              y2          AcertosLP    
##  Length:26097       Min.   :112.9   Min.   :138.7   Min.   : 1.00  
##  Class :character   1st Qu.:205.8   1st Qu.:213.2   1st Qu.: 9.00  
##  Mode  :character   Median :238.5   Median :242.8   Median :13.00  
##                     Mean   :238.6   Mean   :246.5   Mean   :12.81  
##                     3rd Qu.:270.8   3rd Qu.:276.4   3rd Qu.:16.00  
##                     Max.   :386.2   Max.   :415.1   Max.   :26.00  
##     AcertosM      N_alu_pop      qst1sexo     qst2raca   qst17numpess
##  Min.   : 1.0   Min.   : 22   Feminin:13754   AM: 1196   >8  : 500   
##  1st Qu.: 7.0   1st Qu.: 60   Masculi:12343   Br: 8106   m1  :1342   
##  Median :10.0   Median : 91                   IN: 1024   m2  :4698   
##  Mean   :10.4   Mean   : 97                   PR: 4648   m3  :7934   
##  3rd Qu.:13.0   3rd Qu.:121                   Pa:11123   m4a5:9020   
##  Max.   :26.0   Max.   :257                              m6a8:2603   
##     qst18moramae    qst19educmae     qst22morapai    qst23educpai 
##  Não      : 2025   11a14  :7014   Não      : 8865   11a14  :6397  
##  Não outra:  618   15m    :1963   Não outra: 1605   15m    :2291  
##  Sim      :23454   4ª7    :5925   Sim      :15627   4a7    :3988  
##                    8a10   :5168                     8a10   :4330  
##                    ate 3  :1928                     ate 3  :1631  
##                    naosabe:4099                     naosabe:7460  
##  qst35trabfora   qst38reprov      qst39abando       r16conspatio  
##  Não:23321     Não     :17756   Não     :24984   Adequado :18826  
##  Sim: 2776     Sim 1vez: 6389   Sim 1vez:  943   Inadequad: 1947  
##                Sim duas: 1952   Sim duas:  170   Inexisten:  350  
##                                                  Regular  : 4974  
##                                                                   
##                                                                   
##  r36ncompesc    r52conscomp    r58percbiblio 
##  11a15:11304   Bom    :21765   Até 25 :2390  
##  16a20: 2162   Regular: 3491   De26a50:6500  
##  1a5  : 8609   Ruim   :  841   De51a75:9411  
##  21a30:  568                   Mais75 :7103  
##  6a10 : 2248                   Não há : 693  
##  m30  : 1206
prop.table(table(qst1sexo))
## qst1sexo
##   Feminin   Masculi 
## 0.5270338 0.4729662
prop.table(table(r52conscomp))
## r52conscomp
##        Bom    Regular       Ruim 
## 0.83400391 0.13377017 0.03222593

3 Analise grafica inicial

plot(y1,AcertosLP)

plot(y2,AcertosM)

4 Correlaçõees

cor(cbind(y2,AcertosM,qst1sexo,qst35trabfora))
##                        y2    AcertosM   qst1sexo qst35trabfora
## y2             1.00000000  0.93309211 0.09473209   -0.07812509
## AcertosM       0.93309211  1.00000000 0.09494714   -0.07575214
## qst1sexo       0.09473209  0.09494714 1.00000000    0.13742237
## qst35trabfora -0.07812509 -0.07575214 0.13742237    1.00000000
tapply(y2,qst1sexo,mean)
##  Feminin  Masculi 
## 242.1967 251.2116

5 Outras visualizações

boxplot(y2~qst1sexo,main="sexo")

boxplot(y2~qst2raca,main="raça")

boxplot(y2~qst17numpess,main="mora com quantas pessoas")

boxplot(y2~qst18moramae,main="mora mãe")

boxplot(y2~qst22morapai,main="mora pai")

boxplot(y2~qst23educpai,main="educa pai")

boxplot(y2~qst35trabfora,main="sexo")

boxplot(y2~qst38reprov,main="reprovação")

boxplot(y2~qst39abando,main="abandonou")

boxplot(y2~r16conspatio,main="patio")

boxplot(y2~r36ncompesc,main="num comp")

boxplot(y2~r52conscomp,main="cons comp")

boxplot(y2~r58percbiblio,main="biblio")

6 Ajuste

detach(data)

table(data$qst39abando)
## 
##      Não Sim 1vez Sim duas 
##    24984      943      170
data$aban = ifelse(data$qst39abando=="Sim duas",1,0)
data$aban = as.factor(data$aban)
levels(data$aban) = c("Não abandonou mais de uma vez","Abandonou mais de uma vez")

attach(data)

mod = lm(y2 ~ AcertosLP + qst1sexo+qst19educmae+qst38reprov+aban)

summary(mod)
## 
## Call:
## lm(formula = y2 ~ AcertosLP + qst1sexo + qst19educmae + qst38reprov + 
##     aban)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -150.238  -24.832   -0.196   24.011  142.097 
## 
## Coefficients:
##                                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                   172.04323    0.90036 191.082  < 2e-16 ***
## AcertosLP                       5.74165    0.05057 113.549  < 2e-16 ***
## qst1sexoMasculi                16.08747    0.46194  34.826  < 2e-16 ***
## qst19educmae15m                11.00958    0.93767  11.741  < 2e-16 ***
## qst19educmae4ª7                -6.34010    0.65194  -9.725  < 2e-16 ***
## qst19educmae8a10               -5.40765    0.67303  -8.035 9.77e-16 ***
## qst19educmaeate 3              -8.31340    0.94971  -8.754  < 2e-16 ***
## qst19educmaenaosabe            -8.22372    0.72973 -11.270  < 2e-16 ***
## qst38reprovSim 1vez            -9.70824    0.54897 -17.685  < 2e-16 ***
## qst38reprovSim duas            -9.87577    0.88970 -11.100  < 2e-16 ***
## abanAbandonou mais de uma vez  -7.44178    2.83081  -2.629  0.00857 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 36.63 on 26086 degrees of freedom
## Multiple R-squared:  0.406,  Adjusted R-squared:  0.4058 
## F-statistic:  1783 on 10 and 26086 DF,  p-value: < 2.2e-16

7 Verificação das hipoteses

residualPlot(mod)

hist(mod$residuals)

qqnorm(mod$residuals)
qqline(mod$residuals)

acf(mod$residuals)

vif(mod)
##                  GVIF Df GVIF^(1/(2*Df))
## AcertosLP    1.117128  1        1.056943
## qst1sexo     1.034795  1        1.017249
## qst19educmae 1.062980  5        1.006126
## qst38reprov  1.082549  2        1.020027
## aban         1.008929  1        1.004455
jarque.bera.test(mod$residuals)
## 
##  Jarque Bera Test
## 
## data:  mod$residuals
## X-squared = 15.548, df = 2, p-value = 0.0004204

Passa em todos os testes, menos na normalidade.

8 Análise de nível

plot(tapply(y2,pk_cod_entidade, mean)); abline(h=mean(y2))

9 Criando varíável artifical de nível 2

data$sx=ifelse(data$qst1sexo=="Feminin",0,1)

prop=aggregate(data$sx,list(data$pk_cod_entidade),mean)
names(prop) = c("pk_cod_entidade","prop")
dado=merge(data,prop,by="pk_cod_entidade")

10 Modelo de intercepto aleatório

modlm0 <- lm(y2 ~ AcertosLP + qst1sexo+qst19educmae+qst38reprov+aban, data=dado)

modmm0 <- lmer(y2 ~ AcertosLP + qst1sexo+qst19educmae+qst38reprov+aban + ( 1 | pk_cod_entidade), data=dado, REML = F)

anova(modmm0,modlm0)
## Data: dado
## Models:
## modlm0: y2 ~ AcertosLP + qst1sexo + qst19educmae + qst38reprov + aban
## modmm0: y2 ~ AcertosLP + qst1sexo + qst19educmae + qst38reprov + aban + 
## modmm0:     (1 | pk_cod_entidade)
##        Df    AIC    BIC  logLik deviance  Chisq Chi Df Pr(>Chisq)    
## modlm0 12 262011 262109 -130993   261987                             
## modmm0 13 259745 259851 -129859   259719 2267.6      1  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(sigma_2_u<- as.numeric(VarCorr(modmm0)) )
## [1] 142.7751
(sigma_2_e <- attr(VarCorr(modmm0), "sc")^2 )
## [1] 1193.263
(rho <- sigma_2_u / (sigma_2_u+sigma_2_e))
## [1] 0.1068645

11 Modelo com interação

mod1  <- lmer(y2 ~ AcertosLP + qst1sexo+qst19educmae+qst38reprov+aban+( 1 | pk_cod_entidade), data=dado)

mod2  <- lmer(y2 ~ AcertosLP*qst1sexo + qst1sexo+qst19educmae+qst38reprov+aban + ( 1 | pk_cod_entidade), data=dado, REML = F)

anova(mod1 ,mod2)
## refitting model(s) with ML (instead of REML)
## Data: dado
## Models:
## mod1: y2 ~ AcertosLP + qst1sexo + qst19educmae + qst38reprov + aban + 
## mod1:     (1 | pk_cod_entidade)
## mod2: y2 ~ AcertosLP * qst1sexo + qst1sexo + qst19educmae + qst38reprov + 
## mod2:     aban + (1 | pk_cod_entidade)
##      Df    AIC    BIC  logLik deviance  Chisq Chi Df Pr(>Chisq)   
## mod1 13 259745 259851 -129859   259719                            
## mod2 14 259740 259854 -129856   259712 7.1972      1   0.007302 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

12 Modelo de coeficiente aleatório

mod1  <- lmer(y2 ~ AcertosLP*qst1sexo + qst1sexo+qst19educmae+qst38reprov+aban+( 1 | pk_cod_entidade), data=dado)

mod2  <- lmer(y2 ~ AcertosLP*qst1sexo + qst1sexo+qst19educmae+qst38reprov+aban + ( AcertosLP | pk_cod_entidade), data=dado, REML = F)
## Warning in checkConv(attr(opt, "derivs"), opt$par, ctrl =
## control$checkConv, : Model failed to converge with max|grad| = 0.0238219
## (tol = 0.002, component 1)
## Warning in checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, : Model is nearly unidentifiable: very large eigenvalue
##  - Rescale variables?
anova(mod1 ,mod2)
## refitting model(s) with ML (instead of REML)
## Data: dado
## Models:
## mod1: y2 ~ AcertosLP * qst1sexo + qst1sexo + qst19educmae + qst38reprov + 
## mod1:     aban + (1 | pk_cod_entidade)
## mod2: y2 ~ AcertosLP * qst1sexo + qst1sexo + qst19educmae + qst38reprov + 
## mod2:     aban + (AcertosLP | pk_cod_entidade)
##      Df    AIC    BIC  logLik deviance  Chisq Chi Df Pr(>Chisq)    
## mod1 14 259740 259854 -129856   259712                             
## mod2 16 259603 259733 -129785   259571 141.06      2  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

13 Verificando se a proporção de homens é significante

mod1  <- lmer(y2 ~ AcertosLP*qst1sexo + qst1sexo+qst19educmae+qst38reprov+aban+( 1 | pk_cod_entidade), data=dado)

mod2  <- lmer(y2 ~ AcertosLP*qst1sexo + qst1sexo+qst19educmae+qst38reprov+aban + prop + ( 1 | pk_cod_entidade), data=dado, REML = F)

anova(mod1 ,mod2)
## refitting model(s) with ML (instead of REML)
## Data: dado
## Models:
## mod1: y2 ~ AcertosLP * qst1sexo + qst1sexo + qst19educmae + qst38reprov + 
## mod1:     aban + (1 | pk_cod_entidade)
## mod2: y2 ~ AcertosLP * qst1sexo + qst1sexo + qst19educmae + qst38reprov + 
## mod2:     aban + prop + (1 | pk_cod_entidade)
##      Df    AIC    BIC  logLik deviance  Chisq Chi Df Pr(>Chisq)  
## mod1 14 259740 259854 -129856   259712                           
## mod2 15 259735 259858 -129853   259705 6.3995      1    0.01141 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

14 Modelo final

Observação: Deu unini no modelo com coeficiente aleatório

final <- lmer(y2 ~ AcertosLP*qst1sexo + qst1sexo+qst19educmae+qst38reprov+aban + prop + ( 1 | pk_cod_entidade), data=dado, REML = F)

summary(final)
## Linear mixed model fit by maximum likelihood  ['lmerMod']
## Formula: 
## y2 ~ AcertosLP * qst1sexo + qst1sexo + qst19educmae + qst38reprov +  
##     aban + prop + (1 | pk_cod_entidade)
##    Data: dado
## 
##       AIC       BIC    logLik  deviance  df.resid 
##  259735.4  259857.9 -129852.7  259705.4     26082 
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -3.9441 -0.6734  0.0035  0.6686  3.9891 
## 
## Random effects:
##  Groups          Name        Variance Std.Dev.
##  pk_cod_entidade (Intercept)  139.9   11.83   
##  Residual                    1192.9   34.54   
## Number of obs: 26097, groups:  pk_cod_entidade, 356
## 
## Fixed effects:
##                                Estimate Std. Error t value
## (Intercept)                   173.54081    4.33537  40.029
## AcertosLP                       4.76242    0.06750  70.554
## qst1sexoMasculi                12.04662    1.25106   9.629
## qst19educmae15m                 1.09266    0.91600   1.193
## qst19educmae4ª7                -4.11864    0.63074  -6.530
## qst19educmae8a10               -3.70878    0.64121  -5.784
## qst19educmaeate 3              -6.04094    0.91505  -6.602
## qst19educmaenaosabe            -7.01367    0.69587 -10.079
## qst38reprovSim 1vez           -11.21265    0.52596 -21.318
## qst38reprovSim duas           -12.21805    0.85384 -14.310
## abanAbandonou mais de uma vez  -5.20878    2.70295  -1.927
## prop                           22.62283    8.91046   2.539
## AcertosLP:qst1sexoMasculi       0.24724    0.09164   2.698
## 
## Correlation matrix not shown by default, as p = 13 > 12.
## Use print(x, correlation=TRUE)  or
##     vcov(x)        if you need it

15 Análise de resíduos

residuo=residuals(final)
qqnorm(residuo)
qqline(residuo)

hist(residuo)

jarque.bera.test(residuo)
## 
##  Jarque Bera Test
## 
## data:  residuo
## X-squared = 1.3854, df = 2, p-value = 0.5002
plot(residuo)

16 Equação

\(Y_{ij} = 184,1 + u_{j} + 4,7\times x_{1j} + 12,1\times SexoMasculino -7\times EducMaeNaoSabe\) \(- 6\times EducMae3 - 4,13\times EducMae4a7 - 3,7\times EducMae8a10+ 1,1\times EducMae15\)
\(-11,2\times reprovSim1vez -12,2\times reprovSim2vez -5,2\times Abandonou +\) \(+ 0.24 \times AcertosLP + 22,6\times Prop\)

17 Dicionário de variáveis

\(u_j\) = efeito específico de cada grupo

17.1 Nível 1

17.1.1 Contínua

\(x_{1j}\) = Acertos em língua portuguesa

17.1.2 Categórica

SexoMasculino = Se é do sexo masculino

EducMaeNaoSabe = Não sabe a escolaridade da mãe

EducMae3 = Não completou a quarta série

EducMae4a7 = Completou a quarta série, mas não a oitava.

EducMae8a10 = Completou a oitava série, mas não o ensino médio.

EducMae15 = Completou o ensino médio, mas não a faculdade

ReprovSim1vez = Reprovou uma vez

ReprovSim2vez = Reprovou duas vezes

Abandonou = Abandonou a escola pelo menos duas vezes

17.2 Nível 2

17.2.1 Contínua

Prop = proporção de homens para cada escola

17.2.2 Categórica

Nenhuma

18 Interpretação

O modelo final que obteve o melhor desempenho, utilizando como critério comparativo o método anova, foi o de interceptos aleatórios com interação. O modelo de coeficientes aleatório apresentou “anini”. Foi necessário artificializar uma variável de nível 2, pois nenhuma apresentada na base era capaz de explicar eficientemente.

Tem-se que, consirando as demais variaveis constantes, um acréscimo nos acertos de língua portuguesa, dado que o aluno é homem, verifica-se um aumento de 12,24 na média da nota de matemática se comparado com alunas do sexo feminino. Observa-se que a escolaridade materna tem um impacto negativo na nota de matemática, sendo que não saber tem o pior impacto e quanto maior a escolaridade, menor este impacto será. Em outras palavras, é esperado que quanto mais educação uma mãe tenha, maior seja a nota de matemática do filho, em média.

O mesmo efeito verifica-se para a quantidade de reprovações. Para alunos que reprovaram uma vez, tem-se que, em média, -11 de nota em matemática, já os que reprovaram duas, foram penalizados com -12 de nota.

E tem-se que se um aluno abandonou a escola mais de 1 vez, tem a nota de matemática penalizada em 5,2, na média, se comparado com quem abandanou uma vez ou nenhuma.

Por fim, quanto maior a proporção de homens em uma escola, maior será a nota média dos alunos desta, podendo atingir um máximo de 22 pontos a mais.

Rafael Cabral Fernandez

2019-04-12