Bayes
Carregando, aguarde alguns segundos.

3 - Estatística Bayesiana

A estatística bayesiana é uma abordagem estatística que se baseia no Teorema de Bayes para fazer inferências sobre parâmetros desconhecidos ou realizar previsões, levando em consideração a probabilidade de um evento ocorrer.

Ou seja, a probabilidade de um evento ocorrer é atualizada à medida que novas evidências são coletadas.

Ao contrário da abordagem frequentista tradicional, que trata os parâmetros como fixos e desconhecidos, a estatística bayesiana expressa incerteza em termos de distribuições de probabilidade.

A estatística bayesiana começa com a especificação de uma distribuição de probabilidade inicial, conhecida como priori (probabilidade anterior), que representa o conhecimento ou crenças prévias sobre o parâmetro desconhecido.

Essa distribuição inicial pode ser baseada em informações históricas, conhecimento especializado ou até mesmo opiniões subjetivas.

Em seguida, com base nos dados observados, é calculada a distribuição de probabilidade posterior, que representa a atualização das crenças sobre o parâmetro desconhecido.

O Teorema de Bayes é fundamental para a estatística bayesiana, pois descreve como a distribuição de probabilidade posterior pode ser obtida a partir da distribuição priori e da verossimilhança dos dados.

A distribuição posterior é proporcional ao produto da distribuição priori e da verossimilhança dos dados.

Em termos matemáticos, isso pode ser expresso da seguinte forma:

  • $P(θ|X)$ = $\frac{(P(X|θ)P(θ))}{P(X)}$

onde:

  • $P(θ|X)$ é a distribuição posterior do parâmetro θ dado os dados X
  • $P(X|θ)$ é a verossimilhança dos dados X dado o parâmetro θ
  • $P(θ)$ é a distribuição priori do parâmetro θ
  • $P(X)$ é a probabilidade dos dados X

A distribuição posterior fornece uma estimativa atualizada da incerteza sobre o parâmetro desconhecido, levando em consideração tanto as informações prévias quanto as evidências dos dados observados.

Essa distribuição posterior pode ser usada para fazer inferências sobre o parâmetro, como estimativas pontuais, intervalos de confiança e previsões.

Uma das vantagens da estatística bayesiana é a flexibilidade para incorporar informações prévias e atualizá-las à medida que mais dados são coletados.

Além disso, a abordagem bayesiana permite a inclusão de informações subjetivas, tornando-se útil em situações em que o conhecimento especializado é relevante.

No entanto, a estatística bayesiana também apresenta desafios.

A escolha da distribuição priori pode ser um desafio em si, pois ela influencia fortemente a distribuição posterior resultante.

Além disso, a estimação da distribuição posterior pode exigir cálculos complexos, especialmente para modelos estatísticos mais complicados.

No geral, a estatística bayesiana é uma abordagem poderosa que permite atualizar as estimativas e fazer inferências sobre parâmetros desconhecidos com base em informações prévias e evidências dos dados observados.

Ela encontra aplicação em diversas áreas, incluindo medicina, ciências sociais, finanças e ciência de dados.

3.1 - Computação Bayesiana na Ciência da Estatística

Na Ciência da Estatística, as computações de decisões bayesianas são aplicadas para tomada de decisões fundamentadas e informadas com base em modelos estatísticos e dados observados.

Alguns métodos comuns de computação de decisões bayesianas utilizados na ciência da estatística incluem:

  • Cálculo de estimativas bayesianas: a teoria bayesiana permite calcular estimativas a posteriori para os parâmetros desconhecidos de um modelo estatístico. Essas estimativas incorporam tanto as informações a priori quanto as evidências observadas. Métodos como a Máxima Verossimilhança Bayesiana (Bayesian Maximum Likelihood, BML) e as Cadeias de Markov Monte Carlo (Markov Chain Monte Carlo, MCMC) são frequentemente empregados nesse contexto.
  • Cálculo de intervalos de credibilidade: ao invés de calcular estimativas pontuais para os parâmetros, a teoria bayesiana permite calcular intervalos de credibilidade, que são intervalos que contêm uma certa porcentagem da distribuição a posteriori dos parâmetros. Esses intervalos fornecem uma medida de incerteza e são mais flexíveis do que os intervalos de confiança frequentistas.
  • Testes de hipóteses bayesianos: os testes de hipóteses bayesianos permitem a comparação entre diferentes hipóteses e determinar qual delas é mais suportada pelos dados. Em vez de usar valores p como na abordagem frequentista, a evidência a favor de uma hipótese é expressa em termos de fatores de Bayes, que comparam a probabilidade posterior das hipóteses concorrentes.
  • Modelagem de incertezas: a abordagem bayesiana permite modelar e quantificar incertezas em todas as etapas da análise estatística. Além da incerteza nos parâmetros do modelo, é possível modelar incertezas adicionais, como incertezas de medição, incertezas na escolha do modelo e incertezas nos dados ausentes. Isso é particularmente útil em análises de dados complexos e quando há informações prévias relevantes disponíveis.
  • Previsão e tomada de decisões: a teoria de decisão bayesiana é aplicada para tomar decisões ótimas com base nas distribuições a posteriori dos parâmetros. Isso inclui a seleção de ações, a alocação de recursos, a determinação de limites de decisão e outras questões relacionadas à tomada de decisões em face de incertezas.

Em resumo, as computações de decisões bayesianas na ciência da estatística envolvem o uso de métodos estatísticos bayesianos para calcular estimativas, intervalos de credibilidade, realizar testes de hipóteses, modelar incertezas e tomar decisões informadas. Essas técnicas são amplamente utilizadas para análise de dados, inferência estatística e tomada de decisões em uma variedade de campos, desde pesquisas científicas até análise de dados empresariais.

3.2 - Exemplos

A seguir são apresentados exemplos usando a biblioteca pymc3 para:

  • Cálculo de estimativas bayesianas
  • Cálculo de intervalos de credibilidade
  • Testes de hipóteses bayesianos
  • Modelagem de incertezas
  • Previsão e tomada de decisões

Para instalar o PyMC3, você pode usar o gerenciador de pacotes pip:

pip install pymc3

3.2.1 - Cálculo de estimativas bayesianas

Neste exemplo, estamos interessados em estimar a probabilidade p de um evento ocorrer, dado um conjunto de dados observados dados_observados.

Usamos uma distribuição Beta como priori sobre p e uma verossimilhança binomial para modelar os dados observados.

Em seguida, realizamos amostragem da distribuição a posteriori usando o algoritmo de Monte Carlo Markov Chain (MCMC) implementado no PyMC3.

O número de amostras e a fase de ajuste (tune) podem ser ajustados de acordo com a complexidade do modelo e a precisão desejada.

Por fim, utilizamos a função pm.summary() para gerar um resumo estatístico das estimativas, incluindo a média, desvio padrão, intervalos de credibilidade, entre outros.

import pymc3 as pm
import numpy as np

# Dados observados
dados_observados = np.array([1, 0, 1, 1, 0, 1])

# Modelo bayesiano
with pm.Model() as modelo:
    # Priori sobre a probabilidade
    p = pm.Beta('p', alpha=1, beta=1)
    #
    # Verossimilhança binomial
    verossimilhanca = pm.Bernoulli('verossimilhanca', p=p, observed=dados_observados)
    #
    # Amostragem da distribuição posterior usando MCMC
    trace = pm.sample(1000, tune=1000)

Resultado:

# Resumo das estimativas
print(pm.summary(trace))
    mean     sd  hdi_3%  hdi_97%  mcse_mean  mcse_sd  ess_bulk  ess_tail   r_hat    
p  0.628  0.162   0.328    0.903      0.004    0.003    1846.0    2409.0     1.0    

Quando você obtém um resumo (summary) de um modelo no PyMC3, é comum encontrar vários campos de parâmetros p, incluindo "mean" (média), "sd" (desvio padrão), "hdi_3%" e "hdi_97%" (intervalos de credibilidade de 3% e 97%), "mcse_mean" (erro padrão da média), "mcse_sd" (erro padrão do desvio padrão), "ess_bulk" (essência em massa) e "ess_tail" (essência da cauda), além do "r_hat" (R-hat).

Esses campos fornecem informações úteis sobre os parâmetros inferidos pelo modelo de inferência bayesiana.

Descrição dos campos:

  • "mean" (média): é a estimativa da média do parâmetro em questão. Representa o valor médio esperado para o parâmetro, dado o modelo e os dados observados.
  • "sd" (desvio padrão): indica a incerteza ou a dispersão em torno da média. Quanto maior o desvio padrão, maior a incerteza associada ao parâmetro.
  • "hdi_3%" e "hdi_97%" (intervalos de credibilidade de 3% e 97%): esses intervalos representam os limites inferior e superior do intervalo de credibilidade. Eles são calculados de forma a incluir uma determinada porcentagem da distribuição posterior do parâmetro. Por exemplo, o intervalo de credibilidade de 94% é dado pelos limites "hdi_3%" e "hdi_97%".
  • "mcse_mean" (erro padrão da média) e "mcse_sd" (erro padrão do desvio padrão): são estimativas do erro padrão da média e do desvio padrão, respectivamente. Eles medem a incerteza na estimação dos parâmetros.
  • "ess_bulk" (essência em massa) e "ess_tail" (essência da cauda): são medidas da eficiência amostral do modelo. Essas quantidades indicam o número efetivo de amostras independentes disponíveis para inferência para a parte central da distribuição (essência em massa) e para a cauda da distribuição (essência da cauda). Valores mais altos são desejáveis, indicando uma melhor amostragem.
  • "r_hat" (R-hat): é uma medida de convergência do algoritmo de amostragem de Markov Chain Monte Carlo (MCMC). O valor R-hat próximo a 1 (geralmente abaixo de 1,1) indica que as cadeias de Markov convergiram e forneceram uma estimativa confiável da distribuição posterior. Valores maiores podem indicar problemas de convergência.

Esses campos são úteis para avaliar a qualidade do ajuste do modelo, a precisão das estimativas dos parâmetros e a convergência das cadeias de Markov utilizadas pelo algoritmo MCMC.

É importante lembrar que esse é apenas um exemplo básico de cálculo de estimativas bayesianas.

Dependendo do problema em questão, podem ser necessárias considerações adicionais, como escolha de prioris mais informativas, modelagem de efeitos aleatórios, entre outros.

3.2.2 - Cálculo de intervalos de credibilidade

Neste exemplo, estamos estimando a probabilidade p de um evento ocorrer, com base em um conjunto de dados observados dados_observados.

Utilizamos uma distribuição Beta como priori e uma verossimilhança binomial para modelar os dados observados.

Após a amostragem da distribuição a posteriori usando MCMC, utilizamos a função pm.stats.hdi() do PyMC3 para calcular o intervalo de credibilidade.

O parâmetro alpha define o nível de credibilidade desejado (nesse caso, 0.05, correspondendo a um intervalo de 95% de credibilidade)

O resultado é um intervalo de valores que contém a probabilidade p com o nível de credibilidade especificado.

import pymc3 as pm
import numpy as np

# Dados observados
dados_observados = np.array([1, 0, 1, 1, 0, 1])

# Modelo bayesiano
with pm.Model() as modelo:
    # Priori sobre a probabilidade
    p = pm.Beta('p', alpha=1, beta=1)
    #
    # Verossimilhança binomial
    verossimilhanca = pm.Bernoulli('verossimilhanca', p=p, observed=dados_observados)
    #
    # Amostragem da distribuição posterior usando MCMC
    trace = pm.sample(1000, tune=1000)
intervalo_credibilidade = pm.stats.hdi(trace['p'], alpha=0.05)

Resultado:

# Cálculo dos intervalos de credibilidade
print("Intervalo de Credibilidade: ", intervalo_credibilidade)
Intervalo de Credibilidade: [0.32843014 0.90319928]

Observe que o exemplo é similar ao exemplo anterior de cálculo de estimativas bayesianas, mas a diferença é que agora estamos calculando um intervalo de credibilidade ao invés de uma estimativa pontual.

3.2.3 - Testes de hipóteses bayesianos

Neste exemplo, estamos realizando um teste de hipóteses bayesianos para comparar as médias de duas populações representadas pelos conjuntos de dados grupo_dados_1 e grupo_dados_2.

Estamos interessados em testar a hipótese nula de que as médias são iguais versus a hipótese alternativa de que as médias são diferentes.

Utilizamos distribuições normais como priori para as médias das duas populações e uma verossimilhança normal para modelar os dados observados

A diferença entre as médias é calculada como uma variável determinística.

Após a amostragem da distribuição a posteriori usando MCMC, calculamos o valor-p.

Neste exemplo, o valor-p é a proporção de amostras em que a diferença entre as médias é maior que zero.

O valor-p nos dá uma medida da evidência em favor da hipótese alternativa.

import pymc3 as pm
import numpy as np

# Dados observados
grupo_dados_1 = np.array([2, 3, 4, 3, 2, 4])
grupo_dados_2 = np.array([5, 6, 7, 6, 5, 7])

# Modelo bayesiano
with pm.Model() as model:
    # Priori sobre as médias das duas populações
    mu1 = pm.Normal('mu1', mu=0, sd=10)
    mu2 = pm.Normal('mu2', mu=0, sd=10)
    
    # Verossimilhança normal
    verossimilhanca_1 = pm.Normal('verossimilhanca_1', mu=mu1, sd=1, observed=grupo_dados_1)
    verossimilhanca_2 = pm.Normal('verossimilhanca_2', mu=mu2, sd=1, observed=grupo_dados_2)
    
    # Diferença entre as médias
    dif_medias = pm.Deterministic('dif_medias', mu1 - mu2)
    
    # Amostragem da distribuição posterior usando MCMC
    trace = pm.sample(1000, tune=1000)

Resultado:

# Teste de hipóteses
p_value = (trace['dif_medias'] > 0).mean()
print("Valor-p: ", p_value)
Valor-p:  0.0

É importante ressaltar que a interpretação dos resultados em testes de hipóteses bayesianos difere um pouco da abordagem frequentista.

No caso bayesiano, não fazemos uma decisão binária (aceitar ou rejeitar a hipótese nula), mas sim avaliamos a evidência em favor de cada hipótese com base na distribuição a posteriori.

3.2.4 - Modelagem de incertezas

Neste exemplo, estamos realizando a modelagem de incertezas em um modelo de regressão linear simples.

Temos um conjunto de dados observados x e y, onde y é uma função linear de x com ruído adicional.

Utilizamos distribuições normais como prioris para os parâmetros intercepto e inclinacao do modelo linear.

A verossimilhança é modelada como uma distribuição normal com média igual à soma do intercepto e da inclinação, multiplicada por x, e desvio padrão igual a 1.

Após a amostragem da distribuição a posteriori usando MCMC, obtemos amostras dos parâmetros intercepto e inclinacao.

Em seguida, podemos visualizar as incertezas modeladas, plotando várias linhas de regressão geradas a partir das amostras dos parâmetros.

import pymc3 as pm
import numpy as np
import matplotlib.pyplot as plt

# Dados observados
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 6, 8, 10]) + np.random.normal(0, 1, 5)

# Modelo bayesiano
with pm.Model() as model:
    # Priori sobre os parâmetros
    intercepto = pm.Normal('intercepto', mu=0, sd=10)
    inclinacao = pm.Normal('inclinacao', mu=0, sd=10)
    
    # Verossimilhança linear
    verossimilhanca = pm.Normal('verossimilhanca', mu=intercepto + inclinacao * x, sd=1, observed=y)
    
    # Amostragem da distribuição posterior usando MCMC
    trace = pm.sample(1000, tune=1000)

# Amostras dos parâmetros
samples_intercept = trace['intercepto']
samples_slope = trace['inclinacao']

# Plot dos resultados
plt.scatter(x, y, label='Dados Observados')
for i in range(100):
    plt.plot(x, samples_intercept[i] + samples_slope[i] * x, color='gray', alpha=0.1)
plt.xlabel('x')
plt.ylabel('y')
plt.title('Modelagem de Incertezas')
plt.legend()
plt.show()

Resultado:

O gráfico resultante mostra os dados observados (pontos) juntamente com várias linhas de regressão (linhas cinzas) que representam a incerteza nas estimativas dos parâmetros.

Essa abordagem permite visualizar a variabilidade nas estimativas e a incerteza associada ao modelo.

3.2.5 - Previsão e tomada de decisões

Neste exemplo, estamos realizando a previsão e tomada de decisões usando um modelo de regressão linear simples.

Temos um conjunto de dados observados x e y, onde y é uma função linear de x com ruído adicional.

Após a construção do modelo bayesiano e a amostragem da distribuição a posteriori usando MCMC, realizamos a previsão para novos dados representados por novo_x.

Utilizamos a distribuição normal para modelar a verossimilhança dos dados previstos, com os parâmetros intercepto e inclinacao obtidos a partir do modelo.

Em seguida, realizamos amostragem da distribuição posterior preditiva usando a função pm.sample_posterior_predictive() do PyMC3.

Isso nos fornece amostras dos dados previstos, permitindo calcular medidas estatísticas, como a média e intervalos de credibilidade.

import pymc3 as pm
import numpy as np
import matplotlib.pyplot as plt

# Dados observados
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 6, 8, 10]) + np.random.normal(0, 1, 5)

# Modelo bayesiano
with pm.Model() as model:
    # Priori sobre os parâmetros
    intercepto = pm.Normal('intercepto', mu=0, sd=10)
    inclinacao = pm.Normal('inclinacao', mu=0, sd=10)
    
    # Verossimilhança linear
    verossimilhanca = pm.Normal('verossimilhanca', mu=intercepto + inclinacao * x, sd=1, observed=y)
    
    # Amostragem da distribuição posterior usando MCMC
    trace = pm.sample(1000, tune=1000)

# Previsão e tomada de decisões
novo_x = np.array([6, 7, 8])
with model:
    # Previsão para novos dados
    y_pred = pm.Normal('y_pred', mu=intercepto + inclinacao * novo_x, sd=1, shape=len(novo_x))
    
    # Amostragem da distribuição posterior preditiva
    trace_pred = pm.sample_posterior_predictive(trace, var_names=['y_pred'], samples=500)

# Plot dos resultados
plt.scatter(x, y, label='Dados Observados')
plt.plot(novo_x, np.mean(trace_pred['y_pred'], axis=0), color='red', label='Previsão Média')
plt.fill_between(novo_x, np.percentile(trace_pred['y_pred'], 5, axis=0),
    np.percentile(trace_pred['y_pred'], 95, axis=0), color='gray',
    alpha=0.2, label='Intervalo de Credibilidade (90%)')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Previsão e Tomada de Decisões')
plt.legend()
plt.show()

Resultado:

O gráfico resultante mostra os dados observados (pontos), a previsão média (linha vermelha) e um intervalo de credibilidade de 90% (área cinza) para os novos dados previstos.

Essas informações ajudam na tomada de decisões ao avaliar a incerteza nas previsões e fornecer uma faixa de valores prováveis para os novos dados.

Arduino
Coautor
Betobyte
Autor
Autores
||| Áreas ||| Estatística ||| Python ||| Projetos ||| Dicas & Truques ||| Quantum ||| Bayes || Estatística Básica || Estatistica Avançada || Bayes || Aulas | Introdução (Introdução a uma das ferramentas fundamentais mais importantes da teoria das probabilidades, com aplicação em diversas áreas, incluindo estatística, inteligência artificial, aprendizado de máquina e ciência de dados.) | Decisão Bayesiana (Teoria de Decisão Bayesiana, probabilidade anterior e de verossimilhança, soma das probabilidades, evidências, aprendizado de Máquina e Teoria de Decisão Bayesiana, computação na Teoria da Decisão Bayesianas) | Estatistica Bayesiana (Abordagem estatística que se baseia no Teorema de Bayes para fazer inferências sobre parâmetros desconhecidos ou realizar previsões, levando em consideração a probabilidade de um evento ocorrer, da probabilidade de um evento ocorrer é atualizada à medida que novas evidências são coletadas.) | Inteligência Artificial (Papel significativo da estatística bayesiana na área de inteligência artificial (IA), fornecendo uma estrutura para a tomada de decisões probabilísticas e o aprendizado adaptativo dos sistemas.) |