Binomial com dados: o modelo se ajusta?

Comparar as frequências observadas em uma base real com as probabilidades de um modelo binomial e estimar p a partir dos dados.
Probabilidade e variáveis aleatóriasModelos discretosAula 11← voltar ao mapa
Na prova · apoio Estimar p pelos dados e comparar as frequências observadas com o modelo. Guia da prova

Os códigos desta página rodam no navegador, mas não sozinhos: clique em Run Code em cada bloco, de cima para baixo.

DicaEm uma frase

Para saber se uma binomial descreve bem uma variável, colocamos lado a lado as frequências relativas dos dados e as probabilidades do modelo; se não baterem, podemos estimar \(p\) pelos dados usando \(E(Y) = np\).

A ideia

Até aqui a binomial era usada com \(n\) e \(p\) dados no enunciado. Na Aula 11 a pergunta muda: temos uma base de dados real; um modelo binomial descreve bem esses dados? É o encontro dos dois lados do mapa: a tabela de frequências, da análise exploratória, contra a distribuição de probabilidades, da probabilidade.

O caso é o da vistoria do Detran. Cada carro passa por 14 itens (extintor, pneus, buzina, cintos…). Seja \(Y\) o número de itens em não conformidade em um carro. A proposta é \(Y \sim Bin(14;\ 0{,}1)\): \(n = 14\) itens e probabilidade \(p = 0{,}1\) de cada item estar irregular.

Antes de qualquer conta, vale discutir as condições (Exercício 1 da atividade): os 14 itens não são ensaios idênticos, a chance de um pneu gasto não é a mesma de um extintor vencido, e carros velhos tendem a acumular problemas (dependência). O modelo é uma simplificação. Os dados vão dizer se ela é boa o bastante.

O roteiro tem quatro passos:

  1. calcular as probabilidades do modelo, \(P(Y = y)\) para \(y = 0, \dots, 14\);
  2. calcular as frequências relativas dos dados, \(fr(y)\);
  3. comparar as duas em um gráfico e comparar médias e variâncias;
  4. se o ajuste for ruim, estimar \(p\) pelos dados: como \(E(Y) = np\), usamos \(\hat p = \bar y / n\).

No código

Passo 1: o modelo.

Passo 2: os dados. Carros.txt tem 3.000 carros, com o tipo (1: popular, 2: não popular) e a quantidade de itens em não conformidade.

O .sort_index() é essencial: sem ele, a tabela sai ordenada da maior para a menor frequência, e o gráfico do passo 3 fica embaralhado.

Passo 3: comparar. Os pontos são os dados; os losangos, o modelo.

A média dos dados (1,37) está perto de \(E(Y) = 1{,}4\), mas o formato não bate tão bem: há mais carros sem nenhum problema do que o modelo prevê (28,8% contra 22,9%) e menos com exatamente um (31,7% contra 35,6%). A variância também denuncia: 1,58 nos dados contra 1,26 no modelo. Dados mais espalhados do que a binomial prevê são um sinal de que misturamos grupos com \(p\) diferentes.

Passo 4: estimar \(p\) para cada grupo. Se \(E(Y) = np\), então \(p = E(Y)/n\), e a estimativa pelos dados é \(\hat p = \bar y / 14\). Para os carros populares:

Com \(\hat p = 0{,}131\), as colunas ficam próximas (por exemplo, 29,5% contra 29,0% em \(y = 2\)). Fazendo o mesmo para os não populares, \(\hat p = 0{,}048\). Os dois tipos de carro têm probabilidades bem diferentes, e é por isso que o modelo único, com \(p = 0{,}1\), ajustava mal a base inteira.

Por que um modelo, se já temos os dados?

Os 3.000 carros são uma amostra. O modelo descreve a população de carros que ainda vão passar pela vistoria: com ele calculamos probabilidades de valores que nem apareceram na amostra (10 itens irregulares, por exemplo), fazemos previsões e resumimos tudo em dois números, \(n\) e \(p\).

Armadilhas comuns

  • Esquecer .sort_index() depois de value_counts(). A tabela sai ordenada pela frequência, não pelo valor de \(y\).
  • Comparar contagens com probabilidades. Use normalize=True: probabilidades somam 1, contagens somam 3.000.
  • Estimar \(p\) com a média. A média dos populares é 1,83 itens por carro; \(p\) é a probabilidade por item, \(1{,}83/14 = 0{,}131\).
  • Usar range(len(fr)) no eixo x. Funciona aqui porque os valores observados vão de 0 a 8 sem buracos. Se faltar um valor no meio (ou o zero), os pontos se deslocam. Use fr.index.
  • Olhar só a média. Médias parecidas não garantem bom ajuste; compare o formato no gráfico e a variância.

A atividade também compara a frequência relativa acumulada (fr.cumsum()) com a probabilidade acumulada (stats.binom.cdf(valores, n, p)). Curvas acumuladas deixam as diferenças mais fáceis de ver quando as probabilidades individuais são pequenas. Veja dados × modelo.

Exercícios aqui na página

Complete os ______ e clique em Run Code: a correção aparece logo abaixo. Use Show Hint para uma dica e Show Solution para ver uma resolução. O Python roda no seu navegador; na primeira vez ele leva alguns segundos para carregar.

Exercício 1

Divida os 890 primeiros passageiros em 89 grupos de 10 (em ordem, com titanic10.index // 10) e conte os sobreviventes de cada grupo. Qual é a média de sobreviventes por grupo?

Como Survived é 0/1, a soma de cada grupo é o número de sobreviventes.

contagens = titanic10['Survived'].groupby(titanic10.index // 10).sum()
media_grupos = contagens.mean()
media_grupos

Exercício 2

Se cada grupo segue \(Bin(10;\ p)\), então \(E(Y) = 10p\). Estime \(p\) a partir da média dos grupos.

\(\hat{p} = \bar{y} / n\), como no Exercício 7 da atividade da Aula 11.

p_hat = media_grupos / 10
p_hat

Exercício 3

Compare a frequência relativa de grupos com exatamente 4 sobreviventes com \(P(Y = 4)\) do modelo \(Bin(10;\ \hat{p})\). Os dois números estão próximos (diferença menor que 0,05)? Responda 'sim' ou 'nao'.

É a comparação dados × modelo da Aula 11, valor a valor.

fr = contagens.value_counts(normalize=True).sort_index()
print('dados:', fr[4], '  modelo:', stats.binom.pmf(4, 10, p_hat))
resposta = 'sim'
resposta

Comandos e documentação oficial

formulário o comando está no formulário que você pode consultar na prova.

Pontes com o outro lado do mapa

Este tópico aparece nestas paradas da revisão guiada, em que cada ponte vira um exercício resolvido pelos dois caminhos:

Pratique

As listas novas de revisão abrem no Google Colab (use Arquivo → Salvar uma cópia no Drive). As listas das aulas estão no Blackboard, na pasta de cada aula.