Curso de Programação Estatística

Author

Andressa Cerqueira, Danilo Lourenço Lopes, Rafael Izbicki, Thiago Ramos

Published

August 4, 2026

Curso de Programação Estatística

Este é o material da disciplina Programação Estatística, da graduação em Estatística da UFSCar. O livro trata de uma ideia que atravessa boa parte da Estatística moderna: quando uma quantidade de interesse — uma probabilidade, uma esperança, uma integral, a distribuição de um estimador — não tem fórmula fechada, ainda assim podemos estimá-la repetindo o fenômeno muitas vezes no computador e olhando para o que acontece.

Enunciar essa ideia é fácil; executá-la exige responder a três perguntas, e é isso que os capítulos fazem, nesta ordem: de onde o computador tira números aleatórios, como transformar esses números na distribuição que nos interessa, e o que fazer com a amostra obtida.

Objetivo Geral

Este curso visa explorar o uso do computador como ferramenta de análise estatística, com atenção ao impacto das representações numéricas sobre os resultados dos algoritmos. O foco será na programação, visualização e preparação de dados, além de discutir tópicos importantes como aleatoriedade, pseudoaleatoriedade, erros de truncamento e arredondamento, entre outros. O curso inclui ainda uma introdução à inferência por simulação estocástica, utilizando métodos como Monte Carlo e integrações numéricas. O material do curso foi amplamente baseado nas discussões apresentadas em Ross (2006).

A quem se destina

O livro supõe que você já cursou uma disciplina de probabilidade: usamos variáveis aleatórias, funções de densidade e de distribuição acumulada, esperança e variância, e os dois teoremas que sustentam tudo o que faremos — a Lei dos Grandes Números e o Teorema Central do Limite.

Já de programação, não supomos nada. Os dois primeiros capítulos (Python e R) revisam o necessário do zero, incluindo onde instalar e escrever o código; eles não fazem parte do conteúdo do curso propriamente dito, e servem de consulta. Se você já programa em uma das duas linguagens, pode ir direto para Por que Simular? e voltar a esses capítulos quando precisar.

Como o livro está organizado

A aleatoriedade e sua origem. O primeiro capítulo mostra a simulação funcionando, sem ainda justificar nada, para estabelecer o que queremos ser capazes de fazer. O segundo abre a caixa-preta do runif/np.random.uniform e mostra como um algoritmo determinístico produz números que parecem aleatórios.

De \(\text{Unif}(0,1)\) para qualquer distribuição. Este é o coração do livro. A partir daqui, supomos resolvido o problema de gerar números uniformes em \([0,1)\), e a pergunta passa a ser: dada uma distribuição qualquer, como construir uma amostra dela usando apenas uniformes? Há mais de uma resposta, e cada capítulo apresenta um método, com suas hipóteses e seu custo.

O que fazer com a amostra. Ter a amostra é meio caminho. Os capítulos finais tratam de usá-la para estimar quantidades, de medir o erro dessa estimativa e de reduzi-lo sem simplesmente aumentar o número de simulações.

Como usar o livro

Todo exemplo executável aparece em R e em Python, em versões que fazem exatamente a mesma coisa. Você não precisa saber as duas linguagens: escolha uma e siga por ela.

Navegando pelos blocos de código
  • As abas R e Python ficam sincronizadas: ao escolher uma delas em qualquer ponto do livro, todos os demais blocos passam a exibir a mesma linguagem.
  • O código vem recolhido por padrão. Clique em Mostrar código para vê-lo.
  • Vale a pena tentar escrever o código antes de abrir o bloco: todos os métodos são apresentados como um pseudo-algoritmo em português, logo antes da implementação, e é justamente a passagem de um para o outro que se pretende ensinar aqui.

Os capítulos com simulação começam fixando uma semente (set.seed no R, np.random.seed no Python). Isso faz com que o código gere sempre os mesmos números, e é o que permite que os resultados que você obtém coincidam com os impressos no livro. Ao mudar a semente, os valores mudam — mas as conclusões, não; fazer isso de propósito é um bom teste de que a ideia foi entendida.

Cada capítulo termina com uma lista de exercícios. Alguns trazem a marcação (Desafio): são exercícios substancialmente mais difíceis que os demais — pedem uma demonstração, uma otimização analítica ou um argumento que o capítulo não desenvolveu — e ficam sempre ao final da lista.

Notação

O livro segue estas convenções:

Símbolo Significado
v.a. variável aleatória
f.d.a. função de distribuição acumulada
\(\mathbb{P}(A)\), \(\mathbb{E}[X]\), \(\text{Var}(X)\) probabilidade, esperança e variância
\(\text{Unif}(0,1)\), \(\text{Exp}(\lambda)\), \(N(\mu,\sigma^2)\) as distribuições usuais
\(\hat{\theta}_n\) um estimador de \(\theta\)
\(B\) número de simulações de Monte Carlo
\(n\) tamanho de uma amostra de dados reais

A distinção entre \(B\) e \(n\) é proposital e importante: \(n\) é o tamanho da amostra que você tem, e não se pode escolher; \(B\) é quantas vezes você decidiu rodar a simulação, e aumentá-lo custa apenas tempo de computador.

Autores

Andressa Cerqueira, Danilo Lourenço Lopes, Rafael Izbicki, Thiago Rodrigo Ramos.

Encontrou um erro ou tem uma sugestão? O material é aberto e vive em https://github.com/thiagorr162/prog-estat.