resultado e comparação desejados
trilha de estudo
Economia aplicada: 52 semanas para pensar com evidência
Uma trilha para transformar teoria, dados e causalidade em análises que podem ser defendidas.
Ao final, você não apenas reconhecerá conceitos: conseguirá formular uma tese, testá-la e explicar seus limites.
Python para economia: produzir evidência reproduzível
Como deixar de depender de gráficos prontos de terceiros?
Você vai construir um pipeline completo: pergunta, dado bruto, proveniência, validação, transformação, visualização, teste e conclusão auditável.
Código econômico de qualidade não é o que apenas executa; é o que preserva significado, falha diante de dados inválidos e permite reproduzir a conclusão.
- Semanas 1–3 dominadas.
- Python básico é útil, mas o roteiro começa pelo contrato do dado.
Construir um fluxo de evidência que outra pessoa consiga executar, auditar e atualizar.
Ao concluir esta semana, você será capaz de
- Baixar e validar dados sem perder proveniência.
- Tratar datas, tipos, ausências e transformações explicitamente.
- Calcular inflação acumulada e janela móvel corretamente.
- Produzir gráfico e relatório reproduzíveis com teste de sanidade.
- Empacotar ambiente, versões, checksums e resultados esperados para reprodução independente.
contrato acadêmicograduação quantitativa · laboratório empírico7 horas · domínio mínimo 70%
núcleo formal
Composição de taxas, validação de séries, transformações e documentação reprodutível.
- leitura guiada: 1.5h
- lista de problemas: 2h
- laboratório: 2.5h
- revisão e síntese: 1h
entregas obrigatórias
- Script executável.
- Snapshot do dado e ficha de proveniência.
- Gráfico com teste de sanidade e limites.
evidência de domínio
- Distinguir dado bruto de variável derivada.
- Interromper o pipeline diante de esquema inválido.
- Reproduzir o acumulado oficial dentro da tolerância documentada.
erros não compensáveis
- Alterar silenciosamente o arquivo bruto ou perder sua proveniência.
- Excluir ou imputar valores ausentes sem regra registrada.
- Publicar gráfico sem fonte, unidade, transformação e período verificáveis.
O pipeline reproduzível
Cada seta deixa um registro para que o resultado possa ser refeito e contestado.
URL, série, data de acesso e licença
tipos, frequência, duplicatas e ausências
filtros, taxas, deflator e janela
escala, unidade e anotação
o que prova, não prova e quando atualizar
- PerguntaFonte brutadefine dado necessário
- Fonte brutaValidaçãoé verificada
- ValidaçãoTransformaçãoautoriza cálculo
- TransformaçãoVisualizaçãoproduz série analítica
- VisualizaçãoConclusãosustenta leitura calibrada
- ConclusãoPerguntaabre próxima hipótese
Do conceito à decisão
Cada capítulo fecha uma distinção importante e uma verificação de compreensão.
1. Código começa pela especificação da pergunta
Evitar que disponibilidade de dados determine silenciosamente a análise.
O primeiro bloco de um caderno deve declarar pergunta, unidade, período, frequência e saída esperada. Sem isso, o analista tende a aceitar a primeira série disponível e adaptar a narrativa depois. Código reproduz decisões; se elas não estão escritas, apenas automatiza ambiguidade.
A especificação também define testes. Se a pergunta pede inflação acumulada de 2022, esperamos doze observações mensais, datas únicas e resultado próximo ao valor oficial. Essas expectativas viram verificações executáveis antes do gráfico.
Um notebook é útil para exploração e narrativa; um script é útil para repetição e automação. O artefato desta semana usa script curto e arquivo de dados congelado, permitindo comparar resultado estável com futura consulta à API.
verificação de compreensãoQual teste mínimo confirma a janela de 2022?
Doze datas mensais únicas, de janeiro a dezembro, sem valores ausentes na coluna usada.
2. Proveniência é parte do dado
Registrar origem, versão e transformação de forma verificável.
Salvar apenas valores remove contexto essencial. Registre instituição, nome e código da série, URL, data de acesso, unidade, frequência, política de revisão e arquivo bruto. Para o IPCA no SGS, o código 433 identifica a variação mensal; o nome precisa acompanhar o código para evitar uso cego.
Dados oficiais podem ser revisados ou mudar de metodologia. Um snapshot permite reconstruir a análise publicada; a consulta à API permite atualizar. Manter os dois evita que um resultado antigo se torne irreproduzível quando a fonte muda.
O snapshot deve receber um identificador verificável, como um hash SHA-256, e o ambiente deve registrar versões de linguagem e bibliotecas em arquivo de dependências. Caminhos relativos, semente aleatória quando aplicável e um único comando de execução reduzem dependências ocultas. O objetivo não é congelar tudo para sempre, mas tornar explícita a diferença entre reproduzir a publicação histórica e atualizar a análise com dados ou software novos.
Arquivos derivados devem indicar quais colunas foram criadas. “ipca_12m” não é dado bruto: é composição de doze fatores mensais. Essa distinção deve aparecer no código e na legenda.
verificação de compreensãoPor que guardar o CSV se a API continua disponível?
Para preservar exatamente a versão usada, proteger contra revisões e permitir auditoria offline.
3. Validação vem antes da transformação
Detectar erros de esquema e unidade antes que contaminem o resultado.
Datas lidas como texto podem ordenar abril antes de fevereiro; vírgula decimal pode virar string; duplicatas podem dobrar um mês; ausências podem desaparecer numa soma. O pipeline deve converter tipos e falhar de forma explícita quando o contrato não é atendido.
Testes de sanidade usam conhecimento econômico e documental: inflação mensal em percentual deve ser convertida em fator antes de composição; o acumulado anual deve se aproximar do valor oficial; uma série mensal completa precisa ter doze registros por ano. Teste não prova que a análise é correta, mas elimina classes conhecidas de erro.
Não preencha ausências automaticamente. Forward fill, interpolação ou zero carregam hipóteses diferentes. A escolha precisa ser justificada pela natureza da série e pelo objetivo.
verificação de compreensãoValor ausente de inflação pode ser substituído por zero?
Não por padrão. Zero significa preço estável, uma afirmação econômica que não foi observada.
4. Transformação altera significado
Calcular níveis, variações e janelas móveis com interpretação correta.
Taxas percentuais se compõem multiplicativamente. Somar pode ser aproximação para taxas pequenas, mas o cálculo exato usa produto dos fatores. Para janela de doze meses, multiplique os doze fatores que terminam no mês corrente; não some a coluna.
Média móvel e acumulado móvel respondem a perguntas distintas. Média suaviza uma taxa; acumulado mede variação composta no intervalo. Um gráfico sem legenda metodológica permite que o leitor confunda os dois.
Mudanças de frequência exigem regra. Converter dados mensais em trimestrais pode usar soma, média, último valor ou composição, dependendo de fluxo, estoque ou taxa. A biblioteca não decide a semântica pelo analista.
verificação de compreensãoComo agregar saldo de dívida mensal em dado anual?
Normalmente como posição no fim do período ou média, conforme a pergunta; somar os saldos não representa dívida anual.
5. O gráfico precisa carregar a auditoria
Construir visual que comunique unidade, fonte, transformação e limite.
Título deve formular a conclusão descritiva; subtítulo informa período e transformação; eixo mostra unidade; rodapé registra fonte e cálculo. Anotações destacam eventos apenas quando ajudam a pergunta. Cor e escala devem reduzir ambiguidade, não dramatizar.
Use a interface orientada a objetos do Matplotlib para controlar figura e eixos de maneira explícita. Salve a imagem pelo script, não por captura de tela, para que atualização de dados produza o mesmo artefato.
Reproduzir exatamente um número verifica a trilha computacional, mas não sua robustez. Uma auditoria também varia janela, política de ausentes, deflator e especificação dentro de escolhas plausíveis, além de comparar resultados intermediários. Se a conclusão muda, o relatório precisa dizer qual decisão analítica a sustenta; se não muda, essa estabilidade é evidência adicional, não prova definitiva.
O relatório termina com quatro blocos: resultado, método, limites e próxima atualização. Essa combinação transforma um gráfico em evidência operacional, e não em decoração.
verificação de compreensãoQual informação mínima deve acompanhar o gráfico?
Variável, unidade, período, transformação, fonte e data de acesso.
O raciocínio sem etapas ocultas
Os números servem para expor as decisões do modelo — inclusive onde a resposta pode falhar.
Exemplo 1 — acumular inflação corretamente
Janeiro foi 1,0% e fevereiro 2,0%. Qual o acumulado?
dados e premissas
- m₁=1,0%.
- m₂=2,0%.
resolução
- Converta para fatores: 1,01 e 1,02.
- Multiplique: 1,01×1,02=1,0302.
- Subtraia 1: 0,0302.
- Converta: 3,02%.
- resposta
- O acumulado correto é 3,02%, e não exatamente os 3,00% obtidos pela soma simples.
- interpretação
- Fevereiro incide sobre um nível de preços que já subiu em janeiro.
- onde a análise costuma falhar
- Somar taxas em horizontes longos e acumular erro.
Exemplo 2 — teste que impede um gráfico incorreto
Como detectar que a coluna de valores foi lida como texto?
dados e premissas
- Valores originais usam vírgula decimal.
- Ordenação ou soma produz resultado estranho.
resolução
- Converta vírgula para ponto quando necessário.
- Use pd.to_numeric(..., errors="raise").
- Verifique dtype numérico.
- Teste limites plausíveis e ausências.
- Só depois calcule e plote.
- resposta
- O pipeline deve interromper com erro em vez de gerar gráfico a partir de strings ou coerção silenciosa.
- interpretação
- Falhar cedo é um recurso de qualidade: torna o erro barato e localizável.
- onde a análise costuma falhar
- Usar errors="coerce" e deixar valores inválidos virarem NaN sem auditoria.
Laboratório executável — IPCA mensal de 2022
Você consegue reproduzir o acumulado oficial e gerar um gráfico auditável?
ficha de proveniência
- Snapshot: 12 observações mensais publicadas pelo IBGE.
- Série equivalente no SGS/BCB: IPCA mensal, código 433.
- Transformação: produto dos fatores mensais.
- Resultado esperado com valores arredondados: aproximadamente 5,7848%.
| data | valor (%) |
|---|---|
| 2022-01-01 | 0,54 |
| 2022-02-01 | 1,01 |
| 2022-03-01 | 1,62 |
| 2022-04-01 | 1,06 |
| 2022-05-01 | 0,47 |
| 2022-06-01 | 0,67 |
| 2022-07-01 | -0,68 |
| 2022-08-01 | -0,36 |
| 2022-09-01 | -0,29 |
| 2022-10-01 | 0,59 |
| 2022-11-01 | 0,41 |
| 2022-12-01 | 0,62 |
método
- Leia o CSV e converta data e valor.
- Valide 12 meses únicos e ausência de nulos.
- Calcule fator=1+valor/100.
- Calcule acumulado=(produto dos fatores−1)×100.
- Gere gráfico mensal, marque meses negativos e salve PNG.
resultado verificável
- A soma simples é 5,66%.
- A composição é aproximadamente 5,7848%.
- O valor arredondado é compatível com os 5,79% publicados pelo IBGE.
limites
- As taxas publicadas estão arredondadas.
- O laboratório reproduz agregação, não metodologia completa de coleta e ponderação.
- A série não identifica causas da inflação.
ver código completo do laboratório
from pathlib import Path
import pandas as pd
import matplotlib.pyplot as plt
BASE = Path(__file__).resolve().parent
df = pd.read_csv(BASE / "ipca-2022.csv", parse_dates=["data"])
assert len(df) == 12
assert df["data"].is_unique
assert df["valor"].notna().all()
df = df.sort_values("data")
df["fator"] = 1 + df["valor"] / 100
df["indice"] = 100 * df["fator"].cumprod()
acumulado = 100 * (df["fator"].prod() - 1)
print(f"IPCA 2022: {acumulado:.4f}%")
fig, ax = plt.subplots(figsize=(9, 4.8))
cores = df["valor"].map(lambda x: "#a34d45" if x < 0 else "#1d3b53")
ax.bar(df["data"].dt.strftime("%b"), df["valor"], color=cores)
ax.axhline(0, color="#56605f", linewidth=.8)
ax.set(title="IPCA mensal em 2022", ylabel="variação mensal (%)")
ax.spines[["top", "right"]].set_visible(False)
fig.text(.01, .01, "Fonte: IBGE. Cálculo e visualização: StudyHub.", fontsize=8)
fig.tight_layout(rect=(0, .04, 1, 1))
fig.savefig(BASE / "ipca-2022.png", dpi=160)Exercícios com solução comentada
As tarefas avançam de domínio do fundamento para aplicação e transferência.
Valide o contrato do dado
Adicione uma linha duplicada ao CSV e escreva um teste que impeça a execução.
- Use is_unique ou duplicated().
abrir solução comentada
caminho de resolução
- Calcule duplicadas=df["data"].duplicated().any().
- Use assert not duplicadas.
- Inclua mensagem indicando datas repetidas.
assert df["data"].is_unique, "há meses duplicados"
O teste transforma uma expectativa documental em proteção executável.
- Falha antes do cálculo.
- Mensagem clara.
- Não remove duplicata silenciosamente.
Calcule a janela móvel
Adapte o script para calcular inflação acumulada em 3 meses.
- Use rolling(3).apply(np.prod, raw=True).
abrir solução comentada
caminho de resolução
- Crie fator.
- Aplique produto em janela de 3.
- Subtraia 1 e multiplique por 100.
- Mantenha NaN nos dois primeiros meses.
df["ipca_3m"]=(df["fator"].rolling(3).apply(np.prod, raw=True)-1)*100
A janela deve estar documentada e não deve ser confundida com média das taxas.
- Composição correta.
- Janela correta.
- Unidade no nome ou legenda.
Publique uma evidência reproduzível
Escolha outra série do SGS, preserve snapshot, produza transformação e publique gráfico com ficha de proveniência.
- Registre código da série e data de acesso.
- Inclua um teste de sanidade específico.
abrir solução comentada
caminho de resolução
- Defina pergunta e unidade.
- Baixe e preserve bruto.
- Valide esquema.
- Transforme com justificativa.
- Compare um valor com publicação oficial.
- Publique código, gráfico e limites.
O artefato está completo quando uma segunda pessoa consegue executá-lo e obter o mesmo resultado sem perguntar o que você fez.
Essa rastreabilidade é a diferença central entre conteúdo explicativo e infraestrutura de análise.
- Fonte primária.
- Snapshot.
- Código executável.
- Teste de sanidade.
- Conclusão calibrada.
- Limite explícito.
Encontre o erro silencioso nas datas
Uma série usa datas como texto no formato dia/mês/ano e é ordenada alfabeticamente. Explique o erro e escreva a sequência mínima de validação para impedir um gráfico cronologicamente falso.
- Texto e data não obedecem necessariamente à mesma ordem.
- Valide conversão, duplicidade e monotonicidade.
abrir solução comentada
caminho de resolução
- Converta com pd.to_datetime(df["data"], format="%d/%m/%Y", errors="raise").
- Ordene pela coluna já convertida.
- Teste unicidade com is_unique.
- Teste ordem com is_monotonic_increasing.
- Compare mínimo, máximo e frequência esperada com a documentação da fonte.
A correção exige converter para um tipo temporal antes de ordenar e interromper a execução se houver data inválida, repetida ou fora de ordem.
Um gráfico pode parecer perfeitamente plausível enquanto conecta observações na ordem errada; tipos e invariantes evitam essa classe de erro silencioso.
- Conversão explícita.
- Ordenação após conversão.
- Teste de duplicidade.
- Teste de frequência ou intervalo.
Defina uma política para valores ausentes
Uma série mensal tem três lacunas. Compare excluir, preencher com zero, carregar o último valor e interpolar. Escolha uma política para inflação mensal e justifique.
- Zero é uma observação econômica, não ausência.
- A transformação posterior muda o custo da imputação.
abrir solução comentada
caminho de resolução
- Conte e localize as lacunas antes de qualquer transformação.
- Rejeite preencher automaticamente com zero, porque isso inventa inflação nula.
- Avalie se a fonte oferece revisão ou recuperação do valor original.
- Para análise oficial, preserve a lacuna e interrompa cálculos acumulados que dependem dela.
- Se interpolação for usada apenas para visualização exploratória, marque a imputação e apresente análise de sensibilidade.
Para uma série oficial de inflação, a política principal é recuperar a fonte ou manter a lacuna; imputação não deve ser confundida com dado observado.
A decisão sobre ausentes é parte do modelo empírico. Diferentes preenchimentos alteram composição, acumulados e conclusões, mesmo quando o código continua executando.
- Opções comparadas.
- Zero não tratado como ausência.
- Política ligada ao uso da série.
- Imputações identificáveis.
- Sensibilidade prevista.
Agregue estoques e fluxos corretamente
Você possui receita mensal, número de empregados no último dia do mês e taxa de inadimplência. Como deve produzir valores trimestrais sem somar tudo indiscriminadamente?
- Receita é fluxo; empregados é estoque.
- Taxas exigem pesos coerentes com seu denominador.
abrir solução comentada
caminho de resolução
- Some receitas mensais para obter o fluxo trimestral.
- Use o estoque de empregados no fim do trimestre ou a média mensal, conforme a pergunta, e documente a escolha.
- Recalcule inadimplência a partir dos numeradores e denominadores agregados, em vez de tirar média simples das taxas.
- Valide unidades e período de referência no resultado final.
Receita é somada, empregados são medidos em uma data ou média definida, e inadimplência é recomposta com pesos dados pela exposição relevante.
A frequência não determina a agregação: a natureza econômica da variável determina se somar, escolher um ponto no tempo ou ponderar.
- Fluxo identificado.
- Estoque identificado.
- Taxa ponderada pelo denominador.
- Período de referência documentado.
Audite um gráfico persuasivo demais
Um gráfico afirma que vendas “explodiram”: eixo começa em 98, mostra apenas quatro meses, não informa unidade e sobrepõe inflação anual. Redesenhe a evidência e descreva o que ainda não pode ser concluído.
- Escala, janela, unidade e comparabilidade são decisões analíticas.
- Nominal e real não são sinônimos.
abrir solução comentada
caminho de resolução
- Recupere série mais longa e identifique unidade nominal.
- Deflacione com índice e base compatíveis se a pergunta for poder de compra.
- Mostre valores com eixo e escala transparentes, incluindo zero quando a codificação visual depende de comprimento.
- Separe painel de vendas e inflação ou normalize séries apenas com finalidade declarada.
- Anote sazonalidade, promoções, composição e ausência de contrafactual.
O redesenho deve exibir janela suficiente, unidades, tratamento da inflação e uma escala honesta; só então permite descrever a trajetória observada.
Visualização é uma etapa de inferência. Escolhas gráficas podem fabricar magnitude e sincronismo sem alterar um único valor da base.
- Janela justificada.
- Unidades visíveis.
- Nominal separado de real.
- Escala defensável.
- Limite causal declarado.
Faça revisão cega de um pacote de replicação
Receba o pacote de outro analista sem instruções orais. Produza uma revisão que classifique reprodutibilidade, robustez e validade da afirmação, com correções prioritárias.
- Execute em ambiente limpo.
- Diferencie “o código roda” de “a conclusão é válida”.
abrir solução comentada
caminho de resolução
- Inventarie dados, licença, versões, script de entrada e saída esperada.
- Execute do zero e registre qualquer dependência implícita ou caminho local.
- Compare estatísticas intermediárias e resultado final com valores de referência.
- Altere escolhas razoáveis de janela, tratamento de ausentes e transformação para testar robustez.
- Audite se a conclusão respeita o desenho e entregue falhas ordenadas por impacto.
O pacote passa apenas quando reproduz o resultado em ambiente limpo, torna decisões observáveis e sustenta uma conclusão compatível com os dados.
Reprodutibilidade verifica a memória operacional da análise; robustez e validade exigem ainda perguntar se outras escolhas plausíveis mudam a resposta.
- Ambiente limpo documentado.
- Resultados intermediários verificados.
- Ao menos duas sensibilidades.
- Validade separada de execução.
- Prioridades de correção.
Demonstre domínio antes de avançar
Uma avaliação de 180 minutos integra modelagem, otimização, inferência e reprodução. O corte é 70/100, com rubrica e soluções completas.
A análise passa a ter memória
O diferencial não é oferecer um bloco de código; é entregar dado congelado, proveniência, testes, resultado esperado, gráfico e condição de atualização.
Um prompt pode gerar Python plausível, mas não garante que a série, unidade, calendário, transformação e valor de referência foram verificados em conjunto.
Nenhum gráfico entra numa decisão sem fonte, unidade, transformação, teste de sanidade e arquivo reproduzível.
O que cada referência sustenta
A referência não é decoração: o localizador permite conferir a afirmação na fonte original.
Estrutura do pipeline tabular.
QuantEcon — MatplotlibLecture 11: interface orientada a objetosConstrução explícita e reproduzível do gráfico.
IPCA fecha 2022 em 5,79%Tabela de variações mensais de 2022Snapshot e valor anual de referência.
IPCA e INPC — Metodologia e estrutura de ponderaçãoMetodologia e estrutura de ponderaçãoSignificado da série e limites do laboratório.
SGS — Banco de séries temporaisSérie 433 — IPCA mensalFonte programática equivalente para atualização.