Avaliação 02

Packages

options(warn=-1)
library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v tibble  3.1.6     v dplyr   1.0.8
## v tidyr   1.2.0     v stringr 1.4.0
## v readr   2.1.2     v forcats 0.5.1
## v purrr   0.3.4
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
library(skimr)
library(corrplot)
## corrplot 0.92 loaded
library( rgl )
library(magick)
## Linking to ImageMagick 6.9.12.3
## Enabled features: cairo, freetype, fftw, ghostscript, heic, lcms, pango, raw, rsvg, webp
## Disabled features: fontconfig, x11
library(plot3D)
library(psych)
## 
## Attaching package: 'psych'
## The following objects are masked from 'package:ggplot2':
## 
##     %+%, alpha
library(knitr)
library(readr)
library(DataExplorer)
options(warn=0)

Carregando os dados

DIR = 'data'; FILE = 'data.csv'
URL = file.path(DIR, FILE)
data = read.csv(URL, sep = ';')

Separando banco de variáveis continuas

continuos = c("Previous.qualification..grade.","Admission.grade",names(data)[22:33],
              "Unemployment.rate", "Inflation.rate", "GDP")
data_c = data[continuos]
dim(data_c)
## [1] 4424   17
colnames(data_c) = c('PrevQualifiGrade', "AdmissionGrade","1stCredited",
                  "1stEnrolled","1stEvaluations",
                  "1stApproved","1stGrade","1stWithoutEva",
                  "2ndCredited",
                  "2ndEnrolled","2ndEvaluations",
                  "2ndApproved","2ndGrade","2ndWithoutEva",
                  colnames(data_c)[15:17])

Questão comum a todos

Questão 01

  • Utilizando as variáveis quantitativas, proceda uma análise fatorial.
sum(is.na(data_c))
## [1] 0

Note que não temos nenhum NA

skim(data_c)
Data summary
Name data_c
Number of rows 4424
Number of columns 17
_______________________
Column type frequency:
numeric 17
________________________
Group variables None

Variable type: numeric

skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
PrevQualifiGrade 0 1 132.61 13.19 95.00 125.00 133.10 140.00 190.00 ▁▇▇▁▁
AdmissionGrade 0 1 126.98 14.48 95.00 117.90 126.10 134.80 190.00 ▂▇▃▁▁
1stCredited 0 1 0.71 2.36 0.00 0.00 0.00 0.00 20.00 ▇▁▁▁▁
1stEnrolled 0 1 6.27 2.48 0.00 5.00 6.00 7.00 26.00 ▃▇▁▁▁
1stEvaluations 0 1 8.30 4.18 0.00 6.00 8.00 10.00 45.00 ▇▃▁▁▁
1stApproved 0 1 4.71 3.09 0.00 3.00 5.00 6.00 26.00 ▇▆▁▁▁
1stGrade 0 1 10.64 4.84 0.00 11.00 12.29 13.40 18.88 ▂▁▂▇▁
1stWithoutEva 0 1 0.14 0.69 0.00 0.00 0.00 0.00 12.00 ▇▁▁▁▁
2ndCredited 0 1 0.54 1.92 0.00 0.00 0.00 0.00 19.00 ▇▁▁▁▁
2ndEnrolled 0 1 6.23 2.20 0.00 5.00 6.00 7.00 23.00 ▁▇▁▁▁
2ndEvaluations 0 1 8.06 3.95 0.00 6.00 8.00 10.00 33.00 ▃▇▁▁▁
2ndApproved 0 1 4.44 3.01 0.00 2.00 5.00 6.00 20.00 ▆▇▁▁▁
2ndGrade 0 1 10.23 5.21 0.00 10.75 12.20 13.33 18.57 ▂▁▁▇▁
2ndWithoutEva 0 1 0.15 0.75 0.00 0.00 0.00 0.00 12.00 ▇▁▁▁▁
Unemployment.rate 0 1 11.57 2.66 7.60 9.40 11.10 13.90 16.20 ▆▆▇▂▅
Inflation.rate 0 1 1.23 1.38 -0.80 0.30 1.40 2.60 3.70 ▆▇▆▆▃
GDP 0 1 0.00 2.27 -4.06 -1.70 0.32 1.79 3.51 ▆▂▆▇▅

Abaixo, vamos rever como está a matriz de correlações amostrais:

rho_hat <- cor(data_c)
corrplot::corrplot(rho_hat, method = "number")

Vamos ver mais de perto os grupos com maiores correlações:

rho_hat_new <- cor(data_c[,3:13])
corrplot::corrplot(rho_hat_new, method = "number")

Verificando a possibilidade de usar AF

  • KMO
KMO(rho_hat)
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = rho_hat)
## Overall MSA =  0.74
## MSA for each item = 
##  PrevQualifiGrade    AdmissionGrade       1stCredited       1stEnrolled 
##              0.52              0.53              0.71              0.74 
##    1stEvaluations       1stApproved          1stGrade     1stWithoutEva 
##              0.78              0.80              0.77              0.56 
##       2ndCredited       2ndEnrolled    2ndEvaluations       2ndApproved 
##              0.75              0.73              0.80              0.77 
##          2ndGrade     2ndWithoutEva Unemployment.rate    Inflation.rate 
##              0.78              0.54              0.44              0.39 
##               GDP 
##              0.50

Ao adotarmos um criterio de 0.5 para o KMO, vemos que quase todas as variaveis são superiores a esse valor e um overall de 0.74, exceto pela taxa de desemgro e a taxa de inflação. Então, temos indicios de que podemos, possivelmente, conduzir uma analise fatorial.

  • Bartlett test
cortest.bartlett(rho_hat, n = nrow(data_c))
## $chisq
## [1] 64199.43
## 
## $p.value
## [1] 0
## 
## $df
## [1] 136

Por fim, considerando o teste de esfericidade Bartlett, a um nivel de significancia de 5%, temos evidencias estatisticamente suficientes para afirmar que a analise fatorial pode ser util aos dados.

Questão 02

  • Quantos fatores devem ser mantidas e qual o percentual da variação total explicada por esses fatores.
eigv <- eigen(rho_hat)
eigv <- data.frame(nfact = 1:ncol(data_c), eigval = eigv$values)
ggplot(data = eigv, mapping = aes(nfact, eigval)) +
  geom_line() +
  geom_point() +
  geom_abline(slope = 0, intercept = 1, color = "red") +
  labs(x = "Número de fatores",
       y = "Autovalor",
       title = "Scree plot") +
  theme_bw()

data_c_f = head(eigv[round(eigv['eigval'],2) > 1,], 5)
n_factors = dim(data_c_f)[1]
mfo1 <- factanal(data_c, n_factors, rotation = "none")
mfo1
## 
## Call:
## factanal(x = data_c, factors = n_factors, rotation = "none")
## 
## Uniquenesses:
##  PrevQualifiGrade    AdmissionGrade       1stCredited       1stEnrolled 
##             0.489             0.338             0.005             0.056 
##    1stEvaluations       1stApproved          1stGrade     1stWithoutEva 
##             0.153             0.080             0.201             0.882 
##       2ndCredited       2ndEnrolled    2ndEvaluations       2ndApproved 
##             0.095             0.005             0.274             0.108 
##          2ndGrade     2ndWithoutEva Unemployment.rate    Inflation.rate 
##             0.176             0.916             0.988             0.997 
##               GDP 
##             0.977 
## 
## Loadings:
##                   Factor1 Factor2 Factor3 Factor4 Factor5
## PrevQualifiGrade           0.133   0.654  -0.254         
## AdmissionGrade             0.182   0.732  -0.290         
## 1stCredited        0.897                          -0.435 
## 1stEnrolled        0.952                           0.185 
## 1stEvaluations     0.651   0.123   0.128   0.620         
## 1stApproved        0.775   0.534                   0.160 
## 1stGrade           0.326   0.717           0.139   0.399 
## 1stWithoutEva      0.122  -0.145   0.147   0.246         
## 2ndCredited        0.886                          -0.342 
## 2ndEnrolled        0.912                           0.398 
## 2ndEvaluations     0.586   0.188   0.108   0.534   0.224 
## 2ndApproved        0.684   0.556          -0.167   0.288 
## 2ndGrade           0.326   0.757                   0.376 
## 2ndWithoutEva             -0.153   0.114   0.207         
## Unemployment.rate                                        
## Inflation.rate                                           
## GDP                               -0.103                 
## 
##                Factor1 Factor2 Factor3 Factor4 Factor5
## SS loadings      5.398   1.839   1.051   0.992   0.981
## Proportion Var   0.318   0.108   0.062   0.058   0.058
## Cumulative Var   0.318   0.426   0.488   0.546   0.604
## 
## Test of the hypothesis that 5 factors are sufficient.
## The chi square statistic is 5897.61 on 61 degrees of freedom.
## The p-value is 0

segundo o screeplot, podemos utilizar 5 fatores. Mesmo que o 6 fator apresente o seu valor muito proximo de 1, será descartado o mesmo. Obtem-se que, para uma analise fatorial considerando 5 fatores, obtivemos uma explicação da variancia acumulado de aproximadamente 0.604.

Além disso, vale ressaltar que as variaveis Unemployment.rate e Inflation.rate apresentaram valores muito proximos de 0 para todos os fatores, e também a variavel GDP, porém GDP apresentou um unico valor um pouco distante de 0.

Questão 03

  • Utilizando as variáveis quantitativas, proceda uma análise fatorial.

  • Análise Fatorial:

Considerando o teste chi-quadrado, obtido pelo item anterior, podemos afirmar inicialmente que 5 fatores são estatisticamente suficientes para a nossa analise fatorial, a um niveld e significancia de 5%. Abaixo, vamos analisar um diagrama da relação de cada fator com as variaveis.

fa.diagram(mfo1$loadings, digits = 3)

Podemos notar que o fator 01 é uma ponderação positiva entre o numero de componentes curriculares que o estudante possui, seja da classe Enrolled, Approved ou se ja possui creditos dispensando (Credited), para o primeiro e segundo semestre.

Analogamente, o segundo fator aparenta ser uma ponderação positiva de apenas duas variaveis, o numero de componentes curriculares que o individuo pagou no primeiro e segundo semestre do curso. Por fim, podemos notar uma dependencia direta do terceiro fator para com as variaveis AdmissionGrade e PrevQualifiGrade, variaveis possivelmente relacionadas ao passado do estudante, como qualificações e compentes ja pagas pelo estudante.

L <- mfo1$loadings
fy1 <- L[,1]
fy2 <- L[,2]
fy3 <- L[,3]

plot(fy1, fy2, type = "n", xlab = "Fator 1", ylab = "Fator 2",
     xlim = c(min(fy1)-0.1, max(fy1)+0.1), ylim = c(min(fy2)-0.07,max(fy2)+0.07))
text(L[,c(1,2)], labels = names(data_c), cex = .7)

plot(fy1, fy3, type = "n", xlab = "Fator 1", ylab = "Fator 3",
     xlim = c(min(fy1)-0.1, max(fy1)+0.1), ylim = c(min(fy3)-0.07,max(fy3)+0.07))
text(L[,c(1,3)], labels = names(data_c), cex = .7)

plot(fy2, fy3, type = "n", xlab = "Fator 1", ylab = "Fator 3",
     xlim = c(min(fy2)-0.1, max(fy2)+0.1), ylim = c(min(fy3)-0.07,max(fy3)+0.07))
text(L[,c(2,3)], labels = names(data_c), cex = .7)

  • Escores fatoriais

Primeiro, vamos refazer a analise fatorial, porém agora com parametro scores=regression para obtermos os scores da regressão

mfo4 <- factanal(data_c, n_factors, rotation = "none", scores = "regression")
mfo4
## 
## Call:
## factanal(x = data_c, factors = n_factors, scores = "regression",     rotation = "none")
## 
## Uniquenesses:
##  PrevQualifiGrade    AdmissionGrade       1stCredited       1stEnrolled 
##             0.489             0.338             0.005             0.056 
##    1stEvaluations       1stApproved          1stGrade     1stWithoutEva 
##             0.153             0.080             0.201             0.882 
##       2ndCredited       2ndEnrolled    2ndEvaluations       2ndApproved 
##             0.095             0.005             0.274             0.108 
##          2ndGrade     2ndWithoutEva Unemployment.rate    Inflation.rate 
##             0.176             0.916             0.988             0.997 
##               GDP 
##             0.977 
## 
## Loadings:
##                   Factor1 Factor2 Factor3 Factor4 Factor5
## PrevQualifiGrade           0.133   0.654  -0.254         
## AdmissionGrade             0.182   0.732  -0.290         
## 1stCredited        0.897                          -0.435 
## 1stEnrolled        0.952                           0.185 
## 1stEvaluations     0.651   0.123   0.128   0.620         
## 1stApproved        0.775   0.534                   0.160 
## 1stGrade           0.326   0.717           0.139   0.399 
## 1stWithoutEva      0.122  -0.145   0.147   0.246         
## 2ndCredited        0.886                          -0.342 
## 2ndEnrolled        0.912                           0.398 
## 2ndEvaluations     0.586   0.188   0.108   0.534   0.224 
## 2ndApproved        0.684   0.556          -0.167   0.288 
## 2ndGrade           0.326   0.757                   0.376 
## 2ndWithoutEva             -0.153   0.114   0.207         
## Unemployment.rate                                        
## Inflation.rate                                           
## GDP                               -0.103                 
## 
##                Factor1 Factor2 Factor3 Factor4 Factor5
## SS loadings      5.398   1.839   1.051   0.992   0.981
## Proportion Var   0.318   0.108   0.062   0.058   0.058
## Cumulative Var   0.318   0.426   0.488   0.546   0.604
## 
## Test of the hypothesis that 5 factors are sufficient.
## The chi square statistic is 5897.61 on 61 degrees of freedom.
## The p-value is 0
scores <- as.data.frame(mfo4$scores)
head(scores, 5)
##      Factor1    Factor2    Factor3     Factor4      Factor5
## 1 -1.7879199  0.1423418 -0.8205824 -0.76540448 -2.989885695
## 2 -0.1936023  0.8580401  1.0451843 -0.98865138  0.297029177
## 3 -0.3295926 -2.4595526 -0.5773978 -1.66199902  0.001535392
## 4 -0.1895107  0.5982611 -0.6149924  0.30596038  0.295320063
## 5 -0.1954917  0.5407329 -0.4181676 -0.02664623  0.284266655
target = data$Target
ggplot(data = scores, mapping = aes(x = seq(length(target)), y = Factor1, color=target)) +
  geom_point() +
  labs(x = "Indice",
       y = "Fator 1",
       title = "Dispersao dos escores fatoriais") +
  theme_bw()

ggplot(data = scores, mapping = aes(x = seq(length(target)), y = Factor2, color=target)) +
  geom_point() +
  labs(x = "Indice",
       y = "Fator 2",
       title = "Dispersao dos escores fatoriais") +
  theme_bw()

ggplot(data = scores, mapping = aes(x = seq(length(target)), y = Factor3, color=target)) +
  geom_point() +
  labs(x = "Indice",
       y = "Fator 3",
       title = "Dispersao dos escores fatoriais") +
  theme_bw()

ggplot(data = scores, mapping = aes(x = Factor1, y = Factor2, color=target)) +
  geom_point() +
  labs(x = "Fator 1",
       y = "Fator 2",
       title = "Dispersao dos escores fatoriais") +
  theme_bw()

ggplot(data = scores, mapping = aes(x = Factor1, y = Factor3, color=target)) +
  geom_point() +
  labs(x = "Fator 1",
       y = "Fator 3",
       title = "Dispersao dos escores fatoriais") +
  theme_bw()

ggplot(data = scores, mapping = aes(x = Factor2, y = Factor3, color=target)) +
  geom_point() +
  labs(x = "Fator 2",
       y = "Fator 3",
       title = "Dispersao dos escores fatoriais") +
  theme_bw()

require(rgl)
options(warn=-1)
y1 = scores$Factor1
y2 = scores$Factor2
y3 = scores$Factor3

ytarget = as.factor(data$Target)
levels(ytarget) = c(1,2,3)

df <- data.frame(scores$Factor1,scores$Factor2,scores$Factor3)

df$target<- factor(data$Target)
plot3d(y1,y2,y3, col=ytarget, radius = .2,
       xlab='y_1',ylab='y_2',
       zlab='y_3')
#movie3d(spin3d(axis = c(0,0,1), rpm = 4), duration = 15, fps = 50,
#        dir = ".",type = "gif")
options(warn=0)

Plot 3D

Analisando os gráficos acima, podemos notar que apenas o fator 2 apresentou um leve poder para separar o grupo dropout dos demais, porém ainda com um vies muito grande, podemos ver tambem que os fatores 1 e 3 a diferença entre os grupos é quase inexistente, porém quando combinamos a relação de fatores, como o fator 1 pelo fator 2, podemos ver a separação clara entre os grupos dropout e graduate, evidenciando uma clara diferença entre as classes. O comportamento anterior se repete para as duas outras combinações de fatores, porém o grupo Enrolled encontra-se com semelhanças em ambos os grupos.

Além disso, temos um plot 3D acima, dos 3 fatores separados por grupo, podemos notar que os grupos 2 e 1 conseguem separar de forma bem melhor os grupos, quando comparado ao fator 3.

Questão 04

  • Os fatores mantidos são interpretáveis?

Sim. Apenas os 3 primeiros fatores apresentam uma possivel interpretação.

Questão 05

  • Se sim, qual a interpreteção desses fatores?

    • Fator 01: Pode ser interpretado como uma ponderação dos compenentes curriculares pagas pelo estudante (Enrolled, Credited e Approved). Além disso, pelo plot de dispersão do fator \(1\) e fator \(2\), podemos notar que o fator \(1\) é determinante para a classificação dos grupos dropout e graduate, porém o grupo enrolled possui caracteristicas semelhantes para ambos os grupos, quanto o fator 1.

    • Fator 02: O fator 2 pode ser interpretado como uma ponderação das variaveis 2ndGrade e 1stGrade, possivelmente relacionadas a quantidade de disciplinas pagas ao todo, no segundo e primeiro semestre de curso do estudante.

    • Fator 03: O fator 3 aparenta ter uma relação referente ao passado do estudante, sendo uma ponderação diretamente proporcional as variaveis AdmissionGrade e PrevQualifiGrade, variaveis relacionadas ao passado do estudante.

Questão 06

  • E necessário aplicar algum tipo de rotação à matriz de cargas fatoriais?

    • varimax: Vamos aplicar a rotação varimax (rotação ortogonal) e analisar o diagrama obtido.
mfo1_q06_varimax <- factanal(data_c, n_factors, rotation = "varimax")
mfo1_q06_varimax
## 
## Call:
## factanal(x = data_c, factors = n_factors, rotation = "varimax")
## 
## Uniquenesses:
##  PrevQualifiGrade    AdmissionGrade       1stCredited       1stEnrolled 
##             0.489             0.338             0.005             0.056 
##    1stEvaluations       1stApproved          1stGrade     1stWithoutEva 
##             0.153             0.080             0.201             0.882 
##       2ndCredited       2ndEnrolled    2ndEvaluations       2ndApproved 
##             0.095             0.005             0.274             0.108 
##          2ndGrade     2ndWithoutEva Unemployment.rate    Inflation.rate 
##             0.176             0.916             0.988             0.997 
##               GDP 
##             0.977 
## 
## Loadings:
##                   Factor1 Factor2 Factor3 Factor4 Factor5
## PrevQualifiGrade                   0.711                 
## AdmissionGrade                     0.812                 
## 1stCredited        0.980                   0.175         
## 1stEnrolled        0.776   0.254           0.226   0.469 
## 1stEvaluations     0.442   0.436  -0.140   0.653   0.121 
## 1stApproved        0.663   0.648          -0.109   0.217 
## 1stGrade           0.126   0.870                   0.153 
## 1stWithoutEva                              0.334         
## 2ndCredited        0.939                   0.150         
## 2ndEnrolled        0.668   0.262           0.170   0.667 
## 2ndEvaluations     0.348   0.506  -0.126   0.540   0.204 
## 2ndApproved        0.546   0.675          -0.210   0.302 
## 2ndGrade           0.153   0.872          -0.141   0.136 
## 2ndWithoutEva                              0.279         
## Unemployment.rate                                        
## Inflation.rate                                           
## GDP                                       -0.140         
## 
##                Factor1 Factor2 Factor3 Factor4 Factor5
## SS loadings      3.990   2.985   1.228   1.140   0.918
## Proportion Var   0.235   0.176   0.072   0.067   0.054
## Cumulative Var   0.235   0.410   0.483   0.550   0.604
## 
## Test of the hypothesis that 5 factors are sufficient.
## The chi square statistic is 5897.61 on 61 degrees of freedom.
## The p-value is 0
getwd()
## [1] "C:/Users/MF032/OneDrive/Documentos/Python Scripts/AV2"
fa.diagram(mfo1_q06_varimax$loadings, digits = 3)

Podemos notar que o fator 4 apresentou uma relação agora com as variaveis 1stEvaluations, 2ndEvaluations e 1stWithoutEva, porém, ainda continuamos com o factor 5 sem relação om as variaveis. Além disso, as variaveis GDP, Unemployment.rate e Inflation.rate. Podemos interpretar, com a rotação Varimax, que o fator 1 é uma ponderação positiva do numero de disciplinas pagas para os grupos Credited, Enrolled e Approved, para o primeiro e segundo semestre do estudante; para o fator 2, temos uma ponderação positiva do total de disciplinas pagas pelo estutande no primeiro e segundo semestre, e pela variavel 2ndApproved; para o fator 3, temos a mesma interpretação igual a da analise sem rotação, onde temos ele como uma ponderação positiva de variaveis relaciadas ao passado do estudante, como a qualificação do mesmo; para fator 4, temos uma ponderação positiva do total de disciplinas pagas sem notas, no primeiro semestre. Além disso, temos o fator 5 sem relação significante com nenhuma variavel e as variaveis Inflation.rate, 2ndWithoutEva, GDP e Unemployment.rate sem nenhuma relação significante com nenhuma variavel.

  • promax: Vamos aplicar a rotação (rotação obliqua) promax e analisar o diagrama obtido.
mfo1_q06_promax <- factanal(data_c, n_factors, rotation = "promax")
mfo1_q06_promax
## 
## Call:
## factanal(x = data_c, factors = n_factors, rotation = "promax")
## 
## Uniquenesses:
##  PrevQualifiGrade    AdmissionGrade       1stCredited       1stEnrolled 
##             0.489             0.338             0.005             0.056 
##    1stEvaluations       1stApproved          1stGrade     1stWithoutEva 
##             0.153             0.080             0.201             0.882 
##       2ndCredited       2ndEnrolled    2ndEvaluations       2ndApproved 
##             0.095             0.005             0.274             0.108 
##          2ndGrade     2ndWithoutEva Unemployment.rate    Inflation.rate 
##             0.176             0.916             0.988             0.997 
##               GDP 
##             0.977 
## 
## Loadings:
##                   Factor1 Factor2 Factor3 Factor4 Factor5
## PrevQualifiGrade                                   0.713 
## AdmissionGrade                                     0.804 
## 1stCredited       -0.101   1.077  -0.152   0.107         
## 1stEnrolled                0.437   0.602                 
## 1stEvaluations     0.240   0.181           0.775         
## 1stApproved        0.631   0.438                         
## 1stGrade           0.953  -0.175           0.200         
## 1stWithoutEva     -0.160                   0.323         
## 2ndCredited       -0.143   0.977                         
## 2ndEnrolled                0.197   0.920                 
## 2ndEvaluations     0.326                   0.659         
## 2ndApproved        0.666   0.265   0.226  -0.151         
## 2ndGrade           0.988  -0.117  -0.101                 
## 2ndWithoutEva     -0.168                   0.260         
## Unemployment.rate                  0.104                 
## Inflation.rate                                           
## GDP                                       -0.135         
## 
##                Factor1 Factor2 Factor3 Factor4 Factor5
## SS loadings      2.996   2.694   1.338   1.324   1.175
## Proportion Var   0.176   0.158   0.079   0.078   0.069
## Cumulative Var   0.176   0.335   0.413   0.491   0.560
## 
## Factor Correlations:
##         Factor1 Factor2 Factor3 Factor4 Factor5
## Factor1   1.000  0.6353 -0.4064  0.3784 -0.0180
## Factor2   0.635  1.0000 -0.6017  0.4987  0.0332
## Factor3  -0.406 -0.6017  1.0000 -0.1715  0.0608
## Factor4   0.378  0.4987 -0.1715  1.0000  0.0694
## Factor5  -0.018  0.0332  0.0608  0.0694  1.0000
## 
## Test of the hypothesis that 5 factors are sufficient.
## The chi square statistic is 5897.61 on 61 degrees of freedom.
## The p-value is 0
fa.diagram(mfo1_q06_promax$loadings, digits = 3)

Acima, podemos notar uma interpretação semelhante quando usamos a rotação varimax, exceto que agora o factor 3, para a varimax, agora encontra-se como fator 5, ainda mantendo a sua interpretabilidade relacionado ao passado do estudante. Além disso, podemos notar uma distribuição melhor das maiores relações com todos os outros fatores. Por fim, podemos notar que as variáveis Inflation.rate, Unemployment.rate e GDP mantém-se como variaveis sem relação significativa com nenhum fatores.

  • Comparação entre Sem rotação, rotação Varimax e rotação Promax: Primeiramente, podemos notar que a analise fatorial sem nenhuma rotação e a com rotação varimax, mativemos uma explicação da variabilidade para 5 fatores igual e equivalente a 0.604, porém a rotação obliqua promax, houve uma queda para 0.560. Podemos notar que, considerando um problema de aprendizagem de máquina, não seria necessário uma rotação sobre os fatores, visto que a maior explicação da variabilidade encontrou-se tanto quando não aplicamos nenhuma rotação, quando aplicamos a rotação ortogonal varimax, porém para uma situação onde torna-se importante a interpretabilidade dos fatores, a rotação obliqua promax seria mais viavel.

Por fim, podemos notar que para as 3 situações, as variaveis GDP, Inflation.rate e Unmployment.rate além de apresentar valores do KMO pequenos, podemos notar que não apresentaram nenhuma relação com nenhum fator, para nenhuma rotação, logo temos evidências possiveis que, para a analise fatorial, essas variaveis não necessitam de permanecer na base, logo poderiamos retira-las e refazer a analise fatorial.

Questão 07

  • O que você pode dizer acerca das comunalidades e da matriz residual?

    • Comunalidades:

      Abaixo temos as comunalidades, e podemos notar que 5 fatores conseguem explicar mais que 70% da variabilidade de quase todas as componentes relacionadas ao numero de componentes curriculares que o individuo pagou, desistiu ou dispensou, sendo as variaveis 1stCredited, 2ndEnrolled, 1stEnrolled, 1stApproved e 2ndCredited apresentando as respectivas variabilidades explicadas pelos 5 fatores: 99.5%, 99.5%, 94.4%, 92.03% e 90.5%

kable(sort(rowSums(mfo4$loadings^2), decreasing=T))
x
1stCredited 0.9950256
2ndEnrolled 0.9950156
1stEnrolled 0.9440056
1stApproved 0.9203082
2ndCredited 0.9050927
2ndApproved 0.8923068
1stEvaluations 0.8468975
2ndGrade 0.8239844
1stGrade 0.7994782
2ndEvaluations 0.7255944
AdmissionGrade 0.6616859
PrevQualifiGrade 0.5114356
1stWithoutEva 0.1185922
2ndWithoutEva 0.0836861
GDP 0.0229349
Unemployment.rate 0.0115628
Inflation.rate 0.0034020
  • Matriz residual:

    Abaixo temos a matriz residual, todos os valores da diagonal estao proximos de 0, além disso os outros valores também encontram-se bem proximos de 0, exceto pelas correlações das variaveis Unemployment.rate, Inflation.rate e GDP, então podemos dizer que o MFO com 5 fatores foi apropriado.

rho_til <- L%*%t(L)+diag(mfo4$uniquenesses)
U <- rho_hat - rho_til
m_residual = round(U, 4)
kable(m_residual)
PrevQualifiGrade AdmissionGrade 1stCredited 1stEnrolled 1stEvaluations 1stApproved 1stGrade 1stWithoutEva 2ndCredited 2ndEnrolled 2ndEvaluations 2ndApproved 2ndGrade 2ndWithoutEva Unemployment.rate Inflation.rate GDP
PrevQualifiGrade 0.0000 0.0014 0.0002 0.0066 0.0018 0.0051 -0.0004 -0.0162 -0.0109 -0.0003 -0.0045 -0.0038 -0.0052 -0.0193 0.0006 0.0253 -0.0152
AdmissionGrade 0.0014 0.0000 -0.0001 -0.0028 -0.0010 -0.0034 0.0032 -0.0029 0.0052 0.0002 0.0043 -0.0001 0.0021 -0.0089 -0.0076 -0.0139 0.0222
1stCredited 0.0002 -0.0001 0.0000 0.0008 -0.0007 -0.0001 0.0007 -0.0008 0.0006 0.0000 -0.0001 -0.0012 0.0010 -0.0006 -0.0002 0.0000 0.0010
1stEnrolled 0.0066 -0.0028 0.0008 0.0000 0.0114 0.0161 -0.0028 -0.0004 -0.0251 0.0002 -0.0261 -0.0123 -0.0074 -0.0072 -0.0141 0.0192 -0.0073
1stEvaluations 0.0018 -0.0010 -0.0007 0.0114 0.0000 -0.0018 -0.0076 0.0103 0.0053 -0.0010 0.0094 0.0143 -0.0117 -0.0321 0.0163 -0.0031 -0.0287
1stApproved 0.0051 -0.0034 -0.0001 0.0161 -0.0018 0.0000 0.0102 0.0005 -0.0103 -0.0012 0.0020 0.0136 -0.0277 0.0007 0.0177 0.0045 -0.0147
1stGrade -0.0004 0.0032 0.0007 -0.0028 -0.0076 0.0102 0.0000 -0.0376 -0.0097 0.0008 -0.0042 -0.0387 0.0316 -0.0094 -0.0199 0.0027 0.0240
1stWithoutEva -0.0162 -0.0029 -0.0008 -0.0004 0.0103 0.0005 -0.0376 -0.0001 0.0075 -0.0007 -0.0430 0.0399 0.0069 0.4854 -0.0629 -0.0584 -0.0965
2ndCredited -0.0109 0.0052 0.0006 -0.0251 0.0053 -0.0103 -0.0097 0.0075 0.0000 0.0013 0.0159 0.0227 -0.0034 0.0169 -0.0048 -0.0100 -0.0011
2ndEnrolled -0.0003 0.0002 0.0000 0.0002 -0.0010 -0.0012 0.0008 -0.0007 0.0013 0.0000 0.0017 0.0004 0.0006 -0.0001 0.0005 -0.0010 0.0013
2ndEvaluations -0.0045 0.0043 -0.0001 -0.0261 0.0094 0.0020 -0.0042 -0.0430 0.0159 0.0017 0.0000 -0.0096 0.0127 0.0121 -0.0024 -0.0043 0.0481
2ndApproved -0.0038 -0.0001 -0.0012 -0.0123 0.0143 0.0136 -0.0387 0.0399 0.0227 0.0004 -0.0096 0.0000 0.0153 0.0207 0.0130 -0.0097 -0.0260
2ndGrade -0.0052 0.0021 0.0010 -0.0074 -0.0117 -0.0277 0.0316 0.0069 -0.0034 0.0006 0.0127 0.0153 0.0000 0.0075 -0.0275 -0.0013 0.0260
2ndWithoutEva -0.0193 -0.0089 -0.0006 -0.0072 -0.0321 0.0007 -0.0094 0.4854 0.0169 -0.0001 0.0121 0.0207 0.0075 -0.0001 -0.0281 -0.0399 -0.0401
Unemployment.rate 0.0006 -0.0076 -0.0002 -0.0141 0.0163 0.0177 -0.0199 -0.0629 -0.0048 0.0005 -0.0024 0.0130 -0.0275 -0.0281 0.0000 -0.0290 -0.3272
Inflation.rate 0.0253 -0.0139 0.0000 0.0192 -0.0031 0.0045 0.0027 -0.0584 -0.0100 -0.0010 -0.0043 -0.0097 -0.0013 -0.0399 -0.0290 0.0000 -0.1105
GDP -0.0152 0.0222 0.0010 -0.0073 -0.0287 -0.0147 0.0240 -0.0965 -0.0011 0.0013 0.0481 -0.0260 0.0260 -0.0401 -0.3272 -0.1105 0.0000
corrplot::corrplot(m_residual, method = "number")