Existe una serie de estimadores robustos de escala. Un ejemplo notable es la mediana de la desviación absoluta que se refiere a la desviación estándar como σ=MAD⋅1.4826. En un marco Bayesiano existen un número de maneras de firmeza a la estimación de la ubicación de aproximadamente una distribución normal (digamos Normal contaminados por los valores atípicos), por ejemplo, se podría suponer que los datos se distribuye como una t de la distribución o distribución de Laplace. Ahora mi pregunta:
¿Qué sería de un modelo Bayesiano para la medición de la escala de aproximadamente una distribución normal en una forma robusta de ser, robusto en el mismo sentido como el LOCO o similar estimadores robustos?
Como es el caso de la LOCA, que sería genial si el modelo Bayesiano podría acercarse a la SD de una distribución normal, en el caso de la distribución de los datos está normalmente distribuida.
edit 1:
Un ejemplo típico de un modelo que es robusto contra la contaminación/valores atípicos cuando asumiendo que los datos yi es aproximadamente normal es el uso de una distribución t como:
yi∼t(m,s,ν)
Donde m es decir, s es la escala, y ν es el grado de libertad. Con adecuado de los priores en m,s y ν, m será una estimación de la media de yi que va a ser robusto frente a los valores atípicos. Sin embargo, s no será una estimación consistente de la SD de yi s depende de ν. Por ejemplo, si ν sería fijo a 4.0 y el modelo de arriba podría ser instalado en un gran número de muestras de un Norm(μ=0,σ=1) de distribución, a continuación, s sería de alrededor de 0.82. Lo que estoy buscando es un modelo robusto, como el modelo t, pero para la SD en lugar de (o además de) de la media.
edit 2:
Aquí sigue un código de ejemplo en R y PUNTAS de cómo el t-modelo mencionado anteriormente es más robusto con respecto a la media.
# 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