A análise fatorial é uma técnica estatística usada para identificar estruturas latentes que explicam as correlações entre um grande número de variáveis observadas. Ela busca encontrar fatores não observáveis que causam variações comuns em um conjunto de variáveis observadas. Esses fatores são estimados com base nas correlações entre as variáveis, e a interpretação dos fatores é facilitada por técnicas de rotação. A análise fatorial é amplamente utilizada em várias disciplinas, como psicologia, educação, marketing e ciências sociais, para entender padrões complexos, reduzir a dimensionalidade dos dados e interpretar variáveis com forte correlação. # Carregando os pacotes
library(tidyverse)
library(readr)
library(FactoMineR)
library(factoextra)
library(DT)
library(ggplot2)
library(ggcorrplot)
library(corrplot)
library(gt)
library(psych)
library(GPArotation)
library(QuantPsyc)
Este conjunto de dados resume um conjunto heterogêneo de características sobre artigos publicados pela Mashable em um período de dois anos.
Foram selecionadas apenas 15 variáveis e 400 observações para a análise fatorial, devido a grande extensão do conjunto de dados original e devido a problemas em rodar a análise fatorial com um número muito grande de observações.
Iremos aplicar a o teste de Bartlett para verificar se a matriz de correlação é adequada para a análise fatorial.
cortest.bartlett(cor(dados),n=nrow(dados))
## $chisq
## [1] 6435
##
## $p.value
## [1] 0
##
## $df
## [1] 105
Como o valor p do teste de Bartlett é menor que 0.05, rejeitamos a hipótese nula de que a matriz de correlação é uma matriz de identidade, indicando que existe ao menos uma correlação significativa entre as variáveis.
ggcorrplot(
cor(dados),
hc.order = T,
type = "lower",
lab = T,
colors = c("#003262", "#FFFFFF", "#D21E1C")
)
Pela matriz de correlação é possível observar que a maioria das variáveis não possuem correlação significativa entre si.
AFr<-fa(dados,nfactors=3, rotate = "varimax")
AFr
## Factor Analysis using method = minres
## Call: fa(r = dados, nfactors = 3, rotate = "varimax")
## Standardized loadings (pattern matrix) based upon correlation matrix
## MR1 MR2 MR3 h2 u2 com
## timedelta 0.00 -0.75 -0.02 0.555 0.4446 1.0
## n_tokens_title -0.04 0.17 -0.03 0.033 0.9675 1.2
## average_token_length -0.01 -0.13 0.00 0.017 0.9832 1.0
## kw_min_min -0.04 -0.85 -0.09 0.731 0.2686 1.0
## kw_max_min 0.99 -0.01 -0.13 0.991 0.0095 1.0
## kw_avg_min 0.99 -0.04 -0.13 0.989 0.0107 1.0
## kw_min_max -0.02 0.20 0.22 0.090 0.9102 2.0
## kw_max_max 0.05 0.90 0.08 0.825 0.1746 1.0
## kw_avg_max 0.11 0.69 0.34 0.600 0.4002 1.5
## kw_min_avg -0.02 0.19 0.29 0.122 0.8784 1.7
## kw_max_avg 0.93 -0.03 0.32 0.962 0.0376 1.2
## kw_avg_avg 0.88 0.10 0.39 0.940 0.0601 1.4
## self_reference_min_shares 0.12 -0.11 0.77 0.624 0.3763 1.1
## self_reference_max_shares 0.07 -0.03 0.68 0.471 0.5289 1.0
## shares 0.12 0.00 0.00 0.014 0.9859 1.0
##
## MR1 MR2 MR3
## SS loadings 3.63 2.71 1.62
## Proportion Var 0.24 0.18 0.11
## Cumulative Var 0.24 0.42 0.53
## Proportion Explained 0.46 0.34 0.20
## Cumulative Proportion 0.46 0.80 1.00
##
## Mean item complexity = 1.2
## Test of the hypothesis that 3 factors are sufficient.
##
## df null model = 105 with the objective function = 16.37 with Chi Square = 6435
## df of the model are 63 and the objective function was 3.72
##
## The root mean square of the residuals (RMSR) is 0.07
## The df corrected root mean square of the residuals is 0.08
##
## The harmonic n.obs is 400 with the empirical chi square 359.2 with prob < 4.7e-43
## The total n.obs was 400 with Likelihood Chi Square = 1453 with prob < 3.6e-262
##
## Tucker Lewis Index of factoring reliability = 0.632
## RMSEA index = 0.235 and the 90 % confidence intervals are 0.225 0.246
## BIC = 1076
## Fit based upon off diagonal values = 0.95
## Measures of factor score adequacy
## MR1 MR2 MR3
## Correlation of (regression) scores with factors 1.00 0.96 0.95
## Multiple R square of scores with factors 1.00 0.93 0.90
## Minimum correlation of possible factor scores 0.99 0.85 0.79
A primeira coisa a ser observada nesta saída é o valor de TLI, ou Tucker-Lewis Index, que é uma medida de ajuste do modelo. O TLI varia de 0 a 1, e valores acima de 0.9 indicam um bom ajuste do modelo. Neste caso o TLI é de aproximadamente 0.6, indicando que o modelo não se ajusta muito bem aos dados.
Porém supondo que o modelo se ajuste bem aos dados, a saída da análise fatorial nos fornece informações sobre os fatores extraídos, como a comunalidade, a variância explicada e a carga fatorial de cada variável em cada fator.
Para facilitar a interpretação irei extrair as cargas fatoriais maiores que 0.4. Cargas abaixo dessa magnitude são consideradas fracas e podem ser ignoradas.
print(AFr$loadings,cutoff = 0.4)
##
## Loadings:
## MR1 MR2 MR3
## timedelta -0.745
## n_tokens_title
## average_token_length
## kw_min_min -0.850
## kw_max_min 0.987
## kw_avg_min 0.985
## kw_min_max
## kw_max_max 0.904
## kw_avg_max 0.688
## kw_min_avg
## kw_max_avg 0.925
## kw_avg_avg 0.883
## self_reference_min_shares 0.773
## self_reference_max_shares 0.682
## shares
##
## MR1 MR2 MR3
## SS loadings 3.632 2.713 1.619
## Proportion Var 0.242 0.181 0.108
## Cumulative Var 0.242 0.423 0.531
Pela saída acima, é possível observar que a maioria das variáveis possuem cargas fatoriais significativas em pelo menos um dos fatores extraídos. As cargas fatoriais variam de -1 a 1, e valores próximos de 1 indicam uma relação forte entre a variável e o fator, cargas próximas de 0 indicam que a variável não está relacionada ao fator e cargas próximas de -1 indicam uma relação negativa entre a variável e o fator.
Outra coisa a ser observada é a variância acumulada para os três fatores, que é de 0.428, o ideal é que a variância acumulada seja maior que 0.6, no nosso exemplo o ideal seria extrair mais fatores.
Fernandes,Kelwin, Vinagre,Pedro, Cortez,Paulo, and Sernadela,Pedro. (2015). Online News Popularity. UCI Machine Learning Repository. https://doi.org/10.24432/C5NS3V.