---
title: "Pré-processamento de dados quantitativos: passo a passo"
url: https://www.blog.psicometriaonline.com.br/pre-processamento-de-dados-quantitativos-passo-a-passo
canonical: https://www.blog.psicometriaonline.com.br/pre-processamento-de-dados-quantitativos-passo-a-passo
language: pt-BR
published: 2026-10-07T11:22:48.587Z
updated: 2026-10-07T11:24:36.167Z
modified: 2026-10-07T11:24:36.167Z
author: "Alessandro Reis"
categories: ["Tutoriais"]
tags: ["dados categóricos", "manipulação do banco de dados", "tutorial no R"]
description: "Entenda, com exemplo reproduzível em R, as etapas essenciais do pré-processamento de dados quantitativos: da limpeza e remoção de duplicatas até a imputação de "
source: Blog Psicometria Online
---
# Pré-processamento de dados quantitativos: passo a passo
> Entenda, com exemplo reproduzível em R, as etapas essenciais do pré-processamento de dados quantitativos: da limpeza e remoção de duplicatas até a imputação de dados faltantes, transformação de variáveis e codificação de categorias.
Antes de qualquer teste t, modelo de equações estruturais ou análise fatorial, existe uma etapa que raramente aparece nos manuscritos publicados, mas que determina se os resultados finais serão confiáveis: **o pré-processamento dos dados**. Trata-se do conjunto de decisões tomadas entre a coleta e a análise propriamente dita, decisões sobre o que corrigir, o que manter, o que transformar e o que descartar.
Esse processo é cumulativo: um erro de digitação não corrigido infla a variância de uma escala, um dado faltante ignorado enviesa uma média, uma variável categórica mal codificada distorce coeficientes de regressão. Como já destacamos ao [explorar as etapas da análise de dados](/explorando-as-etapas-da-analise-de-dados), a preparação consome, na prática, a maior parte do tempo de qualquer pesquisa quantitativa séria. Este post percorre o fluxo completo, do mais simples ao mais técnico, com um exemplo reproduzível em R.
## Limpeza de dados
Limpeza de dados é o termo guarda-chuva para o conjunto de verificações que garantem que a planilha reflita o que de fato foi medido: valores dentro do intervalo esperado (uma idade de 230 anos é erro de digitação, não um caso extremo), tipos de variável corretos (uma variável numérica que o R leu como texto por causa de um símbolo), nomes de colunas consistentes e ausência de linhas totalmente vazias. Van den Broeck et al. (2005) descrevem esse processo como uma sequência de três fases, a saber, detecção, diagnóstico e edição da anomalia, sempre documentando cada alteração para que a análise permaneça auditável.
Na prática em R, a limpeza começa com funções simples de inspeção, como \`str()\`, \`summary()\` e \`table()\`, aplicadas a cada variável antes de qualquer modelo. Como discutimos em [preparação de dados antes do algoritmo](/antes-do-algoritmo-por-que-a-preparacao-de-dados-decide-o-sucesso-do-seu-machine-learning), negligenciar essa etapa transfere o problema para a fase de análise, onde ele é mais difícil e mais caro de corrigir.
## Remoção de duplicatas
Registros duplicados surgem de reenvios de formulário, junções de bases ou erros de digitação de ID, e inflam artificialmente o tamanho amostral, o que compromete testes de significância e estimativas de erro padrão. A verificação deve considerar tanto duplicatas exatas (todas as colunas iguais) quanto duplicatas parciais (mesmo respondente com pequenas variações, por exemplo).
Suponha um banco de dados simulado com 150 respondentes de um estudo sobre qualidade de vida, no qual três casos foram inseridos duas vezes por erro de exportação.
```r
set.seed(123)
dados <- data.frame(
id = 1:150,
idade = round(rnorm(150, mean = 35, sd = 10)),
escolaridade = sample(c("Fundamental", "Medio", "Superior",
"medio", "MEDIO"), 150, replace = TRUE),
grupo = sample(c("Controle", "Intervencao"), 150, replace = TRUE),
item1 = sample(1:5, 150, replace = TRUE),
item2 = sample(1:5, 150, replace = TRUE),
item3 = sample(1:5, 150, replace = TRUE)
)
dados_dup <- rbind(dados, dados[1:3, ])
sum(duplicated(dados_dup))
dados <- dados_dup[!duplicated(dados_dup), ]
```
A função \`duplicated()\` retorna um vetor lógico identificando cada linha que repete uma anterior; somar esse vetor informa quantos casos remover. Aqui o resultado esperado é 3, confirmando a suspeita inicial. O descarte deve sempre ser registrado no diário metodológico do projeto, inclusive o número de casos removidos, para que o fluxo de participantes (do tipo exigido por diretrizes como o CONSORT ou o STROBE) permaneça rastreável.
## Tratamento de typos
Erros de digitação em variáveis categóricas são sutis porque não geram valores ausentes, apenas categorias extras não planejadas. No exemplo simulado, a variável de escolaridade foi digitada de cinco formas diferentes para três categorias reais ("Medio", "medio", "MEDIO"), algo comum em formulários de preenchimento livre ou em digitação manual de questionários em papel.
```r
table(dados$escolaridade)
dados$escolaridade <- tolower(trimws(dados$escolaridade))
dados$escolaridade <- factor(
dados$escolaridade,
levels = c("fundamental", "medio", "superior"),
labels = c("Fundamental", "Medio", "Superior")
)
table(dados$escolaridade)
```
A combinação de \`trimws()\` (remove espaços nas extremidades) e \`tolower()\` (uniformiza a caixa do texto) resolve a maioria dos casos antes de recodificar os níveis definitivos com \`factor()\`. Em bases maiores, vale inspecionar a tabela de frequências de toda variável categórica antes de prosseguir, pois uma categoria com um único caso costuma ser erro de digitação, não uma resposta legítima minoritária.
## Tratamento de dados faltantes
Dados faltantes existem em praticamente todo estudo com humanos, seja por item não respondido, por desistência em protocolos longitudinais ou por falha técnica na coleta. A decisão sobre como tratá-los depende do mecanismo de ausência, conceito formalizado por Little e Rubin (2002): dados faltantes completamente ao acaso (MCAR), quando a ausência não se relaciona com nenhuma variável observada ou não observada; faltantes ao acaso (MAR), quando a ausência se relaciona com variáveis observadas no banco; e faltantes não ao acaso (MNAR), quando a própria ausência depende do valor que faltou (por exemplo, pessoas com renda mais baixa deixam de responder à pergunta sobre renda).
A exclusão listwise (remover qualquer caso com um NA) só é defensável sob MCAR e com baixa proporção de perdas, caso contrário reduz o poder estatístico e pode introduzir viés. A imputação pela média é ainda mais problemática, pois distorce a variância e as correlações entre variáveis. A alternativa recomendada na literatura metodológica é a imputação múltipla, que gera vários bancos completos plausíveis, estima o modelo em cada um e combina os resultados incorporando a incerteza da imputação.
```r
set.seed(456)
na_idx <- sample(1:nrow(dados), 20)
dados$item2[na_idx] <- NA
colSums(is.na(dados))
```
O resultado de \`colSums(is.na(dados))\` mostra quantos valores ausentes existem em cada coluna, aqui 20 casos apenas em \`item2\`. Esse diagnóstico inicial já orienta a escolha do método: poucas colunas afetadas e proporção moderada de perdas favorecem a imputação múltipla.
```r
library(mice)
imputado <- mice(dados[, c("idade", "item1", "item2", "item3")],
m = 5, method = "pmm", seed = 500)
dados_completo <- complete(imputado)
dados_completo$grupo <- dados$grupo
dados_completo$escolaridade <- dados$escolaridade
summary(dados_completo$item2)
```
O pacote mice (Van Buuren & Groothuis-Oudshoorn, 2011) gera, por padrão, cinco bancos imputados (\`m = 5\`) usando pareamento por média preditiva (\`method = "pmm"\`), uma técnica que substitui o valor ausente por um valor realmente observado em casos semelhantes, preservando a distribuição original da variável. Nesse exemplo, apenas as variáveis numéricas com NA entraram no modelo de imputação; as variáveis categóricas \`grupo\` e \`escolaridade\` não tinham valores ausentes e por isso são reincorporadas diretamente do banco original logo após a imputação, já que a ordem das linhas permanece a mesma. Em bases onde essas variáveis categóricas também tiverem perdas, ou onde forem relevantes para explicar o mecanismo de ausência, o recomendável é incluí-las desde o início no modelo de imputação, como preditoras auxiliares. A função \`complete()\` extrai um banco único para fins didáticos; em uma análise real, o correto é ajustar o modelo de interesse em cada um dos cinco bancos e combinar as estimativas com \`pool()\`. Na seção de método do artigo, uma frase como "os dados faltantes foram tratados por imputação múltipla com o algoritmo pmm, com cinco conjuntos imputados" já comunica o procedimento de forma reportável.
## Transformação de variáveis e Feature Engineering
Transformar variáveis significa recalcular ou recombinar os dados originais para que atendam melhor aos pressupostos da análise ou representem melhor o construto teórico. As transformações mais comuns em pesquisa quantitativa são a padronização (converter a variável em escore z, com média 0 e desvio-padrão 1), a criação de escores compostos (somar ou calcular a média de itens de uma escala) e a correção de assimetria por meio de transformações logarítmicas ou da família Box-Cox, descrita em detalhe por Osborne (2010) como alternativa quando a distribuição de uma variável contínua viola o pressuposto de normalidade exigido por muitos testes paramétricos.
```r
dados_completo$escore_total <- rowSums(
dados_completo[, c("item1", "item2", "item3")]
)
dados_completo$escore_z <- scale(dados_completo$escore_total)
dados_completo$idade_log <- log(dados_completo$idade)
dados_completo$faixa_etaria <- cut(
dados_completo$idade,
breaks = c(0, 30, 50, Inf),
labels = c("Ate 30", "31 a 50", "Acima de 50")
)
```
O \`escore\_total\` soma as respostas dos três itens, prática usual na construção de escalas somadas; \`scale()\` converte esse escore em z, útil quando se deseja comparar construtos medidos em métricas diferentes. A transformação logarítmica em \`idade\_log\` só se justifica quando a variável original apresenta assimetria relevante, o que deve ser checado com um histograma ou com um índice de assimetria antes de aplicá-la, nunca por rotina. Já \`cut()\` categoriza uma variável contínua em faixas: esse tipo de recodificação (feature engineering, na terminologia mais ampla de preparação de dados) facilita a leitura descritiva, mas dicotomizar ou categorizar uma variável contínua sem justificativa teórica descarta informação e reduz poder estatístico, um ponto já criticado de forma recorrente na literatura metodológica sobre análise multivariada.
## Codificação de Variáveis Categóricas
Modelos estatísticos exigem representação numérica mesmo para variáveis nominais e ordinais. A forma mais comum é a codificação dummy (ou indicadora), em que uma variável categórica com k níveis é transformada em k-1 colunas binárias, cada uma comparando um nível à categoria de referência. Uma alternativa a essa codificação é a codificação por efeito (effect coding), que compara cada nível à média geral em vez de a uma categoria de referência, útil quando não há um grupo de controle natural.
```r
dados_completo$grupo <- factor(dados_completo$grupo,
levels = c("Controle", "Intervencao"))
contrasts(dados_completo$grupo)
matriz_dummy <- model.matrix(~ escolaridade, data = dados_completo)
head(matriz_dummy)
```
A matriz exibida por \`contrasts()\` mostra como o R codifica internamente o fator: o nível "Controle" vira a referência (0) e "Intervencao" recebe 1, de modo que o coeficiente de regressão associado a essa variável representa a diferença esperada do grupo intervenção em relação ao controle. Já \`model.matrix()\` aplicado a uma variável com três categorias gera duas colunas dummy automaticamente, uma para cada nível além da referência. Variáveis ordinais (como grau de concordância em escala Likert) merecem atenção à parte, pois tratá-las como meramente nominais descarta a ordem natural das categorias; nesses casos, codificação ordinal ou o uso de contrastes polinomiais costuma preservar melhor a informação.
## Redução de Dimensionalidade e Seleção de Recursos
Quando o banco reúne dezenas de itens ou indicadores correlacionados, reduzir a dimensionalidade significa substituir esse conjunto por um número menor de variáveis que preservem a maior parte da informação original. Em pesquisa com instrumentos de medida, essa etapa costuma assumir a forma de análise fatorial exploratória, que estima fatores latentes (variáveis não observadas que, supostamente, causam as respostas correlacionadas aos itens), separando a variância comum entre itens da variância específica e do erro de medida de cada um. A análise de componentes principais, embora às vezes usada com objetivo semelhante, parte de uma lógica distinta: ela apenas combina linearmente as variáveis observadas em componentes que resumem o máximo possível da variância total, sem distinguir variância comum de erro e sem pressupor a existência de um construto latente subjacente. Essa diferença conceitual é central na psicometria e orienta a escolha do método conforme o objetivo seja explicar a correlação entre itens por um construto teórico (análise fatorial) ou simplesmente reduzir um conjunto de variáveis a poucos escores resumo (componentes principais).
Fora do contexto psicométrico, a seleção de variáveis preditoras (por exemplo, em um modelo de regressão com muitos indicadores sociodemográficos) deve ser guiada por teoria e não apenas por critérios estatísticos automáticos, sob risco de resultados que não se replicam em outra amostra.
## Ajuste de Amostragem e Balanceamento
Em levantamentos amostrais, o ajuste mais comum não é reamostrar artificialmente, mas ponderar os casos (pesos amostrais) para corrigir desproporções entre a amostra obtida e a população-alvo, por exemplo quando um estrato etário foi sub-representado na coleta. Em estudos experimentais, o cuidado equivalente é verificar se os grupos de comparação ficaram de tamanho semelhante após perdas de seguimento, e reportar essa diferença de forma transparente.
Técnicas de balanceamento artificial de classes, usadas com frequência em modelos preditivos de classificação, têm aplicação limitada em pesquisa confirmatória em humanas e saúde, pois alteram a estrutura de covariância dos dados; quando usadas, devem ser tratadas como parte de um modelo exploratório, não de uma inferência causal.
## Perguntas frequentes
Pré-processamento e análise exploratória de dados são a mesma coisa?
Não exatamente: a análise exploratória descreve e visualiza os dados para gerar hipóteses, enquanto o pré-processamento corrige e prepara os dados para que uma análise (exploratória ou confirmatória) seja válida.
Devo sempre usar imputação múltipla para dados faltantes?
Não sempre; com proporção muito baixa de perdas e mecanismo plausivelmente MCAR, a exclusão listwise pode ser aceitável, mas a imputação múltipla é a opção mais robusta na maioria dos cenários com MAR.
Em que ordem as etapas de pré-processamento devem ser feitas?
Uma sequência comum é limpeza geral, remoção de duplicatas, correção de typos, tratamento de dados faltantes e só então transformação e codificação de variáveis, pois cada etapa depende da anterior estar correta.
É preciso documentar todas as decisões de pré-processamento no artigo?
Sim: diretrizes de relato como o STROBE e boas práticas de ciência aberta recomendam descrever cada tratamento aplicado aos dados brutos, idealmente com o script disponibilizado.
## Referencias
1. Buuren, Groothuis-Oudshoorn (2011) mice: Multivariate Imputation by Chained Equations inR. Journal of Statistical Software. https://doi.org/10.18637/jss.v045.i03
2. Little, Rubin (2002) Statistical Analysis with Missing Data. Wiley Series in Probability and Statistics. https://doi.org/10.1002/9781119013563
3. Box-Cox Transformation. SpringerReference. https://doi.org/10.1007/springerreference\_205237
4. Van den Broeck et al. (2005) Data Cleaning: Detecting, Diagnosing, and Editing Data Abnormalities. PLoS Medicine. https://doi.org/10.1371/journal.pmed.0020267
**Continue aprendendo:** para dominar este tema na pratica, conheca a formacao *Construcao, Adaptacao e Validacao de Instrumentos* da Psicometria Online Academy.
*Este conteudo e educativo; verifique os pressupostos e adapte ao seu desenho de pesquisa e aos seus dados.*
> **Como citar este artigo:** Reis, A. (2026, 7 de outubro). Pré-processamento de dados quantitativos: Passo a passo. *Blog Psicometria Online*. https://www.blog.psicometriaonline.com.br/pre-processamento-de-dados-quantitativos-passo-a-passo