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)| 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$Targetggplot(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")