Existe um número de estimadores robustos de escala . Um exemplo notável é o desvio absoluto mediana que se relaciona com o desvio padrão como . Em uma estrutura bayesiana, existem várias maneiras de estimar com robustez a localização de uma distribuição aproximadamente normal (por exemplo, um Normal contaminado por outliers); por exemplo, pode-se supor que os dados sejam distribuídos na distribuição ou na distribuição de Laplace. Agora minha pergunta:
O que seria um modelo bayesiano para medir a escala de uma distribuição aproximadamente normal de uma maneira robusta, robusta no mesmo sentido que o MAD ou estimadores robustos similares?
Como é o caso do MAD, seria interessante se o modelo bayesiano pudesse abordar o DP de uma distribuição normal no caso em que a distribuição dos dados realmente é normalmente distribuída.
editar 1:
Um exemplo típico de um modelo que é robusto contra contaminação / outliers ao assumir que os dados são aproximadamente normais está usando na distribuição como:
Onde é a média, é a escala e é o grau de liberdade. Com antecedentes adequados em e , será uma estimativa da média de que vai ser robusta contra os outliers. No entanto, não será uma estimativa consistente do DP de pois depende de . Por exemplo, se fosse fixado em 4,0 e o modelo acima fosse ajustado a um grande número de amostras de uma distribuição entãoseria em torno de 0,82. O que estou procurando é um modelo robusto, como o modelo t, mas para o SD em vez de (ou além) da média.
editar 2:
Segue um exemplo codificado em R e JAGS de como o modelo t mencionado acima é mais robusto em relação à média.
# generating some contaminated data
y <- c( rnorm(100, mean=10, sd=10),
rnorm(10, mean=100, sd= 100))
#### A "standard" normal model ####
model_string <- "model{
for(i in 1:length(y)) {
y[i] ~ dnorm(mu, inv_sigma2)
}
mu ~ dnorm(0, 0.00001)
inv_sigma2 ~ dgamma(0.0001, 0.0001)
sigma <- 1 / sqrt(inv_sigma2)
}"
model <- jags.model(textConnection(model_string), list(y = y))
mcmc_samples <- coda.samples(model, "mu", n.iter=10000)
summary(mcmc_samples)
### The quantiles of the posterior of mu
## 2.5% 25% 50% 75% 97.5%
## 9.8 14.3 16.8 19.2 24.1
#### A (more) robust t-model ####
library(rjags)
model_string <- "model{
for(i in 1:length(y)) {
y[i] ~ dt(mu, inv_s2, nu)
}
mu ~ dnorm(0, 0.00001)
inv_s2 ~ dgamma(0.0001,0.0001)
s <- 1 / sqrt(inv_s2)
nu ~ dexp(1/30)
}"
model <- jags.model(textConnection(model_string), list(y = y))
mcmc_samples <- coda.samples(model, "mu", n.iter=1000)
summary(mcmc_samples)
### The quantiles of the posterior of mu
## 2.5% 25% 50% 75% 97.5%
##8.03 9.35 9.99 10.71 12.14