Revisão integrada

Nove paradas, cada uma um exercício que liga a análise exploratória à probabilidade, para rodar no navegador

Cada tópico do mapa mora de um lado: análise exploratória à esquerda, probabilidade à direita. As pontes ligam os dois lados, e aqui cada ponte vira um exercício resolvido por dois caminhos: a rota dos dados (pandas) e a rota da probabilidade (fórmula ou modelo). Quando os dois caminhos dão o mesmo número, a ponte está entendida.

DicaComo funciona esta página
  • O Python roda no seu navegador. Os blocos não rodam sozinhos: clique em Run Code em cada um, de cima para baixo. Na primeira vez, o Python leva alguns segundos para carregar.
  • Em cada exercício, troque os ______ pelo código certo e clique em Run Code. A correção aparece logo abaixo: verde é certo, amarelo é “ainda não”.
  • Travou? Use Show Hint (dica) e, em último caso, Show Solution (solução). Start Over volta ao código original.
  • No mapa, o botão Revisão guiada percorre as mesmas paradas. A mesma lista em notebook, com correção automática, está na Revisão B no Colab.

A base é o Titanic da Aula 4. Esta célula carrega os dados e prepara as variáveis qualitativas como na aula. Comece por ela: clique em Run Code. Depois, mude o código e rode de novo para explorar.

1 O tipo da variável decide a ferramenta

A ponte. Antes de qualquer conta, o tipo da variável escolhe o resumo. E uma quantitativa discreta nos dados é, no modelo, uma variável aleatória discreta. Tópicos: Tipos de variáveis · Categorias e ordem · Tabela de frequências · Medidas de posição · V.a. e distribuição.

Na Aula 3, antes de qualquer conta, classificamos as variáveis: o tipo decide a ferramenta. Qualitativa pede contagem e tabela; quantitativa contínua pede média, mediana e quartis; quantitativa discreta também pode ser contada valor a valor, e essa tabela, na parada 7, vira uma distribuição de probabilidade.

Exercício 1.1 rota dos dados

Classifique as variáveis em 'nominal', 'ordinal', 'discreta' ou 'continua'. Pclass é a classe da passagem, Fare é a tarifa, SibSp é o número de irmãos ou cônjuges a bordo.

Classe da passagem é categoria com ordem; tarifa é medida; número de irmãos vem de contagem.

tipos = {'Pclass': 'ordinal', 'Fare': 'continua', 'SibSp': 'discreta', 'Sex': 'nominal'}
tipos

Exercício 1.2 rota dos dados

Pclass é ordinal: calcule as frequências relativas na ordem natural das classes (1st, 2nd, 3rd), e não da mais para a menos frequente.

O argumento que controla a ordenação por frequência é sort.

freq_classe = dados['Pclass'].value_counts(normalize=True, sort=False)
freq_classe

Exercício 1.3 rota dos dados

Fare é contínua e tem algumas tarifas muito altas. Calcule o resumo de posição que não é puxado por elas.

Média é puxada pelos valores extremos; a mediana não.

mediana_tarifa = dados['Fare'].median()
mediana_tarifa

Exercício 1.4 rota dos dados

SibSp é discreta: faça a tabela de frequências relativas ordenada pelo valor (0, 1, 2, …).

value_counts ordena pela frequência; para ordenar pelo valor, use o método que ordena o índice.

fr_sibsp = dados['SibSp'].value_counts(normalize=True).sort_index()
fr_sibsp
Pergunta para a turma: Por que não faz sentido calcular a média de Pclass, mesmo que ela venha como 1, 2 e 3 no arquivo?

Porque é qualitativa ordinal: os números só dizem a ordem, não medem nada. Uma classe média de 2,31 não tem interpretação. Para ela, o resumo certo é a tabela de frequências na ordem natural, como no Exercício 1.2.

2 Contar é estimar probabilidade

A ponte. A frequência relativa de um rótulo estima a probabilidade do evento, e os filtros com & e | são a interseção e a união. Tópicos: Tabela de frequências · Filtrar linhas · Eventos e regras.

A frequência relativa de um rótulo é a nossa estimativa da probabilidade do evento (Aula 2). E as regras da probabilidade valem para essas frequências: o complementar é “1 menos”, e a união soma e desconta a interseção. Nos filtros do pandas, & é a interseção e | é a união.

Exercício 2.1 rota dos dados

Calcule \(P(\text{3ª classe})\) contando.

value_counts(normalize=True) e depois o rótulo entre colchetes.

p_3a = dados['Pclass'].value_counts(normalize=True)['3rd']
p_3a

Exercício 2.2 rota da probabilidade

Pela regra do complementar, calcule \(P(\text{não ser da 3ª classe})\) sem olhar os dados de novo.

\(P(A^c) = 1 - P(A)\).

p_nao_3a = 1 - p_3a
p_nao_3a

Exercício 2.3 rota dos dados

Confira pelos dados: a média de uma condição (True/False) é a proporção de True. Complete o operador para “não é da 3ª classe”.

Deve dar exatamente o número do Exercício 2.2.

p_nao_3a_dados = (dados['Pclass'] != '3rd').mean()
p_nao_3a_dados

Exercício 2.4 rota da probabilidade

Pela regra da união, calcule \(P(\text{mulher} \cup \text{1ª classe}) = P(F) + P(\text{1ª}) - P(F \cap \text{1ª})\). A interseção sai da tabela cruzada com proporções do total.

Com normalize=True, cada casela da tabela é uma probabilidade conjunta.

p_f = dados['Sex'].value_counts(normalize=True)['female']
p_1a = dados['Pclass'].value_counts(normalize=True)['1st']
p_f_e_1a = pd.crosstab(dados['Sex'], dados['Pclass'], normalize=True).loc['female', '1st']
p_f_ou_1a = p_f + p_1a - p_f_e_1a
p_f_ou_1a

Exercício 2.5 rota dos dados

Agora pelos dados: filtre quem é mulher ou da 1ª classe e calcule a proporção.

& é “e” (interseção); | é “ou” (união).

p_f_ou_1a_dados = ((dados['Sex'] == 'female') | (dados['Pclass'] == '1st')).mean()
p_f_ou_1a_dados
Pergunta para a turma: Por que a regra da união subtrai \(P(F \cap \text{1ª})\)?

Porque as mulheres da 1ª classe entram duas vezes na soma, uma em \(P(F)\) e outra em \(P(\text{1ª})\). Tirando a interseção uma vez, cada passageira é contada uma vez só. O filtro com | faz isso automaticamente.

3 Condicionar é filtrar

A ponte. P(A | B) olha só para quem está em B. Nos dados, isso é filtrar as linhas de B ou usar crosstab com normalize=‘index’. Tópicos: Filtrar linhas · Tabela cruzada · Prob. condicional.

\(P(A \mid B)\) é a probabilidade de \(A\) olhando só para quem está em \(B\). Condicionar é reduzir o espaço amostral, e nos dados isso é exatamente filtrar as linhas. Vamos calcular \(P(\text{sobreviver} \mid \text{1ª classe})\) de três jeitos; os três têm de dar o mesmo número.

Exercício 3.1 rota dos dados

Jeito 1, filtrando: fique só com as linhas da 1ª classe (todas as colunas) e calcule a proporção de sobreviventes.

dados.loc[condição, :].

primeira = dados.loc[dados['Pclass'] == '1st', :]
p_s_dado_1a = primeira['Survived'].value_counts(normalize=True)['Yes']
p_s_dado_1a

Exercício 3.2 rota dos dados

Jeito 2, tabela cruzada: com a classe nas linhas, use as proporções dentro de cada linha.

'index' divide pelo total da linha; 'columns', pelo total da coluna.

tab = pd.crosstab(dados['Pclass'], dados['Survived'], normalize='index')
p_s_dado_1a_tab = tab.loc['1st', 'Yes']
p_s_dado_1a_tab

Exercício 3.3 rota da probabilidade

Jeito 3, definição da Aula 2: \(P(S \mid \text{1ª}) = \dfrac{P(S \cap \text{1ª})}{P(\text{1ª})}\).

Numerador: a interseção. Denominador: a probabilidade da condição.

conjunta = pd.crosstab(dados['Pclass'], dados['Survived'], normalize=True)
p_s_e_1a = conjunta.loc['1st', 'Yes']
p_1a = conjunta.loc['1st'].sum()
p_s_dado_1a_def = p_s_e_1a / p_1a
p_s_dado_1a_def
Pergunta para a turma: Qual a diferença entre \(P(S \mid \text{1ª})\) e \(P(S \cap \text{1ª})\)?

\(P(S \cap \text{1ª}) = 0,153\) é a fração de todos os passageiros que são da 1ª classe e sobreviveram. \(P(S \mid \text{1ª}) = 0,630\) é a fração de sobreviventes entre os da 1ª classe. A condicional muda o denominador: divide só pelo grupo da condição.

4 Independência se vê na tabela

A ponte. Eventos independentes: saber B não muda a chance de A. Na tabela cruzada, todas as linhas ficam iguais à linha All. Tópicos: Tabela cruzada · Independência · Eventos e regras.

Dois eventos são independentes quando saber um não muda a chance do outro: \(P(A \mid B) = P(A)\), ou, de forma equivalente, \(P(A \cap B) = P(A)\,P(B)\). Na tabela cruzada com normalize='index' e margens, isso se vê de olho: as linhas ficam iguais à linha All.

Exercício 4.1 rota dos dados

Monte a tabela da classe (linhas) por sobrevivência (colunas), com proporções dentro de cada linha e com a linha de margem All. Guarde \(P(S \mid \text{3ª})\).

O argumento que acrescenta os totais é margins.

tab_classe = pd.crosstab(dados['Pclass'], dados['Survived'], normalize='index', margins=True)
p_s_dado_3a = tab_classe.loc['3rd', 'Yes']
p_s_dado_3a

Exercício 4.2 as duas rotas

A linha All\(P(S)\). Compare com \(P(S \mid \text{3ª})\) e responda em texto: classe e sobrevivência são 'independentes' ou 'dependentes'?

Olhe os dois números impressos: saber que o passageiro é da 3ª classe muda a chance de sobreviver?

p_s = tab_classe.loc['All', 'Yes']
print(p_s_dado_3a, p_s)
resposta_4_2 = 'dependentes'
resposta_4_2

Exercício 4.3 rota da probabilidade

Agora pela regra do produto, com sexo: se fossem independentes, \(P(S \cap F)\) seria igual a \(P(S)\,P(F)\). Calcule a diferença entre os dois lados.

Uma diferença perto de zero indicaria independência.

conj_sexo = pd.crosstab(dados['Sex'], dados['Survived'], normalize=True)
p_s_e_f = conj_sexo.loc['female', 'Yes']
p_f = conj_sexo.loc['female'].sum()
diferenca = p_s_e_f - p_s * p_f
diferenca
Pergunta para a turma: “Sobreviveu” e “não sobreviveu” são eventos disjuntos. Eles são independentes?

Não. Disjuntos não acontecem juntos, então \(P(S \cap S^c) = 0\), mas \(P(S)\,P(S^c) = 0,384 \times 0,616 \neq 0\). Saber que um aconteceu diz tudo sobre o outro (o outro não aconteceu): isso é o contrário de independência.

5 Inverter a condicional: Bayes e o classificador

A ponte. normalize=‘columns’ dá a condicional invertida. O Teorema de Bayes faz a mesma troca pela fórmula, e o classificador guarda a decisão numa coluna nova, avaliada com outro crosstab. Tópicos: Tabela cruzada · Teorema de Bayes · Prob. total e árvore · Classificador (Titanic) · Criar colunas.

\(P(S \mid \text{1ª})\) e \(P(\text{1ª} \mid S)\) são perguntas diferentes. Na tabela cruzada, trocar 'index' por 'columns' troca a pergunta; o Teorema de Bayes faz a mesma troca pela fórmula. Na Aula 4, essa conta virou um classificador, cuja decisão vai para uma coluna nova e é avaliada com outra tabela cruzada, a matriz de confusão.

Exercício 5.1 rota dos dados

Pelos dados: entre os sobreviventes, qual a proporção da 1ª classe? Isso é \(P(\text{1ª} \mid S)\).

Dentro de cada coluna: 'columns'.

p_1a_dado_s = pd.crosstab(dados['Pclass'], dados['Survived'], normalize='columns').loc['1st', 'Yes']
p_1a_dado_s

Exercício 5.2 rota da probabilidade

Pela probabilidade: use o Teorema de Bayes para calcular \(P(S \mid \text{1ª}) = \dfrac{P(\text{1ª} \mid S)\,P(S)}{P(\text{1ª})}\).

Compare com a parada 3: tem de dar o mesmo número.

p_s = dados['Survived'].value_counts(normalize=True)['Yes']
p_1a = dados['Pclass'].value_counts(normalize=True)['1st']
p_s_dado_1a_bayes = p_1a_dado_s * p_s / p_1a
p_s_dado_1a_bayes

Exercício 5.3 rota da probabilidade

Probabilidade total: \(P(\text{1ª}) = P(\text{1ª} \mid S)\,P(S) + P(\text{1ª} \mid S^c)\,P(S^c)\). Tire \(P(\text{1ª} \mid S^c)\) da tabela com 'columns'.

O resultado tem de bater com p_1a, contado direto nos dados.

tab_col = pd.crosstab(dados['Pclass'], dados['Survived'], normalize='columns')
p_1a_dado_sc = tab_col.loc['1st', 'No']
p_1a_total = p_1a_dado_s * p_s + p_1a_dado_sc * (1 - p_s)
p_1a_total

Exercício 5.4 as duas rotas

Classificador pela classe: prevê 'Yes' para a classe em que \(P(S \mid \text{classe})\) passa do limite de decisão e 'No' nas outras. A previsão vai para a coluna nova Boot_classe. Complete o limite.

Na Aula 4: classificar como sobrevivente se \(P(S \mid \text{perfil}) > P(S^c \mid \text{perfil})\).

p_s_por_classe = pd.crosstab(dados['Pclass'], dados['Survived'], normalize='index')['Yes']
dados['Boot_classe'] = 'No'
for classe in ['1st', '2nd', '3rd']:
    if p_s_por_classe[classe] > 0.5:
        dados.loc[dados['Pclass'] == classe, 'Boot_classe'] = 'Yes'
previsoes = dados['Boot_classe'].value_counts()
previsoes

Exercício 5.5 rota dos dados

Matriz de confusão: cruze o real (Survived) com o previsto (Boot_classe), com proporções dentro de cada linha. O falso negativo é a proporção de sobreviventes que o classificador previu como 'No'.

Na matriz, as linhas são o real e as colunas o previsto.

confusao = pd.crosstab(dados['Survived'], dados['Boot_classe'], normalize='index')
falso_negativo = confusao.loc['Yes', 'No']
falso_negativo

Exercício 5.6 rota dos dados

Acurácia: a proporção de passageiros em que a previsão acertou.

A média de uma coluna de True/False é a proporção de True.

acuracia = (dados['Survived'].astype(str) == dados['Boot_classe']).mean()
acuracia
Pergunta para a turma: Na Aula 4, o classificador pelo sexo acertou 78,7%. O classificador pela classe acertou 67,9%. Por que o sexo classifica melhor?

Porque a sobrevivência está mais associada ao sexo do que à classe: \(P(S \mid F)\) e \(P(S \mid M)\) são muito diferentes (0,742 e 0,189), enquanto só a 1ª classe passa de 0,5. O classificador pela classe erra quase todos os sobreviventes da 2ª e da 3ª classes: por isso o falso negativo dele é de 60,2%.

6 Classificar textos é contar palavras

A ponte. P(palavra | livro) é a frequência relativa da palavra no livro, um value_counts(normalize=True). O Naive Bayes multiplica essas frequências. Tópicos: Tabela de frequências · Classificar textos.

No classificador de textos da Aula 6 (e do Projeto 1), \(P(\text{palavra} \mid \text{livro})\) é simplesmente a frequência relativa da palavra no livro, um value_counts(normalize=True). O Naive Bayes supõe as palavras independentes e multiplica essas frequências. A frase aqui é outra, diferente da frase da APS3.

Exercício 6.1 rota dos dados

Calcule \(P(\text{'mar'} \mid \text{Os Lusíadas})\): a frequência relativa da palavra mar no livro.

É uma tabela de frequências de uma variável qualitativa (as palavras).

freq_lusiadas = lusiadas.value_counts(normalize=True)
p_mar_lusiadas = freq_lusiadas['mar']
p_mar_lusiadas

Exercício 6.2 rota dos dados

Faça o mesmo em Dom Casmurro: \(P(\text{'mar'} \mid \text{Dom Casmurro})\).

Qual livro usa mais a palavra “mar”?

freq_casmurro = casmurro.value_counts(normalize=True)
p_mar_casmurro = freq_casmurro['mar']
p_mar_casmurro

Exercício 6.3 rota da probabilidade

Classifique a frase 'o mar e os olhos' com o Naive Bayes, usando priors iguais (\(P(L) = P(C) = 0{,}5\)): multiplique as frequências das palavras em cada livro e compare. A resposta é o texto 'Lusíadas' ou 'Dom Casmurro'.

\(P(L \mid \text{frase}) \propto P(\text{frase} \mid L)\,P(L)\), e \(P(\text{frase} \mid L)\) é o produto das frequências.

frase = 'o mar e os olhos'.split()
p_frase_lusiadas = freq_lusiadas[frase].prod()
p_frase_casmurro = freq_casmurro[frase].prod()
classificacao = 'Lusíadas' if 0.5 * p_frase_lusiadas > 0.5 * p_frase_casmurro else 'Dom Casmurro'
classificacao
Pergunta para a turma: E se a frase tivesse uma palavra que não aparece em um dos livros?

A frequência dela nesse livro seria zero, e o produto inteiro viraria zero, por mais que as outras palavras apontem para aquele livro. Por isso o Projeto 1 usa a suavização de Laplace (somar 1 a todas as contagens) e soma logaritmos em vez de multiplicar números muito pequenos.

7 Da tabela de frequências à E(X) e à Var(X)

A ponte. A tabela de frequências de uma discreta é a sua distribuição; a média ponderada é E(X), e a variância com ddof=0 é Var(X). As propriedades de aX + b valem na coluna criada. Tópicos: Tabela de frequências · Medidas de posição · Medidas de dispersão · Criar colunas · V.a. e distribuição · Esperança e variância · E(aX+b) e Var(aX+b).

Seja \(X\) o número de irmãos ou cônjuges a bordo (SibSp) de um passageiro sorteado. Tratando as frequências como probabilidades, a tabela da parada 1 é a distribuição de \(X\), e as fórmulas da Aula 8 viram contas com a tabela. Do lado dos dados, as mesmas contas saem de .mean() e .var(ddof=0); e as propriedades de \(aX + b\) valem para uma coluna criada.

Exercício 7.1 rota da probabilidade

Pela probabilidade: \(E(X) = \sum_x x \cdot P(X = x)\), com a tabela de frequências no papel de \(P(X = x)\).

Multiplique cada valor pela sua probabilidade e some.

fr = dados['SibSp'].value_counts(normalize=True).sort_index()
esperanca_x = (fr.index * fr).sum()
esperanca_x

Exercício 7.2 rota dos dados

Pelos dados: a média da coluna.

Tem de dar o mesmo que o 7.1.

media_x = dados['SibSp'].mean()
media_x

Exercício 7.3 rota dos dados

Variância: \(Var(X) = \sum_x (x - E(X))^2 \cdot P(X = x)\) já está calculada em variancia_x. Do lado dos dados, qual ddof dá o mesmo número?

O padrão do pandas é ddof=1 (divide por \(n - 1\)).

variancia_x = (((fr.index - esperanca_x) ** 2) * fr).sum()
variancia_dados = dados['SibSp'].var(ddof=0)
variancia_dados

Exercício 7.4 rota dos dados

Crie a coluna taxa = 10 libras por irmão ou cônjuge a bordo mais 5 libras fixas, isto é, \(Y = 10X + 5\). Calcule o desvio padrão (com ddof=0) da coluna.

Complete a parte fixa da taxa.

dados['taxa'] = 10 * dados['SibSp'] + 5
dp_taxa_dados = dados['taxa'].std(ddof=0)
dp_taxa_dados

Exercício 7.5 rota da probabilidade

Pela propriedade da Aula 8, \(DP(aX + b) = |a| \cdot DP(X)\). Calcule o desvio padrão de \(Y\) sem usar a coluna.

O \(b = 5\) não entra no desvio padrão.

dp_taxa_prop = 10 * variancia_x ** 0.5
dp_taxa_prop
Pergunta para a turma: Quanto vale \(E(Y)\)? E por que as 5 libras fixas não aparecem no desvio padrão?

\(E(Y) = 10\,E(X) + 5 = 10,23\) libras. Somar uma constante desloca todos os valores igualmente: a média anda, mas a distância de cada valor até a média não muda. Por isso \(Var(X + b) = Var(X)\).

8 No histograma, área é probabilidade

A ponte. Com density=True, a área de cada barra é a proporção de observações na faixa. Somar áreas é somar probabilidades, e a área total vale 1. Tópicos: Histograma · Faixas (pd.cut) · V.a. e distribuição.

Na Aula 7, o histograma com density=True tem área total 1, e a área de cada barra (altura vezes largura) é a proporção de observações naquela faixa. É por isso que ele é a ponte para as distribuições de probabilidade: somar áreas é somar probabilidades.

Exercício 8.1 rota dos dados

Pelos dados: a proporção de passageiros com idade de 20 (inclusive) até 30 (exclusive) anos.

Duas condições juntas: &.

p_20_30 = ((idades >= 20) & (idades < 30)).mean()
p_20_30

Exercício 8.2 rota da probabilidade

Pelo histograma: com faixas de 5 anos, as barras [20, 25) e [25, 30) são as de posição 4 e 5. Some as áreas das duas (densidade vezes largura).

faixas[4] é 20 e faixas[5] é 25.

densidades, faixas, _ = plt.hist(idades, bins=np.arange(0, 85, 5), density=True, edgecolor='white')
plt.xlabel('idade (anos)')
plt.ylabel('densidade')
plt.show()
area_20_30 = densidades[4] * 5 + densidades[5] * 5
area_20_30

Exercício 8.3 rota da probabilidade

Some as áreas de todas as barras.

Todas as faixas têm a mesma largura.

area_total = (densidades * 5).sum()
area_total
Pergunta para a turma: Por que, sem density=True, a altura das barras não pode ser lida como probabilidade?

Sem density=True a altura é uma contagem, que depende do tamanho da amostra e da largura das faixas (lembre do histograma errado da Aula 7, com faixas de larguras diferentes). Com densidade, a área total vale 1, como em qualquer distribuição de probabilidade.

9 Da Bernoulli à binomial: dados × modelo

A ponte. A média de uma coluna 0/1 é o p da Bernoulli. Somando 10 sorteios, o modelo Bin(10; p) prevê as frequências que a simulação com os dados produz. Tópicos: Tabela de frequências · Bernoulli · Binomial · Usar a cdf: ≥, <, entre · Dados × modelo · Binomial com dados.

Sorteie um passageiro: \(B = 1\) se sobreviveu e \(B = 0\) se não. Então \(B \sim Bernoulli(p)\), e \(p\) é a média da coluna 0/1. Sorteie 10 com reposição e conte os sobreviventes: \(Y \sim Bin(10;\ p)\). Aqui fazemos o sorteio de verdade, 2.000 vezes, e comparamos com o modelo: é o gráfico dados × modelo da Aula 11.

Exercício 9.1 rota dos dados

Pelos dados: crie a coluna 0/1 de sobreviventes e estime \(p\) como a média dela.

Qual método calcula a média?

sobreviveu = (dados['Survived'] == 'Yes').astype(int)   # 1 = sobreviveu, 0 = não
p = sobreviveu.mean()
p

Exercício 9.2 rota da probabilidade

Pela probabilidade: \(Var(B) = p(1 - p)\). (Confira que dá o mesmo que sobreviveu.var(ddof=0).)

\(p(1 - p)\).

var_bernoulli = p * (1 - p)
var_bernoulli

Exercício 9.3 rota da probabilidade

Pelo modelo: \(P(Y \geq 5)\) para 10 sorteados, com stats.binom.cdf.

“Pelo menos 5” é o complemento de “no máximo 4”.

p_pelo_menos_5 = 1 - stats.binom.cdf(4, 10, p)
p_pelo_menos_5

Exercício 9.4 rota dos dados

Pelos dados (simulados): a proporção das 2.000 rodadas com pelo menos 5 sobreviventes.

Deve ficar perto do resultado do 9.3, mas não idêntico: é uma simulação.

p_pelo_menos_5_sim = (sobreviventes >= 5).mean()
p_pelo_menos_5_sim

Exercício 9.5 rota dos dados

A tabela de frequências relativas das 2.000 contagens, ordenada pelo número de sobreviventes. É ela que vai para o gráfico.

O mesmo comando da parada 1.

freq_sim = sobreviventes.value_counts(normalize=True).sort_index()
freq_sim
Pergunta para a turma: E se os pontos dos dados ficassem longe dos pontos do modelo? O que poderia estar errado?

Duas coisas. (1) O parâmetro: talvez \(p\) não seja o suposto; como \(E(Y) = np\), estima-se \(\hat{p} = \bar{y}/n\) (Exercício 7 da atividade da Aula 11). (2) As suposições: ensaios não independentes ou com probabilidades diferentes (os 14 itens da vistoria do Detran não são iguais). Se a suposição cai, a binomial pode não servir.

Todas as pontes

Nos dados (análise exploratória) No modelo (probabilidade) A ponte Parada
Tipos de variáveis V.a. e distribuição Quantitativa discreta nos dados, variável aleatória discreta no modelo 1
Tabela de frequências Eventos e regras Frequência relativa ≈ probabilidade 2
Filtrar linhas Eventos e regras & e | nos filtros são interseção e união de eventos 2
Filtrar linhas Prob. condicional Filtrar linhas = condicionar (reduzir o espaço amostral) 3
Tabela cruzada Prob. condicional crosstab(normalize=‘index’) dá P(coluna | linha) 3
Tabela cruzada Independência Linhas iguais à linha All da tabela cruzada indicam independência 4
Tabela cruzada Teorema de Bayes normalize=‘columns’ dá P(linha | coluna): Bayes inverte a condicional 5
Tabela cruzada Classificador (Titanic) A matriz de confusão é um crosstab(real, previsto) 5
Criar colunas Classificador (Titanic) A previsão do classificador vira uma coluna nova (Boot) 5
Tabela de frequências Classificar textos P(palavra | livro) é a frequência relativa da palavra no livro 6
Tabela de frequências V.a. e distribuição Tabela de frequências de uma discreta ≈ distribuição de probabilidade 7
Medidas de posição Esperança e variância Média dos dados ≈ E(X) 7
Medidas de dispersão Esperança e variância Variância dos dados (ddof=0) ≈ Var(X) 7
Criar colunas E(aX+b) e Var(aX+b) Criar a coluna Y = aX + b e tirar a média dá a·E(X) + b 7
Histograma V.a. e distribuição Histograma com density=True: área de uma faixa = probabilidade 8
Tabela de frequências Bernoulli A média de uma coluna 0/1 é a frequência relativa do 1, o p da Bernoulli 9
Dados × modelo Binomial com dados Frequência relativa × P(Y = y): o modelo se ajusta aos dados? 9