3  Modelos Lineares

3.1 Modelo Linear Múltiplo

Um Modelo Linear define uma relação linear entre a média da variável resposta \(y\) as co-variáveis, ou variáveis independentes: \(x_1\), \(x_2\), \(\ldots\), \(x_{p-1}\). Essa relação pode ser estabelecido por:

\[ E(y_i) = \beta_0 + \beta_1 x_{i,1} + \beta_2 x_{i,2} + \ldots + \beta_{p-1} x_{i,p-1} \]

sendo \(x_{i,j} =\) o valor da \(j\)-ésima variável independente na \(i\)-ésima observação, \(y_i =\) o valor da variável resposta na \(i\)-ésima observação e \(\beta_1\), \(\beta_2\), \(\ldots\), \(\beta_{p-1}\) os parâmetros do modelo.

Na prática busca-se estimativas para os parâmetros \(\beta_k\), que podem ser definidas a partir do método dos mínimos quadrados ou outros métodos de otimização, como por exemplo, o gradiente descendente.

No R é possível definir as estimativas a partir da função lm. As interpretações para os intervalos de confiança para os parâmetros só serão válidas caso seja razoável aceitar a hipótese de normalidade dos dados.

library(tidyverse)
base_treino = readRDS(file = "salvos//base_treino_final.rds")
glimpse(base_treino)
Rows: 11,700
Columns: 21
$ SG_UF_ESCOLA              <fct> RO, RO, RO, RO, RO, RO, RO, RO, RO, RO, RO, …
$ CO_ESCOLA_EDUCACENSO      <chr> "11000058", "11000244", "11000260", "1100031…
$ NO_ESCOLA_EDUCACENSO      <chr> "CENTRO DE ENSINO CLASSE A", "COLEGIO DOM BO…
$ TP_DEPENDENCIA_ADM_ESCOLA <fct> Privada, Privada, Estadual, Estadual, Privad…
$ TP_LOCALIZACAO_ESCOLA     <fct> Urbana, Urbana, Urbana, Urbana, Urbana, Rura…
$ NU_MATRICULAS             <dbl> 137, 55, 97, 44, 34, 41, 24, 33, 28, 72, 61,…
$ NU_PARTICIPANTES_NEC_ESP  <dbl> 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,…
$ NU_PARTICIPANTES          <dbl> 130, 49, 96, 38, 29, 22, 21, 24, 19, 57, 55,…
$ NU_TAXA_PARTICIPACAO      <dbl> 94.89, 89.09, 98.97, 86.36, 85.29, 53.66, 87…
$ NU_MEDIA_CN               <dbl> 591.64, 508.74, 505.77, 484.43, 480.60, 443.…
$ NU_MEDIA_CH               <dbl> 652.34, 586.45, 582.16, 540.06, 591.92, 483.…
$ NU_MEDIA_LP               <dbl> 604.53, 531.35, 527.39, 489.87, 532.11, 452.…
$ NU_MEDIA_MT               <dbl> 627.66, 529.87, 492.85, 456.92, 486.22, 429.…
$ NU_MEDIA_RED              <dbl> 732.00, 591.84, 580.83, 543.68, 602.07, 415.…
$ INSE                      <fct> Grupo 6, Grupo 5, Grupo 5, Grupo 4, Grupo 4,…
$ PC_FORMACAO_DOCENTE       <dbl> 67.5, 56.0, 53.6, 73.9, 46.2, 34.6, 63.3, 48…
$ NU_TAXA_PERMANENCIA       <dbl> 78.46, 81.63, 85.42, 63.16, 58.62, 72.73, 76…
$ NU_TAXA_REPROVACAO        <dbl> 3.9, 10.5, 10.8, 22.2, 9.9, 6.5, 35.1, 11.4,…
$ NU_TAXA_ABANDONO          <dbl> 0.0, 0.8, 0.0, 3.9, 1.4, 18.0, 0.0, 7.0, 13.…
$ PORTE_ESCOLA              <fct> Maior que 90 alunos, De 31 a 60 alunos, Maio…
$ TAXA_PART_CAT             <fct> alta, alta, alta, alta, media, baixa, alta, …
ML = lm(formula = NU_MEDIA_MT ~ 
          SG_UF_ESCOLA + 
          TP_DEPENDENCIA_ADM_ESCOLA + 
          TP_LOCALIZACAO_ESCOLA + 
          NU_MATRICULAS + 
          INSE + 
          PC_FORMACAO_DOCENTE + 
          NU_TAXA_PERMANENCIA + 
          NU_TAXA_REPROVACAO + 
          NU_TAXA_ABANDONO + 
          PORTE_ESCOLA, data = base_treino
        )
summary(ML)

Call:
lm(formula = NU_MEDIA_MT ~ SG_UF_ESCOLA + TP_DEPENDENCIA_ADM_ESCOLA + 
    TP_LOCALIZACAO_ESCOLA + NU_MATRICULAS + INSE + PC_FORMACAO_DOCENTE + 
    NU_TAXA_PERMANENCIA + NU_TAXA_REPROVACAO + NU_TAXA_ABANDONO + 
    PORTE_ESCOLA, data = base_treino)

Residuals:
    Min      1Q  Median      3Q     Max 
-154.00  -20.84   -2.85   17.18  301.15 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                        441.957936   6.839085  64.622  < 2e-16 ***
SG_UF_ESCOLAAL                       8.329338   6.482173   1.285 0.198832    
SG_UF_ESCOLAAM                     -10.060098   6.693290  -1.503 0.132863    
SG_UF_ESCOLAAP                     -10.841817   8.000472  -1.355 0.175397    
SG_UF_ESCOLABA                      24.841569   6.024467   4.123 3.76e-05 ***
SG_UF_ESCOLACE                      27.651682   5.991611   4.615 3.97e-06 ***
SG_UF_ESCOLADF                      -2.755749   6.557019  -0.420 0.674293    
SG_UF_ESCOLAES                      34.784903   6.205612   5.605 2.13e-08 ***
SG_UF_ESCOLAGO                      15.758531   6.066647   2.598 0.009400 ** 
SG_UF_ESCOLAMA                       8.915243   6.248310   1.427 0.153657    
SG_UF_ESCOLAMG                      41.231608   5.912409   6.974 3.25e-12 ***
SG_UF_ESCOLAMS                      14.819556   6.396322   2.317 0.020527 *  
SG_UF_ESCOLAMT                      12.239595   6.345564   1.929 0.053775 .  
SG_UF_ESCOLAPA                      16.090842   6.235800   2.580 0.009881 ** 
SG_UF_ESCOLAPB                      22.934002   6.192197   3.704 0.000213 ***
SG_UF_ESCOLAPE                      18.361825   6.036088   3.042 0.002355 ** 
SG_UF_ESCOLAPI                      27.131035   6.252939   4.339 1.44e-05 ***
SG_UF_ESCOLAPR                       2.507099   6.067203   0.413 0.679452    
SG_UF_ESCOLARJ                      18.294488   5.929815   3.085 0.002039 ** 
SG_UF_ESCOLARN                      21.381849   6.344345   3.370 0.000754 ***
SG_UF_ESCOLARO                      12.851728   6.673171   1.926 0.054144 .  
SG_UF_ESCOLARR                     -16.080888   8.683075  -1.852 0.064054 .  
SG_UF_ESCOLARS                      15.636700   5.981648   2.614 0.008957 ** 
SG_UF_ESCOLASC                       4.681260   6.079574   0.770 0.441317    
SG_UF_ESCOLASE                      15.086527   6.655649   2.267 0.023425 *  
SG_UF_ESCOLASP                       3.850083   5.898305   0.653 0.513934    
SG_UF_ESCOLATO                      12.836089   6.613442   1.941 0.052293 .  
TP_DEPENDENCIA_ADM_ESCOLAEstadual  -71.388077   2.467690 -28.929  < 2e-16 ***
TP_DEPENDENCIA_ADM_ESCOLAMunicipal -67.855775   4.761036 -14.252  < 2e-16 ***
TP_DEPENDENCIA_ADM_ESCOLAPrivada   -31.357591   2.568576 -12.208  < 2e-16 ***
TP_LOCALIZACAO_ESCOLARural           0.621888   1.901118   0.327 0.743585    
NU_MATRICULAS                        0.026002   0.006474   4.016 5.95e-05 ***
INSEGrupo 2                          8.445407   1.820326   4.640 3.53e-06 ***
INSEGrupo 3                         22.318065   1.772430  12.592  < 2e-16 ***
INSEGrupo 4                         45.924076   1.995772  23.011  < 2e-16 ***
INSEGrupo 5                         86.412839   2.315784  37.315  < 2e-16 ***
INSEGrupo 6                        153.148252   2.592335  59.077  < 2e-16 ***
PC_FORMACAO_DOCENTE                  0.304482   0.024149  12.608  < 2e-16 ***
NU_TAXA_PERMANENCIA                  0.228849   0.018120  12.630  < 2e-16 ***
NU_TAXA_REPROVACAO                  -0.384155   0.050703  -7.577 3.82e-14 ***
NU_TAXA_ABANDONO                    -0.979349   0.079473 -12.323  < 2e-16 ***
PORTE_ESCOLADe 31 a 60 alunos        5.929455   0.985875   6.014 1.86e-09 ***
PORTE_ESCOLADe 61 a 90 alunos        9.776793   1.206357   8.104 5.83e-16 ***
PORTE_ESCOLAMaior que 90 alunos     11.194589   1.425194   7.855 4.36e-15 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 36.5 on 11656 degrees of freedom
Multiple R-squared:  0.7186,    Adjusted R-squared:  0.7176 
F-statistic: 692.3 on 43 and 11656 DF,  p-value: < 2.2e-16

As previsões podem ser feitas com a função predict.

y_ = predict(ML)
y = base_treino$NU_MEDIA_MT
(RSS = sum((y - y_)^2))
[1] 15528037
(EMQ = mean((y-y_)^2))
[1] 1327.183
(R2 = 1 - sum((y-y_)^2)/sum((y-mean(y))^2))
[1] 0.7186122

3.1.1 Seleção das variáveis

Uma questão relevante para os modelos lineares é sobre a seleção das covariáveis que devem fazer parte do modelo. Existem diversas maneiras de se fazer essa seleção de variáveis, uma delas é chamada de stepwise e no R pode ser feita pela função step.

ML_final = step(ML)
summary(ML_final)

Call:
lm(formula = NU_MEDIA_MT ~ SG_UF_ESCOLA + TP_DEPENDENCIA_ADM_ESCOLA + 
    NU_MATRICULAS + INSE + PC_FORMACAO_DOCENTE + NU_TAXA_PERMANENCIA + 
    NU_TAXA_REPROVACAO + NU_TAXA_ABANDONO + PORTE_ESCOLA, data = base_treino)

Residuals:
     Min       1Q   Median       3Q      Max 
-153.978  -20.830   -2.857   17.180  301.177 

Coefficients:
                                    Estimate Std. Error t value Pr(>|t|)    
(Intercept)                        442.27305    6.77064  65.322  < 2e-16 ***
SG_UF_ESCOLAAL                       8.24377    6.47665   1.273 0.203098    
SG_UF_ESCOLAAM                     -10.11338    6.69105  -1.511 0.130694    
SG_UF_ESCOLAAP                     -10.87931    7.99934  -1.360 0.173848    
SG_UF_ESCOLABA                      24.77902    6.02120   4.115 3.89e-05 ***
SG_UF_ESCOLACE                      27.56234    5.98515   4.605 4.17e-06 ***
SG_UF_ESCOLADF                      -2.77918    6.55638  -0.424 0.671654    
SG_UF_ESCOLAES                      34.74166    6.20397   5.600 2.19e-08 ***
SG_UF_ESCOLAGO                      15.68748    6.06253   2.588 0.009676 ** 
SG_UF_ESCOLAMA                       8.83501    6.24326   1.415 0.157058    
SG_UF_ESCOLAMG                      41.16773    5.90896   6.967 3.41e-12 ***
SG_UF_ESCOLAMS                      14.77247    6.39446   2.310 0.020894 *  
SG_UF_ESCOLAMT                      12.20764    6.34457   1.924 0.054365 .  
SG_UF_ESCOLAPA                      16.04063    6.23367   2.573 0.010088 *  
SG_UF_ESCOLAPB                      22.84017    6.18531   3.693 0.000223 ***
SG_UF_ESCOLAPE                      18.28396    6.03116   3.032 0.002438 ** 
SG_UF_ESCOLAPI                      27.02155    6.24374   4.328 1.52e-05 ***
SG_UF_ESCOLAPR                       2.46075    6.06532   0.406 0.684964    
SG_UF_ESCOLARJ                      18.24301    5.92750   3.078 0.002091 ** 
SG_UF_ESCOLARN                      21.29590    6.33866   3.360 0.000783 ***
SG_UF_ESCOLARO                      12.83003    6.67258   1.923 0.054530 .  
SG_UF_ESCOLARR                     -16.15343    8.67991  -1.861 0.062767 .  
SG_UF_ESCOLARS                      15.58839    5.97959   2.607 0.009147 ** 
SG_UF_ESCOLASC                       4.64724    6.07845   0.765 0.444559    
SG_UF_ESCOLASE                      15.01736    6.65203   2.258 0.023992 *  
SG_UF_ESCOLASP                       3.79219    5.89542   0.643 0.520079    
SG_UF_ESCOLATO                      12.75497    6.60854   1.930 0.053622 .  
TP_DEPENDENCIA_ADM_ESCOLAEstadual  -71.48252    2.45065 -29.169  < 2e-16 ***
TP_DEPENDENCIA_ADM_ESCOLAMunicipal -67.93092    4.75531 -14.285  < 2e-16 ***
TP_DEPENDENCIA_ADM_ESCOLAPrivada   -31.48203    2.54015 -12.394  < 2e-16 ***
NU_MATRICULAS                        0.02593    0.00647   4.008 6.17e-05 ***
INSEGrupo 2                          8.40928    1.81690   4.628 3.73e-06 ***
INSEGrupo 3                         22.24073    1.75652  12.662  < 2e-16 ***
INSEGrupo 4                         45.82729    1.97364  23.220  < 2e-16 ***
INSEGrupo 5                         86.30415    2.29174  37.659  < 2e-16 ***
INSEGrupo 6                        153.04629    2.57343  59.472  < 2e-16 ***
PC_FORMACAO_DOCENTE                  0.30431    0.02414  12.605  < 2e-16 ***
NU_TAXA_PERMANENCIA                  0.22891    0.01812  12.634  < 2e-16 ***
NU_TAXA_REPROVACAO                  -0.38514    0.05061  -7.610 2.96e-14 ***
NU_TAXA_ABANDONO                    -0.98062    0.07938 -12.354  < 2e-16 ***
PORTE_ESCOLADe 31 a 60 alunos        5.91471    0.98481   6.006 1.96e-09 ***
PORTE_ESCOLADe 61 a 90 alunos        9.75042    1.20361   8.101 6.00e-16 ***
PORTE_ESCOLAMaior que 90 alunos     11.15757    1.42064   7.854 4.39e-15 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 36.5 on 11657 degrees of freedom
Multiple R-squared:  0.7186,    Adjusted R-squared:  0.7176 
F-statistic: 708.8 on 42 and 11657 DF,  p-value: < 2.2e-16

A previsão pode ser obtida e comparada com aquela obtida pelo modelo completo.

y_final = predict(ML_final)
(RSS = sum((y - y_final)^2))
[1] 15528179
(EMQ = mean((y-y_final)^2))
[1] 1327.195
(R2 = 1 - sum((y-y_final)^2)/sum((y-mean(y))^2))
[1] 0.7186097

3.2 Modelo Logístico

Quando se trata de um problema de classificação, em que a variável resposta é binária, o modelo linear múltiplo não é adequado. O principal motivo é que ele permite previsões assumindo qualquer valor real, o que não é aceitável quando deseja-se prever uma classe.

Uma solução para este problema, dentro dos modelos lineares, é supor que não mais \(E(y)\) é uma transformação linear das covariáveis e sim uma \(f(E(y)))\), onde \(f\) é chamada de função de ligação e para o caso de \(y\) binária é adequado escolher \(f\) como sendo a função logística.

\[ f(y) = -\ln \left( \dfrac{1-y}{y}\right) \] Nesse caso a relação entre \(y\) e as covariáveis passa a ser \[ -\ln \left( \dfrac{1-E(y_i)}{E(y_i)}\right) = \beta_0 + \beta_1 x_{i,1} + \beta_2 x_{i,2} + \ldots + \beta_{p-1} x_{i,p-1} + \varepsilon_i \] ou, como se costuma apresentar,

\[ E(y_i) = \frac{1}{1 + e^{-(\beta_0 + \beta_1 x_{i,1} + \beta_2x_{2,i} + \ldots + \beta_{p-1}x_{i,p-1})}} \]

Vale destacar que para o caso de \(y_i \sim Bernoulli(\pi_i)\), então \(\pi_i = P(y_i=1)\) e \(E(y_i) = \pi_i\). Sendo assim, o modelo logístico supões que a probabilidade da classe 1 é uma função de uma transformação linear das covariáveis.

Novamente busca-se estimativas para os parâmetros \(\beta_k\), que no R podem ser definidas a partir da função glm. A grande vantagem do Modelo Logístico, além de apresentar boas previsões, é a possibilidade de interpretação dos parâmetros como razão de chance.

Vamos usar como exemplo a situação em que se quer identificar as escolas com baixa taxa de participação.

base_treino = base_treino |> 
  mutate(TAXA_PART_BAIXA = 
           ifelse(base_treino$TAXA_PART_CAT == "baixa",1,0))
table(base_treino$TAXA_PART_BAIXA)

   0    1 
7737 3963 
MLOG = glm(formula = TAXA_PART_BAIXA ~ 
             SG_UF_ESCOLA + 
             TP_DEPENDENCIA_ADM_ESCOLA + 
             TP_LOCALIZACAO_ESCOLA + 
             NU_MATRICULAS + 
             INSE + 
             PC_FORMACAO_DOCENTE + 
             NU_TAXA_PERMANENCIA + 
             NU_TAXA_REPROVACAO + 
             NU_TAXA_ABANDONO + 
             PORTE_ESCOLA, 
           family = binomial(link = "logit"),
           data = base_treino
           )
summary(MLOG)

Call:
glm(formula = TAXA_PART_BAIXA ~ SG_UF_ESCOLA + TP_DEPENDENCIA_ADM_ESCOLA + 
    TP_LOCALIZACAO_ESCOLA + NU_MATRICULAS + INSE + PC_FORMACAO_DOCENTE + 
    NU_TAXA_PERMANENCIA + NU_TAXA_REPROVACAO + NU_TAXA_ABANDONO + 
    PORTE_ESCOLA, family = binomial(link = "logit"), data = base_treino)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-3.0172  -0.5481  -0.2409   0.7296   3.9471  

Coefficients:
                                     Estimate Std. Error z value Pr(>|z|)    
(Intercept)                        -0.1991155  0.5016322  -0.397 0.691415    
SG_UF_ESCOLAAL                     -1.0156666  0.4631485  -2.193 0.028310 *  
SG_UF_ESCOLAAM                      0.5463021  0.4521725   1.208 0.226981    
SG_UF_ESCOLAAP                     -0.9603375  0.5361280  -1.791 0.073254 .  
SG_UF_ESCOLABA                      0.0264765  0.4046557   0.065 0.947832    
SG_UF_ESCOLACE                     -2.8133228  0.4114158  -6.838 8.02e-12 ***
SG_UF_ESCOLADF                     -1.8539196  0.6124304  -3.027 0.002469 ** 
SG_UF_ESCOLAES                     -3.6134936  0.5205543  -6.942 3.88e-12 ***
SG_UF_ESCOLAGO                      0.5058923  0.4064520   1.245 0.213259    
SG_UF_ESCOLAMA                     -0.1743996  0.4192487  -0.416 0.677424    
SG_UF_ESCOLAMG                      0.8162646  0.3948061   2.068 0.038686 *  
SG_UF_ESCOLAMS                     -0.2940200  0.4320484  -0.681 0.496172    
SG_UF_ESCOLAMT                     -0.8902396  0.4352552  -2.045 0.040823 *  
SG_UF_ESCOLAPA                     -0.2005412  0.4273988  -0.469 0.638917    
SG_UF_ESCOLAPB                     -1.1390094  0.4152503  -2.743 0.006089 ** 
SG_UF_ESCOLAPE                     -0.1660168  0.4019456  -0.413 0.679582    
SG_UF_ESCOLAPI                     -0.4727421  0.4187758  -1.129 0.258954    
SG_UF_ESCOLAPR                      2.1337716  0.4115368   5.185 2.16e-07 ***
SG_UF_ESCOLARJ                      1.1535348  0.3973273   2.903 0.003693 ** 
SG_UF_ESCOLARN                     -0.6226253  0.4347211  -1.432 0.152075    
SG_UF_ESCOLARO                     -0.6579307  0.4484307  -1.467 0.142326    
SG_UF_ESCOLARR                      1.2354765  0.6377604   1.937 0.052720 .  
SG_UF_ESCOLARS                      0.2778438  0.4004903   0.694 0.487833    
SG_UF_ESCOLASC                      1.4736179  0.4095816   3.598 0.000321 ***
SG_UF_ESCOLASE                     -0.9530186  0.4649207  -2.050 0.040379 *  
SG_UF_ESCOLASP                      2.0173416  0.3972724   5.078 3.81e-07 ***
SG_UF_ESCOLATO                      0.0491410  0.4379646   0.112 0.910662    
TP_DEPENDENCIA_ADM_ESCOLAEstadual   1.7636991  0.2449531   7.200 6.01e-13 ***
TP_DEPENDENCIA_ADM_ESCOLAMunicipal  0.8618074  0.3593608   2.398 0.016477 *  
TP_DEPENDENCIA_ADM_ESCOLAPrivada   -0.1038297  0.2588722  -0.401 0.688358    
TP_LOCALIZACAO_ESCOLARural         -0.1025235  0.1272784  -0.806 0.420528    
NU_MATRICULAS                      -0.0010228  0.0004323  -2.366 0.017977 *  
INSEGrupo 2                        -0.4795918  0.1241178  -3.864 0.000112 ***
INSEGrupo 3                        -0.8973521  0.1319114  -6.803 1.03e-11 ***
INSEGrupo 4                        -1.6268106  0.1503589 -10.820  < 2e-16 ***
INSEGrupo 5                        -2.2679385  0.1763612 -12.860  < 2e-16 ***
INSEGrupo 6                        -3.3678212  0.2749115 -12.251  < 2e-16 ***
PC_FORMACAO_DOCENTE                -0.0199967  0.0019564 -10.221  < 2e-16 ***
NU_TAXA_PERMANENCIA                -0.0077519  0.0015187  -5.104 3.32e-07 ***
NU_TAXA_REPROVACAO                  0.0193453  0.0035859   5.395 6.86e-08 ***
NU_TAXA_ABANDONO                    0.1213178  0.0060179  20.159  < 2e-16 ***
PORTE_ESCOLADe 31 a 60 alunos       0.2699414  0.0828277   3.259 0.001118 ** 
PORTE_ESCOLADe 61 a 90 alunos       0.2470815  0.0940528   2.627 0.008613 ** 
PORTE_ESCOLAMaior que 90 alunos     0.3318941  0.1054821   3.146 0.001653 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 14980.2  on 11699  degrees of freedom
Residual deviance:  9618.5  on 11656  degrees of freedom
AIC: 9706.5

Number of Fisher Scoring iterations: 6

Novamente usamos a função predict para previsões, que serão um número entre 0 e 1 indicando a probabilidade da classe 1. No caso de classificação binária ainda é possível analisar a curva ROC, que no R é feita com o pacote pROC (Robin et al. 2011).

y_ = predict(MLOG,type="response")
y = base_treino$TAXA_PART_BAIXA
library(pROC)
ROC = roc(response = y,predictor = y_)
plot.roc(ROC,
         print.auc = TRUE,
         print.thres = TRUE)

y_classe = ifelse(y_>0.361,1,0)
library(caret)
confusionMatrix(as.factor(y),as.factor(y_classe))
Confusion Matrix and Statistics

          Reference
Prediction    0    1
         0 5899 1838
         1  566 3397
                                          
               Accuracy : 0.7945          
                 95% CI : (0.7871, 0.8018)
    No Information Rate : 0.5526          
    P-Value [Acc > NIR] : < 2.2e-16       
                                          
                  Kappa : 0.5746          
                                          
 Mcnemar's Test P-Value : < 2.2e-16       
                                          
            Sensitivity : 0.9125          
            Specificity : 0.6489          
         Pos Pred Value : 0.7624          
         Neg Pred Value : 0.8572          
             Prevalence : 0.5526          
         Detection Rate : 0.5042          
   Detection Prevalence : 0.6613          
      Balanced Accuracy : 0.7807          
                                          
       'Positive' Class : 0               
                                          

3.2.1 Seleção das variáveis

Uma questão relevante para os modelos lineares é sobre a seleção das covariáveis que devem fazer parte do modelo. Existem diversas maneiras de se fazer essa seleção de variáveis, uma delas é chamada de stepwise e no R pode ser feita pela função step.

MLOG_final = step(MLOG)
summary(MLOG_final)

Call:
glm(formula = TAXA_PART_BAIXA ~ SG_UF_ESCOLA + TP_DEPENDENCIA_ADM_ESCOLA + 
    NU_MATRICULAS + INSE + PC_FORMACAO_DOCENTE + NU_TAXA_PERMANENCIA + 
    NU_TAXA_REPROVACAO + NU_TAXA_ABANDONO + PORTE_ESCOLA, family = binomial(link = "logit"), 
    data = base_treino)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-3.0155  -0.5468  -0.2409   0.7294   3.9481  

Coefficients:
                                    Estimate Std. Error z value Pr(>|z|)    
(Intercept)                        -0.263416   0.495879  -0.531 0.595272    
SG_UF_ESCOLAAL                     -0.999054   0.463115  -2.157 0.030986 *  
SG_UF_ESCOLAAM                      0.558383   0.452445   1.234 0.217149    
SG_UF_ESCOLAAP                     -0.952394   0.536536  -1.775 0.075885 .  
SG_UF_ESCOLABA                      0.039997   0.404822   0.099 0.921296    
SG_UF_ESCOLACE                     -2.796005   0.411366  -6.797 1.07e-11 ***
SG_UF_ESCOLADF                     -1.850814   0.612668  -3.021 0.002520 ** 
SG_UF_ESCOLAES                     -3.600773   0.520681  -6.916 4.66e-12 ***
SG_UF_ESCOLAGO                      0.522235   0.406452   1.285 0.198840    
SG_UF_ESCOLAMA                     -0.156467   0.419116  -0.373 0.708906    
SG_UF_ESCOLAMG                      0.829691   0.394985   2.101 0.035680 *  
SG_UF_ESCOLAMS                     -0.284857   0.432421  -0.659 0.510056    
SG_UF_ESCOLAMT                     -0.883695   0.435679  -2.028 0.042528 *  
SG_UF_ESCOLAPA                     -0.191455   0.427738  -0.448 0.654443    
SG_UF_ESCOLAPB                     -1.118256   0.414927  -2.695 0.007037 ** 
SG_UF_ESCOLAPE                     -0.148490   0.401868  -0.369 0.711756    
SG_UF_ESCOLAPI                     -0.448240   0.418172  -1.072 0.283763    
SG_UF_ESCOLAPR                      2.142447   0.411938   5.201 1.98e-07 ***
SG_UF_ESCOLARJ                      1.164114   0.397651   2.927 0.003417 ** 
SG_UF_ESCOLARN                     -0.604023   0.434531  -1.390 0.164511    
SG_UF_ESCOLARO                     -0.651669   0.448867  -1.452 0.146555    
SG_UF_ESCOLARR                      1.248718   0.637555   1.959 0.050159 .  
SG_UF_ESCOLARS                      0.288116   0.400828   0.719 0.472263    
SG_UF_ESCOLASC                      1.480641   0.410014   3.611 0.000305 ***
SG_UF_ESCOLASE                     -0.939408   0.465007  -2.020 0.043362 *  
SG_UF_ESCOLASP                      2.028595   0.397569   5.102 3.35e-07 ***
SG_UF_ESCOLATO                      0.067092   0.437887   0.153 0.878226    
TP_DEPENDENCIA_ADM_ESCOLAEstadual   1.781891   0.243922   7.305 2.77e-13 ***
TP_DEPENDENCIA_ADM_ESCOLAMunicipal  0.876259   0.359068   2.440 0.014672 *  
TP_DEPENDENCIA_ADM_ESCOLAPrivada   -0.078049   0.256997  -0.304 0.761358    
NU_MATRICULAS                      -0.001012   0.000432  -2.342 0.019204 *  
INSEGrupo 2                        -0.473284   0.123853  -3.821 0.000133 ***
INSEGrupo 3                        -0.883246   0.130692  -6.758 1.40e-11 ***
INSEGrupo 4                        -1.608823   0.148621 -10.825  < 2e-16 ***
INSEGrupo 5                        -2.248213   0.174589 -12.877  < 2e-16 ***
INSEGrupo 6                        -3.349693   0.273951 -12.227  < 2e-16 ***
PC_FORMACAO_DOCENTE                -0.019948   0.001955 -10.202  < 2e-16 ***
NU_TAXA_PERMANENCIA                -0.007754   0.001518  -5.107 3.28e-07 ***
NU_TAXA_REPROVACAO                  0.019529   0.003579   5.457 4.84e-08 ***
NU_TAXA_ABANDONO                    0.121536   0.006013  20.213  < 2e-16 ***
PORTE_ESCOLADe 31 a 60 alunos       0.275904   0.082509   3.344 0.000826 ***
PORTE_ESCOLADe 61 a 90 alunos       0.255703   0.093420   2.737 0.006198 ** 
PORTE_ESCOLAMaior que 90 alunos     0.342043   0.104702   3.267 0.001088 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 14980.2  on 11699  degrees of freedom
Residual deviance:  9619.2  on 11657  degrees of freedom
AIC: 9705.2

Number of Fisher Scoring iterations: 6

A previsão pode ser obtida e comparada com aquela obtida pelo modelo completo.

y_final = predict(MLOG_final,type="response")
ROC_final = roc(response = y,predictor = y_final)
plot.roc(ROC_final,
         print.auc = TRUE,
         print.thres = TRUE)

y_classe_final = ifelse(y_final>0.359,1,0)
confusionMatrix(as.factor(y),as.factor(y_classe_final))
Confusion Matrix and Statistics

          Reference
Prediction    0    1
         0 5893 1844
         1  562 3401
                                          
               Accuracy : 0.7944          
                 95% CI : (0.7869, 0.8017)
    No Information Rate : 0.5517          
    P-Value [Acc > NIR] : < 2.2e-16       
                                          
                  Kappa : 0.5745          
                                          
 Mcnemar's Test P-Value : < 2.2e-16       
                                          
            Sensitivity : 0.9129          
            Specificity : 0.6484          
         Pos Pred Value : 0.7617          
         Neg Pred Value : 0.8582          
             Prevalence : 0.5517          
         Detection Rate : 0.5037          
   Detection Prevalence : 0.6613          
      Balanced Accuracy : 0.7807          
                                          
       'Positive' Class : 0               
                                          

Para futuras análises, vamos salvar os dois modelos criados.

saveRDS(ML_final,file = "salvos//ML_final.rds")
saveRDS(MLOG_final,file = "salvos//MLOG_final.rds")