The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

A medida se sustenta? Validação contra um critério externo

Todo o resto deste pacote é tradução: um código do TSE vira um ISCO, que vira um ISEI. Nada nessa cadeia se afere contra coisa alguma fora dela — e um crosswalk internamente consistente pode estar inteiramente errado.

Esta vinheta faz a única pergunta que importa: as posições que a medida atribui correspondem a algo observável e independente?

O critério são duas variáveis que o próprio TSE coleta e que não entram na construção da medida em momento nenhum: o patrimônio declarado na candidatura e o grau de instrução. Elas estão agregadas por ocupação em tse_validacao.

library(ocupacoesBR)

v <- tse_validacao
v$isei   <- isco88_para_isei(tse_isco$isco88[match(v$cod_tse, tse_isco$cod_tse)])
v$rotulo <- tse_para_rotulo(v$cod_tse)
v <- v[!is.na(v$isei), ]

# A mediana de patrimonio e NA onde faltam declaracoes de bens suficientes (ver
# ?tse_validacao). A escolaridade esta medida em todas as linhas; o patrimonio,
# so nestas.
vb <- v[!is.na(v$mediana_patrimonio), ]
c(com_escolaridade = nrow(v), com_patrimonio = nrow(vb))
#> com_escolaridade   com_patrimonio 
#>              207              165

O resultado

r <- function(x, y, m = "pearson") round(cor(x, y, method = m), 3)

# A correlação no nível do INDIVÍDUO sai dos somatórios publicados em
# `tse_dispersao_patrimonio`, sem microdado: veja `?tse_dispersao_patrimonio`.
d <- tse_dispersao_patrimonio
N <- sum(d$n); sx <- sum(d$isei88 * d$n); sy <- sum(d$soma_log)
sxx <- sum(d$isei88^2 * d$n); syy <- sum(d$soma_log2)
sxy <- sum(d$isei88 * d$soma_log)
r_individual <- (N * sxy - sx * sy) / sqrt((N * sxx - sx^2) * (N * syy - sy^2))

data.frame(
  criterio = c("% com ensino superior", "log da mediana de patrimonio"),
  n        = c(nrow(v), nrow(vb)),
  pearson  = c(r(v$isei, v$pct_superior),
               r(vb$isei, log(vb$mediana_patrimonio))),
  spearman = c(r(v$isei, v$pct_superior, "spearman"),
               r(vb$isei, log(vb$mediana_patrimonio), "spearman")))
#>                       criterio   n pearson spearman
#> 1        % com ensino superior 207   0.765    0.816
#> 2 log da mediana de patrimonio 165   0.681    0.695

Correlações dessa ordem, contra critérios que não participaram da construção da medida, são evidência forte de que o ISEI atribuído às ocupações brasileiras mede o que promete medir.

ISEI contra patrimonio mediano e escolaridade

O contraste que é o verdadeiro resultado

No nível da candidatura, a correlação entre ISEI e patrimônio é de apenas 0,207. No nível da ocupação, é 0,681. Essa diferença não é defeito: é a definição do que o ISEI é.

Convém dizer com precisão o que ela é, porque “explica quase nada da variância dentro de cada ocupação” fica aquém do fato. O ISEI é constante dentro da ocupação: ele explica exatamente zero da variância intraocupacional, por construção, e não haveria como medir outra coisa. O que se pode medir, e é mais informativo, é quanto da variância individual do log do patrimônio fica entre níveis de status — o teto de qualquer função do ISEI:

d <- tse_dispersao_patrimonio
N <- sum(d$n); mu <- sum(d$soma_log) / N
eta2 <- sum(d$n * (d$media_log - mu)^2) / (sum(d$soma_log2) - N * mu^2)
c(eta2 = eta2, r2_linear = r_individual^2)
#>       eta2  r2_linear 
#> 0.07685978 0.04300105

Sete por cento e meio, contra 4,3% que a relação linear aproveita. Advogados variam enormemente em patrimônio entre si, e o ISEI não tem nada a dizer sobre isso — nem deveria.

Uma ressalva sobre o contraste 0,681 × 0,207, para que ele não prove demais: os dois números diferem em mais coisas que o nível de agregação — um é sobre a mediana e não é ponderado, o outro é sobre a média do log e é ponderado por candidatura. A comparação limpa é com a correlação ecológica na mesma unidade e com o mesmo peso:

stats::cov.wt(cbind(d$isei88, d$media_log), wt = d$n, cor = TRUE)$cor[1, 2]
#> [1] 0.7480057

0.748 contra 0,207: é essa a inflação ecológica, medida sem misturar outras diferenças.

A consequência é direta: não use ISEI como proxy de patrimônio individual — nem, por extensão, de renda. Ele responde “que posição esta ocupação ocupa na estrutura”, não “quanto esta pessoa tem”.

Onde a medida não é monótona

A correlação alta esconde inversões locais que importam:

alvo <- c("169", "257", "111", "265", "113", "601")
d <- vb[vb$cod_tse %in% alvo, c("rotulo", "isei", "pct_superior",
                                "mediana_patrimonio")]
d[order(-d$isei), ]
#>                              rotulo isei pct_superior mediana_patrimonio
#> 9                            MÉDICO   88         99.0             825376
#> 121                      EMPRESARIO   68         22.9             249001
#> 126 PROFESSOR DE ENSINO FUNDAMENTAL   66         74.8              96893
#> 57                      COMERCIANTE   51          7.1             148044
#> 11                       ENFERMEIRO   43         59.6             111353
#> 188                      AGRICULTOR   23          2.5             122395

O comerciante e o empresário têm ISEI de classe média e patrimônio de classe alta; a professora tem ISEI alto e patrimônio modesto. São duas réguas diferentes — status ocupacional e capital econômico —, e elas discordam por desenho, não por erro.

Quem cruzar as duas num mesmo gráfico precisa dizer isso ao leitor. É exatamente a distinção que tse_para_componente_alta() opera ao separar a classe alta em proprietária e credenciada.

A anomalia do cuidado

data.frame(
  regua = c("ISEI-88", "ISEI-08"),
  enfermagem = c(tse_para_isei("113"), round(tse_para_isei08("113"), 1)))
#>     regua enfermagem
#> 1 ISEI-88       43.0
#> 2 ISEI-08       68.7

v$pct_superior[v$cod_tse == "113"]
#> [1] 59.6

O ISEI-88 põe a enfermagem abaixo do escriturário, apesar de quase 60% de ensino superior. Não é a classificação que erra: a ISCO-88 já situa a enfermagem no grande grupo dos profissionais. É o escore de 1992 que a subestima, porque mede a conversão de escolaridade em renda observada entre homens, em dado de 1968 a 1982. A reestimação do ISEI-08, sobre o ISSP de 2002-2007 e cobrindo os dois sexos, a promove em mais de vinte pontos.

Isso não é peculiaridade brasileira, mas pesa mais aqui: o país tem um vale de ocupações femininas de alta escolaridade e baixa remuneração — enfermagem, docência, assistência social. Para análise de gênero, prefira a ISCO-08.

# o mesmo recorte de ?tse_para_isei: codigos com mais de 500 candidaturas, onde
# a proporcao de mulheres e estimada com precisao suficiente para dicotomizar
g <- v[v$n > 500, ]
fem <- g$pct_mulher > 50
c(codigos = nrow(g), femininos = sum(fem))
#>   codigos femininos 
#>       168        28
round(c(feminina = mean(g$isei[fem]), masculina = mean(g$isei[!fem])), 1)
#>  feminina masculina 
#>        46        49
round(c(feminina = mean(g$pct_superior[fem]),
        masculina = mean(g$pct_superior[!fem])), 1)
#>  feminina masculina 
#>      29.9      24.1

Ocupações majoritariamente femininas têm mais escolaridade e menos ISEI. São 28 códigos contra 140, e a diferença de status é de três pontos — pequena em si, e o que a torna interpretável é a regressão de ?tse_para_isei, que a estima controlando pela escolaridade: −6,2 pontos de ISEI, com o sinal robusto a toda especificação que tentamos. O p não é: com erro-padrão robusto ele vai a 0,14, e sem ponderação a 0,012. É o sinal que sustenta a advertência, não o nível de significância.

A régua importada carrega esse viés, e declará-lo é parte de usá-la bem.

A régua estimada no Brasil, contra o mesmo critério

Até aqui a medida testada foi importada. tse_para_isei_br() traz a régua estimada na PNAD Contínua, pelo mesmo procedimento de 1992, e ela pode ser submetida ao mesmo critério.

v$isei08  <- tse_para_isei08(v$cod_tse)
v$isei_br <- tse_para_isei_br(v$cod_tse)

ok <- stats::complete.cases(
  v[, c("isei", "isei08", "isei_br", "pct_superior", "mediana_patrimonio")])
w  <- v[ok, ]

r <- function(x, y, m = "pearson") round(stats::cor(x, y, method = m), 3)
data.frame(
  regua        = c("ISEI-88", "ISEI-08", "ISEI-BR"),
  escolaridade = sapply(w[c("isei", "isei08", "isei_br")], r, w$pct_superior),
  patrimonio   = sapply(w[c("isei", "isei08", "isei_br")], r,
                        log(w$mediana_patrimonio)),
  patrimonio_rho = sapply(w[c("isei", "isei08", "isei_br")], r,
                          log(w$mediana_patrimonio), m = "spearman"),
  row.names = NULL)
#>     regua escolaridade patrimonio patrimonio_rho
#> 1 ISEI-88        0.775      0.681          0.695
#> 2 ISEI-08        0.782      0.676          0.708
#> 3 ISEI-BR        0.741      0.716          0.768

São 165 ocupações, as mesmas nas três linhas.

O resultado precisa ser lido com cuidado, porque as duas colunas não têm o mesmo estatuto. A escolaridade entra na construção do ISEI-BR, então correlação alta ali não provaria nada. O patrimônio não entra em régua nenhuma, e é o único critério genuinamente externo desta tabela.

É justamente no patrimônio que a régua brasileira vai melhor, e na escolaridade que ela vai um pouco pior. Isso não é acidente. O ângulo estimado dá mais peso à renda do que à escolaridade, e no Brasil renda ocupacional e escolaridade ocupacional descolam mais do que descolam nos países onde a régua importada foi calibrada. A régua importada ordena os candidatos pela escolaridade das suas ocupações; a brasileira os ordena pelo que essas ocupações pagam aqui.

d <- w[order(-abs(w$isei_br - w$isei08)), ]
plot(w$isei08, w$isei_br, pch = 19, col = "#00000055",
     xlab = "ISEI-08 (importado)", ylab = "ISEI-BR (PNAD Contínua)",
     xlim = c(10, 90), ylim = c(10, 90))
# a diagonal marca a igualdade de ESCORE, nao a de posicao: as duas escalas
# tem dispersoes diferentes, e a leitura correta vem logo abaixo
abline(0, 1, col = "#C0392B", lty = 2)
text(d$isei08[1:6], d$isei_br[1:6], substr(d$rotulo[1:6], 1, 22),
     pos = 4, cex = 0.65, col = "#1B4F72", xpd = NA)

A diagonal vermelha do gráfico é tentadora e engana. As duas escalas não têm a mesma dispersão: o ISEI-BR sai de um min–max sobre as células de estimação, e o seu desvio padrão nestas ocupações é bem menor que o do ISEI-08.

c(isei08 = sd(w$isei08), isei_br = sd(w$isei_br))
#>   isei08  isei_br 
#> 21.35294 14.49087

Numa escala mais estreita, o topo cai e a base sobe por construção. A conta que mostra o tamanho do problema é esta:

z <- function(x) (x - mean(x)) / sd(x)
r <- cor(w$isei_br, w$isei08)
c(bruta         = cor(w$isei_br - w$isei08, w$isei08),
  padronizada   = cor(z(w$isei_br) - z(w$isei08), w$isei08),
  forcada_por_r = -sqrt((1 - r) / 2))
#>         bruta   padronizada forcada_por_r 
#>    -0.8425687    -0.1731228    -0.1731228

A diferença bruta correlaciona-se a cerca de −0,84 com o próprio ISEI-08 — ler nela uma relocação substantiva é ler, em boa parte, de onde a ocupação partiu. Padronizar remove esse artefato, e é sobre a diferença padronizada que a leitura tem de ser feita.

Repare, porém, na terceira linha, porque ela impede uma leitura errada da segunda. A correlação padronizada não some — nem poderia. Para dois vetores padronizados com correlação r, vale a identidade

cor(z1 - z2, z2) = -sqrt((1 - r) / 2)

e com r = 0.94 ela dá exatamente o valor observado — não aproximadamente: até a última casa que o computador guarda. Não é uma medida: é aritmética, e é sempre negativa — regressão à média. Seria errado, portanto, ler o -0.173 residual como “o tanto de artefato que sobrou”, ou esperar que ele fosse zero caso a diferença fosse puramente substantiva. Com escalas iguais e esta correlação, ele seria esse número de qualquer jeito.

O que a padronização resolve é o artefato de escala, que era grande. O que ela não pode fazer é produzir uma medida ortogonal ao ponto de partida — e é por isso que a leitura abaixo vem acompanhada de uma conferência.

w$d <- z(w$isei_br) - z(w$isei08)
sobem  <- head(w[order(-w$d), c("rotulo", "isei08", "isei_br")], 6)
descem <- head(w[order(w$d),  c("rotulo", "isei08", "isei_br")], 6)
rbind(sobem, descem)
#>                                              rotulo isei08 isei_br
#> 36                                   BOMBEIRO CIVIL  51.50    69.1
#> 101                                  POLICIAL CIVIL  51.50    69.1
#> 102                                POLICIAL MILITAR  51.50    69.1
#> 122                                BOMBEIRO MILITAR  51.50    69.1
#> 140                             DIRETOR DE EMPRESAS  70.34    80.7
#> 9                                            MÉDICO  88.70    87.7
#> 88                                ESCULTOR E PINTOR  61.82    44.2
#> 89                  ARTISTA PLÁSTICO E ASSEMELHADOS  61.82    44.2
#> 214 SACERDOTE OU MEMBRO DE ORDEM OU SEITA RELIGIOSA  71.55    54.8
#> 51                              CANTOR E COMPOSITOR  64.44    50.1
#> 52                                           MÚSICO  64.44    50.1
#> 104  PROFESSOR E INSTRUTOR DE FORMACAO PROFISSIONAL  72.30    57.9

As que mais sobem são as de segurança pública: policial civil e militar, bombeiro. São trabalhos que a régua importada põe no meio da tabela e que no Brasil pagam acima do que o escore internacional sugere. Ao lado deles aparecem o diretor de empresas e o médico — e é justamente isso que a comparação bruta escondia, porque ocupações de topo não têm para onde subir numa escala comprimida.

As que mais descem são as profissões artísticas, o clero e o ensino de arte: escultor, artista plástico, sacerdote, cantor, músico, professor de formação profissional. Veterinário e farmacêutico vêm logo atrás, em sétimo e oitavo. Credencial alta, remuneração modesta. É a mesma anomalia do cuidado vista pelo outro lado: a régua importada mede sobretudo credencial, e no Brasil credencial e remuneração andam mais separadas do que ela supõe.

A conferência prometida acima. O resíduo de uma regressão do ISEI-BR sobre o ISEI-08 é ortogonal ao ponto de partida por construção — não por sorte —, e por isso é o critério que não pode ser acusado de artefato:

w$resid <- residuals(lm(isei_br ~ isei08, data = w))
c(sobem_iguais  = identical(head(w$rotulo[order(-w$d)], 6),
                            head(w$rotulo[order(-w$resid)], 6)),
  descem_mesmas = setequal(head(w$rotulo[order(w$d)], 6),
                           head(w$rotulo[order(w$resid)], 6)))
#>  sobem_iguais descem_mesmas 
#>          TRUE          TRUE

As seis que sobem são as mesmas, na mesma ordem; as seis que descem são as mesmas, com o clero trocando de posição dentro do grupo. A leitura substantiva não depende de qual dos dois critérios se use, e é isso — não a correlação residual — que autoriza lê-la.

O que esta vinheta não prova

O critério continua sendo o patrimônio de candidatos, que não são a população. Isso não mudou. A régua brasileira foi estimada na população e validada em candidatos, o que é melhor do que estimar e validar nos mesmos candidatos, mas não é o mesmo que validá-la na população.

Quatro coisas seguem em aberto, e convém dizê-las com a mesma clareza com que esta vinheta dizia, antes, que a régua não era brasileira.

A primeira é que a mediação não é completa. O procedimento de 1992 supõe que a ocupação carrega todo o efeito da escolaridade sobre a renda, e no Brasil ela carrega 58.4%. O resto é escolaridade que paga dentro da mesma ocupação. A régua registra esse número em vez de escondê-lo, mas registrá-lo não o resolve.

A segunda é que a régua é de um ano só, 2025, em valores nominais. Ela não forma série, e uma análise que atravesse décadas não pode usá-la como se formasse.

A terceira é que 242 das 590 linhas foram apuradas num grupo mais grosso que a própria ocupação, por falta de amostra. A coluna nivel diz quais, e quem depende de uma ocupação específica deve conferi-la antes.

A quarta é que a correlação no nível da candidatura, em tse_dispersao_patrimonio, existe só para o ISEI-88, porque a tabela de somatórios é indexada por faixas daquela régua. Refazê-la para a brasileira é trabalho de outra rodada.

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.