Introdução à análise de inferência com BootStraps em Python
A análise de inferência de inicialização pode ser para você se você lidar com amostras de dados grandes e representativas .
No mês passado, meu chefe perguntou: poderíamos encontrar as verdadeiras exibições de vídeo médias do Instagram Reels para as principais marcas da América do Norte?
Eu estaria errado em relatar a ela as exibições médias de vídeo de uma única amostra de Reels. Para resolver esses problemas, precisamos pensar probabilisticamente…
Bootstraps para o resgate! Essa técnica cria um número finito de amostras; calcula uma estatística resumida (como a média) para cada amostra; e encontra um intervalo para a solução. No passado, obter 10.000 amostras parecia uma tarefa impossível, mas com o Python podemos abrir caminho.
Além dos intervalos de confiança , podemos usar Bootstraps para executar testes de significância . Este post é sobre como entender bootstraps e gerar intervalos de confiança.
Por que Bootstrapping?
Se seu chefe está perguntando por que o Bootstraps, diga a ele o seguinte:
- Esta é uma técnica não paramétrica , o que significa que não assume uma distribuição subjacente
- Não precisamos lidar com a normalidade dos dados ou variância semelhante
O que é um Bootstrap?
“Bootstrapping é o uso de reamostragem — com substituição — dados para realizar inferência estatística”
Um exemplo rápido do Python explicaria melhor o conceito do que eu:
import numpy as np
reel_views = [191, 145]
bootstrapped_video_views = np.random.choice(
reel_views
, size=len(reel_views)
)
print(f`the first sample: {bootstrapped_video_views}`)
--> the first sample: [191, 191]
print(f`the second sample: {bootstrapped_video_views}`)
--> the second sample: [145, 145]
print(f`the third sample: {bootstrapped_video_views}`)
--> the third sample: [191, 145]
Como gerar intervalos de confiança com bootstrap?
Podemos estimar a incerteza com Bootstraps usando intervalos de confiança. A ideia é encontrar o intervalo para a estatística de resumo ( a média ) que contém a verdadeira média da população da amostra.
Criamos uma réplica bootstrap reamostrando nossos dados (visualizações de vídeo) e calculando a estatística resumida de interesse (as visualizações médias de vídeo) . O código abaixo fica assim:
- Ele cria uma nova amostra selecionando aleatoriamente com substituição de nossos dados
- Ele calcula a estatística resumida ( a média ) dessa nova amostra e a armazena. Isso é chamado de replicação de bootstrap
- Ele repete as etapas 1 e 2 um número finito de vezes (10.000 é o padrão)
- Ele calcula os percentis 2,5 e 97,5 das 10.000 estatísticas resumidas armazenadas
def draw_bs_reps(data: list, func: Callable, size: int = 10000) -> np.array:
"""
Draw bootstrap replicates. Generate n 1d bootstrap replicates. Typical size = 5 - 10K repetitions
"""
rng = np.random.default_rng(seed=42)
bs_sample = rng.choice(data, size=(size, len(data)))
bs_replicates = np.apply_along_axis(func, arr=bs_sample, axis=1)
return bs_replicates
reel_views = [191, 145, 198, 192, 1022, ...] # Big Representative Sample
bootstrap_replicates = draw_bs_reps(reel_views, np.mean)
conf_int = np.percentile(bootstrap_replicates, [2.5, 97.5])
print(f'95% Confidence Interval: {conf_int}')
--> `95% Confidence Interval: [137.9, 150.3]`
Traçar seus resultados nunca é demais. Ao desenhar réplicas de bootstrap, podemos desenhar ECDFs, gráficos do KDE ou histogramas. Para mim, os gráficos ECDFs e KDE são superiores aos histogramas, pois plotam todos os pontos de dados sem a necessidade de binning. Abaixo está o KDE que plota todas as 10.000 réplicas de bootstrap:
95% das réplicas médias de bootstrap estão dentro das linhas roxas.
Se você acabar com um intervalo amplo, lembre-se de que aumentar o número de réplicas de bootstrap (por exemplo, 20.000) não o reduzirá. Se você deseja um intervalo mais restrito, sua única opção é coletar uma amostra de dados maior.
Bootstraps são incríveis, mas a única maneira de diminuir o efeito de outliers e produzir um intervalo mais estreito é coletar uma amostra de dados maior
Aprendizado
- Intervalos de confiança de inicialização nos ajudam a estimar a incerteza
- Para usar esta técnica, precisamos de uma amostra grande e representativa
- Bootstraps não podem espremer magicamente mais dados em uma amostra
- Para produzir intervalos mais estreitos, precisamos aumentar nosso tamanho de amostra





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)