4  Mensuração e variáveis

Data de Publicação

16 de junho de 2026

Antes de descrever ou analisar qualquer dado, é preciso decidir o que será medido e como. Essa decisão raramente é trivial — e quase nunca é puramente técnica. Este capítulo trata do processo de mensuração: como traduzimos perguntas de pesquisa em variáveis concretas, e como essas variáveis podem ser classificadas para orientar a análise que faremos delas mais adiante no curso.

4.1 O que é mensuração?

Decidir o que medir é uma das etapas mais difíceis de qualquer estudo — e decidir como medir o que foi escolhido não é menos importante. Em qualquer pesquisa, é fundamental entender exatamente como cada informação foi obtida, coletada ou perguntada, porque a forma de obtenção determina o que pode (e o que não pode) ser concluído a partir dela depois.

Essa exigência não é apenas metodológica: é também uma exigência de transparência, na linha dos princípios discutidos no capítulo anterior. As descrições do processo de mensuração devem estar disponíveis publicamente, de modo que quem usa os dados possa avaliar como as medidas foram obtidas (Agresti; Finlay, 2009; Utts, 1999).


4.2 De construtos a perguntas: a operacionalização

Alguns conceitos de interesse de quem estuda políticas públicas são difíceis de medir diretamente: pobreza, preconceito, felicidade, qualidade de vida, confiança nas instituições. Esses construtos abstratos não podem ser observados de forma direta — precisam ser traduzidos em algo mensurável.

Vaus (2002) chama esse processo de definição operacional: a tradução de um conceito abstrato em uma forma com a qual se pode operar na condução de uma pesquisa, seja na elaboração de uma pergunta, seja na escolha de uma medida. Uma definição operacional é, em essência, uma descrição de como a presença, as características ou a quantidade de algo serão determinadas.

Não existe uma única definição operacional “certa” para um construto abstrato — existem definições mais ou menos úteis para o objetivo da pesquisa, e o trabalho de construí-las costuma ser longo e cuidadoso. Tome a pobreza como exemplo: é possível operacionalizá-la como insuficiência de renda (uma linha de pobreza monetária, como a usada nos critérios de elegibilidade do Cadastro Único), como privação em múltiplas dimensões simultâneas (um índice multidimensional, combinando renda, educação, saneamento e moradia) ou como percepção subjetiva (perguntar diretamente às pessoas se elas se consideram pobres). Cada definição operacional captura algo real sobre o fenômeno — e cada uma também deixa de capturar outra parte dele. Daí a regra de ouro: explicite sua definição, e torne pública a medida escolhida para representá-la.

Construtos atitudinais — como confiança no governo ou satisfação com um serviço público — costumam ser operacionalizados por meio de escalas de atitude, como a escala Likert (Likert, 1932): uma série de afirmações diante das quais o respondente declara seu grau de concordância (de “discordo totalmente” a “concordo totalmente”), produzindo um escore que serve como medida da atitude.


4.3 O que são variáveis?

Uma vez operacionalizado um conceito, ele se torna uma variável: o resultado da observação ou mensuração de uma característica de interesse sobre cada unidade estudada. Qualquer característica que possa ser medida sobre um sujeito é uma variável; se a característica não varia entre as unidades observadas, trata-se de uma constante, não de uma variável. O conjunto de variáveis observadas para todas as unidades de um estudo constitui o banco de dados que será analisado.

Cada unidade sobre a qual as variáveis são medidas — uma pessoa, um domicílio, um município, uma empresa — é chamada de unidade de análise. O conjunto completo de unidades de interesse é a população; quando não é viável observar a população inteira, observa-se uma amostra — um subconjunto dela, idealmente selecionado de forma a representá-la. Como vimos no Capítulo 2, essa é exatamente a distinção entre censos (que cobrem toda a população) e pesquisas amostrais (que cobrem uma amostra). O desenho da amostragem propriamente dito — como selecionar uma boa amostra — é tema de uma aula futura; por ora, basta reter que toda variável é sempre medida sobre alguma unidade, pertencente a alguma população ou amostra.


4.4 Classificação das variáveis

Variáveis podem ser classificadas, em primeiro lugar, quanto à sua natureza, como ilustra a Figura fig-tipos-variaveis.

flowchart TD
    V[Variável] --> QL["Qualitativa<br>(categórica)"]
    V --> QT["Quantitativa<br>(numérica)"]
    QL --> NOM[Nominal]
    QL --> ORD[Ordinal]
    QT --> DISC[Discreta]
    QT --> CONT[Contínua]
flowchart TD
    V[Variável] --> QL["Qualitativa<br>(categórica)"]
    V --> QT["Quantitativa<br>(numérica)"]
    QL --> NOM[Nominal]
    QL --> ORD[Ordinal]
    QT --> DISC[Discreta]
    QT --> CONT[Contínua]
Figura 4.1: Classificação das variáveis quanto à natureza

Variáveis qualitativas (ou categóricas) classificam as unidades em categorias. Dividem-se em nominais, quando não existe nenhuma ordenação possível entre as categorias (sexo, estado civil, unidade da federação), e ordinais, quando existe uma ordem natural entre elas, ainda que sem distância numérica definida entre uma categoria e outra (classe social, nível de escolaridade, grau de concordância em uma escala Likert).

Variáveis quantitativas (ou numéricas) registram quantidades. Dividem-se em discretas, que assumem um número finito ou enumerável de valores, tipicamente resultado de contagem (número de filhos, número de matrículas em uma escola), e contínuas, que podem assumir qualquer valor dentro de um intervalo (renda, idade exata, área de um imóvel em metros quadrados).


4.5 Escalas de mensuração

Uma segunda classificação, mais fina, organiza as variáveis pelas operações matemáticas que sua escala de mensuração permite — uma distinção central em Agresti; Finlay (2009) e que tem consequências diretas sobre quais estatísticas fazem sentido calcular para cada variável.

Tabela 4.1: Escalas de mensuração e suas propriedades
Escala Ordenação Distância definida Zero absoluto Exemplo Estatísticas apropriadas
Nominal Não Não Não Sexo, religião, UF Moda, frequências, proporções
Ordinal Sim Não Não Classe social, escolaridade Moda, mediana, frequências
Intervalar Sim Sim Não Temperatura em °C Média, desvio-padrão, soma
Razão Sim Sim Sim Renda, idade, peso Média, desvio-padrão, razões e proporções entre valores

As escalas nominal e ordinal correspondem às variáveis qualitativas discutidas acima; as escalas intervalar e razão correspondem às variáveis quantitativas. A diferença entre intervalar e razão está no zero: na escala intervalar, o zero é uma convenção (0 °C não significa “ausência de temperatura”), enquanto na escala de razão o zero indica ausência completa da característica (renda igual a zero significa, de fato, nenhuma renda) — o que torna válido dizer, por exemplo, que uma renda é “o dobro” de outra, algo que não tem sentido dizer sobre temperaturas em Celsius.

Saber em que escala uma variável foi medida não é um detalhe técnico: é o que determina, antes de qualquer outra coisa, quais estatísticas descritivas e que tipo de modelo estatístico fazem sentido para ela — um tema ao qual voltaremos repetidamente no restante do curso.


4.6 Resumo do capítulo

Mensurar é decidir o que e como medir. Essa decisão precede qualquer análise e deve ser documentada publicamente, em linha com os princípios de transparência discutidos no capítulo anterior.

Construtos abstratos exigem definições operacionais. Conceitos como pobreza, felicidade ou confiança não podem ser medidos diretamente; precisam ser traduzidos em definições operacionais — e não existe uma única forma correta de fazer essa tradução.

Variáveis são o resultado desse processo. Cada característica medida sobre uma unidade de análise — pessoa, domicílio, município — é uma variável; o conjunto delas para todas as unidades de um estudo forma o banco de dados.

Variáveis se classificam por natureza e por escala de mensuração. Qualitativas (nominais, ordinais) e quantitativas (discretas, contínuas) é a primeira classificação; nominal, ordinal, intervalar e razão é a segunda, mais fina — e é ela que determina quais estatísticas fazem sentido calcular.

Com este capítulo, encerramos a primeira parte do livro. Os quatro capítulos de Fundamentos de Ciência de Dados estabeleceram o vocabulário conceitual — estatística, ciência de dados, sistema estatístico, mensuração — que vamos agora aplicar diretamente no R, na parte de Fundamentos de R.



4.7 Estruturas de dados e recodificação no R

Nota

Referência principal: Zumel; Mount (2019), Cap. 2.

Pré-requisitos: Capítulos 1–3 concluídos. Pacotes necessários: dplyr (parte do tidyverse).

install.packages("tidyverse")

4.7.1 Objetivos

  1. Criar e inspecionar data frames
  2. Compreender fatores e sua relação com variáveis categóricas nominais e ordinais
  3. Filtrar linhas, criar colunas e inspecionar dados
  4. Recodificar variáveis com ifelse() e case_when()

4.7.2 Data frame — a estrutura central da análise de dados

Um data frame é uma tabela: cada linha é uma unidade de análise (pessoa, município, setor, empresa) e cada coluna é uma variável. É a estrutura de dados mais usada em análise estatística no R.

df_norte <- data.frame(
  cod_uf   = c(11L, 12L, 13L, 14L, 15L, 16L, 17L),
  uf       = c("RO", "AC", "AM", "RR", "PA", "AP", "TO"),
  regiao   = rep("Norte", 7),
  area_km2 = c(237590, 164122, 1559168, 224301, 1247955, 142828, 277720),
  pop_2022 = c(1581016, 830026, 4269995, 652713, 8116132, 733508, 1511460),
  stringsAsFactors = FALSE
)

4.7.2.1 Inspeção básica

A primeira coisa a fazer após criar ou importar um data frame é inspecioná-lo:

str(df_norte)        # estrutura: tipo de cada coluna e primeiros valores
'data.frame':   7 obs. of  5 variables:
 $ cod_uf  : int  11 12 13 14 15 16 17
 $ uf      : chr  "RO" "AC" "AM" "RR" ...
 $ regiao  : chr  "Norte" "Norte" "Norte" "Norte" ...
 $ area_km2: num  237590 164122 1559168 224301 1247955 ...
 $ pop_2022: num  1581016 830026 4269995 652713 8116132 ...
dim(df_norte)        # dimensões: c(linhas, colunas)
[1] 7 5
nrow(df_norte)       # número de linhas
[1] 7
ncol(df_norte)       # número de colunas
[1] 5
colnames(df_norte)   # nomes das colunas
[1] "cod_uf"   "uf"       "regiao"   "area_km2" "pop_2022"
head(df_norte, 3)    # primeiras 3 linhas
cod_uf uf regiao area_km2 pop_2022
11 RO Norte 237590 1581016
12 AC Norte 164122 830026
13 AM Norte 1559168 4269995
tail(df_norte, 2)    # últimas 2 linhas
cod_uf uf regiao area_km2 pop_2022
6 16 AP Norte 142828 733508
7 17 TO Norte 277720 1511460
summary(df_norte)    # resumo estatístico por coluna
     cod_uf             uf          regiao     area_km2          pop_2022      
 Min.   :11.0   Length   :7   Length   :7   Min.   : 142828   Min.   : 652713  
 1st Qu.:12.5   N.unique :7   N.unique :1   1st Qu.: 194212   1st Qu.: 781767  
 Median :14.0   N.blank  :0   N.blank  :0   Median : 237590   Median :1511460  
 Mean   :14.0   Min.nchar:2   Min.nchar:5   Mean   : 550526   Mean   :2527836  
 3rd Qu.:15.5   Max.nchar:2   Max.nchar:5   3rd Qu.: 762838   3rd Qu.:2925506  
 Max.   :17.0                               Max.   :1559168   Max.   :8116132  

4.7.2.2 Acessando colunas e linhas

# Três formas equivalentes de acessar uma coluna
df_norte$uf
[1] "RO" "AC" "AM" "RR" "PA" "AP" "TO"
df_norte[["uf"]]
[1] "RO" "AC" "AM" "RR" "PA" "AP" "TO"
df_norte[, "uf"]
[1] "RO" "AC" "AM" "RR" "PA" "AP" "TO"
df_norte[1, ]          # primeira linha (todos os campos)
cod_uf uf regiao area_km2 pop_2022
11 RO Norte 237590 1581016
df_norte[3:5, ]        # linhas 3 a 5
cod_uf uf regiao area_km2 pop_2022
3 13 AM Norte 1559168 4269995
4 14 RR Norte 224301 652713
5 15 PA Norte 1247955 8116132
df_norte[3:5, c("uf", "pop_2022")]   # linhas 3 a 5, só duas colunas
uf pop_2022
3 AM 4269995
4 RR 652713
5 PA 8116132

4.7.2.3 Filtragem lógica

# Estados com população acima de 2 milhões
df_norte[df_norte$pop_2022 > 2000000, ]
cod_uf uf regiao area_km2 pop_2022
3 13 AM Norte 1559168 4269995
5 15 PA Norte 1247955 8116132
# Adicionando uma nova coluna calculada
df_norte$dens_demog <- round(df_norte$pop_2022 / df_norte$area_km2, 2)
df_norte
cod_uf uf regiao area_km2 pop_2022 dens_demog
11 RO Norte 237590 1581016 6.65
12 AC Norte 164122 830026 5.06
13 AM Norte 1559168 4269995 2.74
14 RR Norte 224301 652713 2.91
15 PA Norte 1247955 8116132 6.50
16 AP Norte 142828 733508 5.14
17 TO Norte 277720 1511460 5.44

4.7.3 Fatores — variáveis categóricas no R

Na seção de classificação das variáveis deste capítulo, distinguimos variáveis nominais (categorias sem ordem) e ordinais (categorias com ordem natural). O R representa essas variáveis com um tipo específico: o fator (factor).

Internamente, um fator armazena inteiros (os índices das categorias) mais um atributo levels que nomeia cada categoria. Isso economiza memória e garante que o R trate a variável corretamente em modelos estatísticos e em gráficos.

4.7.3.1 Fator nominal — sem ordem

regiao <- c("Sudeste", "Norte", "Nordeste", "Sul", "Sudeste", "Centro-Oeste", "Norte")

reg_fator <- factor(regiao)
levels(reg_fator)     # categorias — ordem alfabética por padrão
[1] "Centro-Oeste" "Nordeste"     "Norte"        "Sudeste"      "Sul"         
nlevels(reg_fator)    # número de categorias
[1] 5
table(reg_fator)      # contagem de cada categoria
reg_fator
Centro-Oeste     Nordeste        Norte      Sudeste          Sul 
           1            1            2            2            1 

Ao criar o fator, você pode definir explicitamente quais categorias são válidas — o que ajuda a detectar erros de digitação:

regioes_validas <- c("Norte", "Nordeste", "Centro-Oeste", "Sudeste", "Sul")

reg_fator2 <- factor(regiao, levels = regioes_validas)
reg_fator2    # categorias inválidas aparecem como NA
[1] Sudeste      Norte        Nordeste     Sul          Sudeste     
[6] Centro-Oeste Norte       
Levels: Norte Nordeste Centro-Oeste Sudeste Sul

4.7.3.2 Fator ordinal — com ordem

Quando a variável tem uma ordenação natural, use ordered = TRUE. Isso permite comparações como "Médio" < "Superior".

escolaridade <- c("Médio", "Superior", "Fundamental", "Superior", "Médio", "Fundamental")

esc_ord <- factor(
  escolaridade,
  levels  = c("Fundamental", "Médio", "Superior"),
  ordered = TRUE
)

esc_ord
[1] Médio       Superior    Fundamental Superior    Médio       Fundamental
Levels: Fundamental < Médio < Superior
esc_ord[1] < esc_ord[2]    # TRUE: Médio < Superior?
[1] TRUE
Dica

Quando usar fator? Sempre que a coluna representar uma variável categórica com um número fixo de categorias — situação do domicílio (urbano/rural), nível de instrução, raça/cor, região. Colunas de texto livre (nomes, endereços) não devem ser fatores.

4.7.4 Recodificação de variáveis

Recodificar é criar uma nova variável a partir de uma existente — operação fundamental no pré-processamento de dados públicos.

4.7.4.1 ifelse() — condição simples

pop_vec <- c(2315560, 85000, 420000, 15000, 1200000)

porte <- ifelse(pop_vec >= 500000, "Grande",
         ifelse(pop_vec >= 100000, "Médio", "Pequeno"))
porte
[1] "Grande"  "Pequeno" "Médio"   "Pequeno" "Grande" 

4.7.4.2 case_when() — múltiplas condições (recomendado)

O case_when() do pacote dplyr é mais legível que ifelse aninhados. As condições são avaliadas em ordem — a primeira que for TRUE é aplicada.

library(dplyr)

classificar_porte <- function(populacao) {
  case_when(
    populacao >= 500000 ~ "Grande",
    populacao >= 100000 ~ "Médio",
    populacao >= 20000  ~ "Pequeno",
    TRUE                ~ "Muito pequeno"   # captura todos os demais casos
  )
}

classificar_porte(pop_vec)
[1] "Grande"        "Pequeno"       "Médio"         "Muito pequeno"
[5] "Grande"       

Aplicando ao data frame:

df_norte$porte_pop <- classificar_porte(df_norte$pop_2022)
df_norte[, c("uf", "pop_2022", "porte_pop")]
uf pop_2022 porte_pop
RO 1581016 Grande
AC 830026 Grande
AM 4269995 Grande
RR 652713 Grande
PA 8116132 Grande
AP 733508 Grande
TO 1511460 Grande

4.7.5 Listas — coleções heterogêneas

Uma lista pode armazenar objetos de tipos diferentes — vetores, data frames, outros lista. São usadas para organizar resultados complexos de funções (como os retornados por lm(), summary(), etc.).

resultado_analise <- list(
  descricao = "Análise demográfica — Região Norte",
  ano       = 2022,
  dados     = df_norte,
  concluido = TRUE
)

resultado_analise$descricao
[1] "Análise demográfica — Região Norte"
resultado_analise[["ano"]]
[1] 2022
length(resultado_analise)
[1] 4

Para acessar elementos de uma lista: $nome ou [[índice]] (colchetes duplos retornam o conteúdo; colchetes simples retornam uma sublista).

4.7.6 Valores ausentes em data frames

# Introduzindo NAs para simular dados reais
df_norte$pop_2022[c(2, 5)] <- NA

# Diagnóstico de NAs por coluna
colSums(is.na(df_norte))              # total de NA por coluna
    cod_uf         uf     regiao   area_km2   pop_2022 dens_demog  porte_pop 
         0          0          0          0          2          0          0 
colMeans(is.na(df_norte)) * 100       # percentual de NA por coluna
    cod_uf         uf     regiao   area_km2   pop_2022 dens_demog  porte_pop 
   0.00000    0.00000    0.00000    0.00000   28.57143    0.00000    0.00000 
# Selecionar apenas linhas sem NA em pop_2022
df_completo <- df_norte[!is.na(df_norte$pop_2022), ]
nrow(df_completo)
[1] 5
AGRESTI, Alan; FINLAY, Barbara. Statistical Methods for the Social Sciences. 4. ed. Upper Saddle River: Pearson Prentice Hall, 2009.
LIKERT, Rensis. A technique for the measurement of attitudes. Archives of Psychology, v. 22, n. 140, p. 1–55, 1932.
UTTS, Jessica M. Seeing Through Statistics. 3. ed. Pacific Grove: Duxbury Press, 1999.
VAUS, David A. de. Surveys in Social Research. 5. ed. London: Routledge, 2002.
ZUMEL, Nina; MOUNT, John. Practical Data Science with R. 2. ed. Shelter Island: Manning Publications, 2019.