Bir dizi sağlam tahmin edici vardır . Kayda değer bir örnek, olarak standart sapma ile ilgili olan medyan mutlak sapmadır . Bir Bayesian çerçevesinde , kabaca normal bir dağılımın konumunu (örneğin, aykırıklar tarafından kontamine olmuş bir Normal)) sağlam bir şekilde tahmin etmenin çeşitli yolları vardır; Şimdi benim sorum:
Kabaca normal bir dağılımın ölçeğini sağlam bir şekilde ölçmek için bir Bayesian modeli , MAD veya benzer sağlam tahmin ediciler ile aynı anlamda sağlam olacaktır.
MAD'de olduğu gibi, Bayesian modelinin normalde veri dağılımının normalde dağıtıldığı durumlarda SD'ye yaklaşıp ulaşamayacağı iyi olacaktır.
düzenleme 1:
Veri varsayılarak kontaminasyon / aşın karşı sağlam bir modeli tipik bir örneği olan kabaca normal gibi dağılımına kullanıyor:
Burada ortalamasıdır, ölçektir ve derecesi serbestlik olup. Üzerinde uygun olaya karışan ve , ortalama bir tahmin olacak aykırı karşı sağlam olacaktır. Ancak, SD tutarlı bir tahmin olmayacaktır olarak bağlıdır . Örneğin, 4.0 sabitlenir ve olacak bir örneklerin çok sayıda takılabilir olur yukarıdaki model dağılımı, daha sonra 0,82 civarında olurdu. Aradığım şey, t modeli gibi sağlam ancak ortalama yerine (veya ek olarak) SD için olan bir model.
düzenleme 2:
Yukarıda R ve JAGS’ta yukarıda belirtilen t modelinin ortalamaya göre nasıl daha sağlam olduğuna dair kodlanmış bir örnek var.
# 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