---
title: "Análise PCA - Necessídade de cognição"
author: "Rafael Pereira dos Santos"
format:
html:
toc: true
toc-location: left
number-sections: true
theme: cosmo
page-layout: full
embed-resources: true
code-fold: false
code-tools: true
lang: pt-BR
editor: visual
---
# Pacotes Utilizados
Pacotes utilizados para a análise dos dados
```{r}
#load <- function(pkg){
# new.pkg <- pkg[!(pkg %in% installed.packages()[, "Package"])]
#if (length(new.pkg))
# install.packages(new.pkg, dependencies = TRUE)
#sapply(pkg, require, character.only = TRUE)
#}
## Pacotes utilizados nessa análise
#packages = c("tidyverse", "factoextra", "psych", "gridExtra", "readr", "janitor", "ggrepel", "patchwork", "corrplot", "corrr", "igraph", "ggraph", "ggplot", "dplyr", "tidyr")
#load(packages)
library(corrplot)
library(factoextra)
```
# Objetivo da análise
Este trabalho tem como objetivo investigar a estrutura de correlação entre 18 itens utilizados para avaliar a necessidade de cognição, com base em 201 observações, por meio da Análise de Componentes Principais (PCA).
A análise busca reduzir a dimensionalidade do conjunto de dados, investigando em que medida os 18 itens podem ser representados por um número menor de componentes. Pretende-se avaliar a proporção da variância total explicada por esse componente e verificar se sua utilização é adequada para a proposta do método.
Os dados analisados estão disponíveis em: **https://www.professortp.com.br/est328/dados/COGNITION.txt**. Acesso em: **26/10/2026**.
# Panorâma dos dados e da análise
Em suma, as 18 questões levantadas buscam entender e análisar a extensão com que o sujeito entrevistado gosta e se envolve no raciocínio e na resolução de problemas.
A redução da dimensionalidade é o principal propósito metodológico da investigação. Por meio da busca de padrões de associação entre os itens. Essa é uma alternativa para possíveis problemas como: utilizar várias medidas separadas, ou utilizar uma única métrica. Para tanto, uma ponto de partida é a soma de escores e a uso da PCA.
a comparação entre essas métodos permite examinar se o primeiro componente principal oferece uma síntese adequada dos itens e se apresenta vantagens interpretativas. Já a adequação dos componentes é avaliada a aprtir dos resultados, sem pressupor que uma única dimensão seja suficiente para representar os dados.
As questões (variáveis do banco de dados) levantadas foram:
---
title: "Descrições das variáveis"
---
| Variável | Pergunta / Descrição |
|:-----------------------------------|:-----------------------------------|
| C1 | Eu prefiro problemas complexos a problemas simples. |
| C2 | Gosto de ser responsável ao lidar com uma situação que requeira muito raciocínio. |
| C3 | Raciocinar não é minha ideia de diversão. (R) |
| C4 | Eu prefiro fazer algo que exija pouco raciocínio do que algo que com certeza desafiaria minhas capacidades de raciocínio. (R) |
| C5 | Tento prever e evito situações em que haja uma provável chance de eu ter que pensar profundamente sobre alguma coisa. (R) |
| C6 | Encontro satisfação em debater profundamente por longas horas. |
| C7 | Penso apenas o necessário. (R) |
| C8 | Prefiro pensar em pequenos projetos diários do que em projetos em longo prazo. (R) |
| C9 | Gosto de tarefas que exijam pouca reflexão após eu tê-las aprendido. (R) |
| C10 | A ideia de confiar em meu raciocínio para chegar ao topo me atrai. |
| C11 | Eu realmente gosto de uma tarefa que envolva fornecer novas soluções para os problemas. |
| C12 | Aprender novas maneiras de raciocinar não me anima muito. (R) |
| C13 | Prefiro que minha vida esteja repleta de problemas que devo resolver. |
| C14 | A noção de pensar abstratamente é atraente para mim. |
| C15 | Prefiro tarefas que envolvam raciocínio, sejam difíceis e importantes a aquelas que não exigem muito raciocínio.5 |
| C16 | Sinto alívio ao invés de satisfação quando termino uma tarefa que exigiu muito esforço mental. (R) |
| C17 | É suficiente para mim que algo termine o trabalho: não me importo como ou por que funciona. (R) |
| C18 | Normalmente, acabo por debater as questões, mesmo que não me afetem pessoalmente. |
# Leitura e inspeção dos dados
Carregamento e verificação dos dados quanto ao tipo, quantidade de linhas e colunas, e visualização das 50 primeras observações.
```{r}
path_link <- "https://www.professortp.com.br/est328/dados/COGNITION.txt"
dados <- read.table(path_link, header = TRUE)
# Visualizar as primeiras linhas
head(dados,50)
# Verificar a estrutura
str(dados)
# Conferir as dimensões
dim(dados)
#Resumo dos dados
summary(dados)
```
O conjunto de dados denominado "COGNITION" apresenta 201 observações dispostas em 19 colunas. Dentre as colunas, a primeira representa a identificação do respondentes e as demais, cujo a interpretação dos resultados é dado pela tabela nomeada de C1 até C18, representam o grau de conformidade dada a pergunta.
Dentre as varíaveis observadas, ao aplicar a função **str(dados)**, algumas se apresentaram como "character". Dado a natureza da pesquisa apresentada, e os objetivos da análise proposto. O seguinte critério de avaliação e mudança foi proposto.
1) Avaliar se a variálvel é de natureza não inteira.
2) Caso positivo, converter a variável para tipo inteiro.
3) Valores divergentes, não numéricos, foram transformados em Valor Ausente (NA)
## Tratamento dos dados e verificação de inconsistências
```{r}
# Identificação de colunas que não são numéricas ou inteiras
for (i in 1:ncol(dados)) {
if (!is.numeric(dados[[i]]) || !is.integer(dados[[i]])) {
print(names(dados)[i])
}
}
```
Com as devidas colunas identificadas, o objetivo do código abaixo está em examinar colunas, linhas e valores apresentados como "character". Desse modo, é possível investigar a natureza dos dados não numéricos.
```{r}
for (i in 1:ncol(dados)) {
if (is.character(dados[[i]])) {
x_num <- as.numeric(dados[[i]])
posicao <- which(!is.na(dados[[i]]) & is.na(x_num))
if (length(posicao) > 0) {
print(names(dados)[i])
for (j in posicao) {
print(paste("Linha:", j,
"Valor:", dados[j, i]))
}
}
}
}
```
Para garantir a integridade dos dados, nessa etapa optou-se pela cópia do banco de dados de modo que o tratamento referente as linhas com valores não numéricos pudesse ser realziada.
```{r}
dados_tratados <- dados
```
Conversão das colunas não munéricas (character) para colunas numéricas. Nessa etapa os textos inválidos foram convertidos em Valores Ausentes (ÑA).
```{r}
for (i in 1:ncol(dados_tratados)) {
if (is.character(dados_tratados[[i]])) {
dados_tratados[[i]] <- as.numeric(dados_tratados[[i]])
}
}
```
A inspeção inicial identificou valores ausentes em 6 (seis) ds 201 observações. Considerando que a análise de componentes principais desenvolvida se apoia nas 18 variáveis presentes no banco de dados, foi adotado a posição de exclisão dos casos incompletos, de modo que pudesse ser obtido uma matriz de dados completa. A decisão pela exclusão preserva a aplicação da PCA, por exemplo, por meio do método prcomp(), mas reduziu a amostra para 195 obsrvações.
Observação: um outro processo possível para está análise seria uma avaliação das observações para o processo de tratamento de dados via imputação. Estratégia não adotada para o presente trabalho.
```{r}
#Exclusão de linhas com valores ausentes
linhas_excluir <- which(
rowSums(is.na(dados_tratados[, 2:19])) > 0
)
dados_tratados <- dados_tratados[-linhas_excluir, ]
```
Excluído as linhas com valores ausentes. Por fim, será aplicada o prcoesso de verificação para avaliar a adequação dos dados com os métodos propostos.
```{r}
# Conferência de resultado
str(dados)
str(dados_tratados)
dim(dados)
dim(dados_tratados)
colSums(is.na(dados_tratados))
View(dados_tratados)
```
## Recodificação dos dados de classificação reversa
Após o tratamento dos valores ausentes (NA) e a conversão das variáveis para o tipo numérico, a próxima etapa consiste na recodificação dos itens formulados em sentido reverso. Esse procedimento tem como objetivo orientar todos os itens na mesma direção interpretativa, de modo que escores mais elevados representem uma maior necessidade de cognição. Dessa forma, torna-se mais coerente comparar os itens e construir um índice sintético por meio da soma dos escores, além de realizar análises multivariadas.
Com base nos enunciados das questões disponibilizadas na pesquisa, foram identificados nove itens com codificação reversa: C3, C4, C5, C7, C8, C9, C12, C16 e C17.
```{r}
# Criar uma cópia para análise
dados_pca <- dados_tratados
# Identificar os itens reversos
itens_reversos <- c(
"C3", "C4", "C5", "C7", "C8",
"C9", "C12", "C16", "C17"
)
# Recodificar os itens reversos
for (i in itens_reversos) {
dados_pca[[i]] <- 6 - dados_pca[[i]]
}
View(dados_pca)
```
# Análise Exploratória dos dados
Nesta etapa, são análisadas as variáveis presentes no conjunto de dados pós tratamento. O objetibo consiste em analisar tanto individualemnte por meio de processos de visuação como resumo dos dados, dsitrbuição de frequência (histograma e bloxplot) , quanto de maneira conjunta, por meio matrizes de covariância e correlação.
## Leitura dos dados (resumo)
Após a adequação das variáveis para que os resumos estatísticos pudessem ser explorados, por meio do método **summary()**, temos os seguintes resultados
```{r}
summary(dados_pca[,2:19])
```
Inicialmente, foi realizada uma análise descritiva dos 18 itens que compõem a escala de necessidade de cognição, considerando medidas de tendência central, como média e mediana, e medidas de posição, como primeiro e terceiro quartis. Essa etapa tem como objetivo compreender o comportamento geral das respostas, identificar diferenças entre os itens e observar possíveis padrões.
De maneira geral, observa-se que as médias dos itens variam entre 3,241 (C1) e 4,246 (C12), enquanto as medianas se encontram entre 3 e 5. Esse comportamento indica que, considerando os valores apresentados, existe uma tendência de respostas em categorias intermediárias e superiores da escala. Para garantir a correta interpretação, o processo de recodificação foi realizado, de modo que todas categorias apresentem o mesmo sentido, do menor (1) para o maior (5) da necessidade de cognição.
Entre os itens com maiores médias, destacam-se C12 (4,246), C11 (4,205), C3 (4,179), C5 (4,169) e C17 (4,097). Por outro lado, C1 (3,241), C6 (3,287), C13 (3,287) e C18 (3,328) apresentam as menores médias. Essa diferença da evidencias de que os participantes não responderam de maneira uniforme, com aparente diferença entre aos aspectos avaliados.
A análise das medianas complementa esse resultado. Os itens C3 e C12 apresentam mediana igual a 5, indicando que o valor central das respostas se encontra na categoria mais elevada da escala. Já C13 apresenta mediana igual a 3, sendo o único item com esse valor. Os demais itens apresentam mediana igual a 4. Esse resultado apresenta uma tedência central inferior para a necessidade de cognição de C13 (Prefiro que minha vida esteja repleta de problemas que devo resolver).
Já em relação aos quartis, 4 (quatro) itens apresentam amplitude entre quatis igual a 1, indício de menor dispersão entre os 50% centrais dos dados. Já 14 variáveis apresentam amplitude entre quartis maior ou igual a 2, o que pode indicar maior variabilidade entre os 50% centrais dos dados.
Em geral, a análise acima permitiu evidenciar diferenças entre a posição central e seus quartis. Contudo, a descrição funciona de maneira individual, e isso por si só não sustenta, ou permite identificar, relações para uma única representação da necessidade de cognição, objetivo da análise.
## Visualização exploratória e frequência dos dados
A partir dos resultados obtidos por meio do resumos dos dados, posição central e amplitude, a visuzação da frequência de cada categoria nos permite avaliar o comportamento das variáveis e a possível identificação de variáveis extremas - que podem concentrar muitas respotas para baixa necessidade de cognição, ou alta necessidade.
```{r}
# Selecionar os nomes das variáveis, excluindo ID
attr_names <- setdiff(names(dados_pca), "ID")
library("tidyverse")
# Selecionar somente os itens
X <- dados_pca %>%
select(all_of(attr_names))
# Transformar os dados para formato longo
X_long <- dados_pca %>%
pivot_longer(
cols = all_of(attr_names),
names_to = "atributo",
values_to = "nota"
)
# Guardar a coluna ID separadamente como fator
ID_fac <- dados_pca %>%
mutate(ID = as.factor(ID)) %>%
pull(ID)
# Padronizar as variáveis
X_scaled <- scale(X)
df_scaled <- data.frame(
ID = ID_fac,
X_scaled
)
# Histogramas facetados
p_hist <- ggplot(X_long, aes(x = nota)) +
geom_histogram(
binwidth = 1,
boundary = 0.5,
color = "white",
fill = "#2E9FDF"
) +
facet_wrap(
~ atributo,
scales = "fixed"
) +
scale_x_continuous(
breaks = 1:5,
limits = c(0.5, 5.5)
) +
scale_y_continuous(
breaks = seq(0, 100, by = 10),
limits = c(0, 100)
) +
labs(
title = "Distribuição das respostas por item",
x = "Nível de necessidade de cognição",
y = "Frequência"
) +
theme_minimal()
p_hist
```
A visualização gráfica permite observar a distribuição das respostas nos 18 itens da escala. De maneira geral, nota-se uma concentração de respostas nas categorias superiores, especialmente nos níveis 4 e 5, embora esse comportamento apresente diferenças entre os itens. Algumas variáveis, como C10, C11, C12 e C17, demonstram concentração mais acentuada nessas categorias, enquanto C1, C6, C13 e C18 apresentam distribuições relativamente mais dispersas entre os níveis de resposta. como esperado, algumas variáveis apresentam maior concentração em um nível específico, já outras possuem seus resultados mais heterogêneos.
E como complemento da análise visual, a frequência dos dados é expressa por;
```{r}
for (i in 2:19) {
freq <- prop.table(table(dados_pca[[i]])) *100
cat("\nVariável:", names(dados_pca)[i], "\n")
print(freq)
}
```
Entre os itens apresentados, C12 destaca-se por apresentar 55,90% das respostas na categoria 5, seguido de C3 (50,26%), C17 (49,23%), C5 (48,72%) e C11 (45,13%). Esses resultados demonstram uma concentração expressiva de respostas na categoria superior da escala.
Por outro lado, C13 apresenta uma distribuição mais equilibrada entre as categorias intermediárias, com 28,21% das respostas na categoria 3 e 33,85% na categoria 4. Esse comportamento está de acordo com sua mediana igual a 3.
Assim, a análise das frequências proporcionais complementa as medidas descritivas, permitindo identificar com maior precisão as categorias que concentram as respostas dos participantes. A próxima etapa consiste no estudo da correlação entre as variáveis.
## Matriz de correlação
A partir dos levantamentos realizados por meio das medidas centrais, intervalar e, por meio da visualização da distribuição de frequência de cada um das variáveis. A etapa subsequente consiste em avaliar a correlação entre as variáveis. Dessa forma é possível examinar como as diferentes variáveis se comportam duas a duas, e se possuem algum padrão evidente.
```{r}
cormat <- cor(dados_pca[2:19])
corrplot(cormat, method = "color", type = "upper", addCoef.col = "black",
tl.col = "black", tl.srt = 45, number.cex = .6,
title = "Matriz de correlações entre variáveis")
```
O primeiro ponto de destaque da matriz de correlação está no fato de todos os valores apresentarem correlações predominantemente positivas, esse fato é um indício de que, a´pos a recodificação dos dados reversos, resposts mais elevadas em determinado item tendem a estar associadas a respostas mais elevadas dos demais. Isto é, exigem maior necessidade de cognição.
Ao avaliar a intensidade, é possível destacar as correlações de certa forma moderadas como: C4-C5(0.57), C5-C12(0.52) e C10-C11(0.52), enquanto há outras correlações fracas como: C9-C18(0.01), C8-C18(0.03) e C13-C16(0.05).
Ainda que o objetivo da matriz dê indícios de associação entre as variáveis, aidna não é possível afirmar que um único componente seja suficiente para representar sozinho a necessidade de cognição. Avaliação essa feita via PCA.
# Análise via PCA
Por meio da Análise de Componentes Princiáis (PCA), a análise boscou transformar varíaveis potencialmente correlacionadas em um conjunto menor de variáveis por meio da projeção de dados ára reter a maior quantidade de informação (variância). Em resumo, buscando os candidatos da PC1 (primeiro componente principal) e PC2 (segundo componente principal) que, de certo modo, formam a base explicativa via PCA.
```{r}
#Sabendo que PCA é sensível a escala
# PCA sobre correlações (equivalente a prcomp com scale.=TRUE)
pca <- prcomp(dados_pca[2:19], center = TRUE, scale. = TRUE)
pca %>%
summary()
```
Ao avaliarmos o resultado obtido via PCA, o primeiro componente captura 32,11% da variância total. Em contrapartida, 67,89% ainda fica reservada para as outras 17 componentes. Para alcançar um valor próximo a 70%, por exemplo, deve-se acumular a informação das 8 primeiras componentes.
## Gráfico de "cotovelo" - Autovalores associados as componentes explicativas
A informação apresentada via PCA sugere que uma representação unidimensional não capta de forma adquada as relações presentes nos dados.
```{r}
fviz_eig(pca, geom="line", choice = c("eigenvalue"), addlabels = TRUE, main = "")
```
Com base no Screen plot, é possível avaliar os autovalores, e consequentemente, o poder de dimensão. O gráfico apresenta quada acentuada entre a primeira e a segunda dimensão. Contudo, segue quase como um linha reta a partir da segunda dimensão, apresentando leve variação entre as demais.
A estrutura do gráfico reforça que existe uma componente que domina - PC1, isso não significa que ela sozinha represente bem os dados.
A representação via PCA-biplot não foi utilizada, visto que PC1 + PC2 representam menos de 40% da variabilidade total.
## Análise entre comparação de escores e PC1
A ideia está em avalair se combinação ponderada da PCA ou a simples soma dos itens representam os participantes de maneira semelhante. O teste é realizado via correlação
**Cálculo de escores**
```{r}
# Selecionar os 18 itens
X <- dados_pca[, 2:19]
# Calcular o índice tradicional
indice_soma <- rowSums(X)
# Extrair os escores individuais da primeira componente
escore_pc1 <- pca$x[, 1]
# Correlação entre as duas medidas
cor(indice_soma, escore_pc1)
```
O valor da correlação obtida foi de 0.9933 - o que indica uma correlação muito alta entre os componentes comparadas.
**Visualização da coorelação**
```{r}
plot(
indice_soma,
escore_pc1,
xlab = "Escore (soma dos itens)",
ylab = "Escore da primeira componente (PC1)",
main = "Comparação entre o Escore e PC1",
pch = 19
)
abline(
lm(escore_pc1 ~ indice_soma),
col = "red",
lwd = 2
)
```
Obitdo o valor de 0.9933 e dado o gráfico de correlação entre as medidas, o valor elevado indica qque as duas medidas tendem a ordenar os participantes de maneira semelhante.
# Critério de escolha e conclusão
Com base no valor de correlação obtido (0.9933), a escolha pela soma dos itens (escore) produz uma ordenação dos dados semelhantes a realizada pelo PC1. A possível escolha por esse métode seria devido a sua simplificação dos cálculos quando comparada a obtenção da PC1.
A análise de componentes principais permitiu investigar a estrutura de informação das 18 variáveis para mensurar a necessidade de cognição. Os resultados obtidos indicam que a PC1 explica 32,11% da variância. Contudo, Apesar do poder explicativo da PC! em comparação com as demais componentes, dado o que fica de fora da sua variabilidade, PC1 não aparende ser um bom candidato para representar toda a informação dos dados. E como concluído acima, a soma de índices se mostrou uma alternativa viável para representar os escores. Principalmente pela sua simplicitade de cálculo e interpretação.