Es gibt eine Reihe robuster Skalenschätzer . Ein bemerkenswertes Beispiel ist die mittlere absolute Abweichung, die sich auf die Standardabweichung als . In einem Bayes'schen Framework gibt es eine Reihe von Möglichkeiten, den Ort einer ungefähren Normalverteilung (z. B. einer durch Ausreißer kontaminierten Normalverteilung) zuverlässig abzuschätzen. Man könnte beispielsweise annehmen, dass die Daten wie bei der Verteilung oder Laplace-Verteilung verteilt sind. Nun meine Frage:
Was wäre ein Bayes'sches Modell zur robusten Messung des Maßstabs einer ungefähren Normalverteilung, robust im gleichen Sinne wie der MAD oder ähnliche robuste Schätzer?
Wie bei MAD wäre es in Ordnung, wenn sich das Bayes'sche Modell der SD einer Normalverteilung annähern könnte, wenn die Verteilung der Daten tatsächlich normalverteilt ist.
edit 1:
Ein typisches Beispiel für ein Modell, das robust gegenüber Kontamination / Ausreißern ist, wenn angenommen wird, dass die Daten in etwa normal sind, ist die Verwendung bei der Verteilung wie folgt:
Dabei ist der Mittelwert, die Skala und der Freiheitsgrad. Mit geeigneten Prioritäten für und ist eine Schätzung des Mittelwerts von , der gegenüber Ausreißern robust ist. Allerdings nicht eine konsistente Schätzung der SD sein als abhängt . Wenn zum Beispiel auf 4.0 festgelegt und das obige Modell an eine große Anzahl von Stichproben aus einer \ mathrm {Norm} -Verteilung (\ mu = 0, \ sigma = 1) angepasst würde, dann swäre um 0,82. Was ich suche, ist ein Modell, das robust ist, wie das t-Modell, aber für den SD anstelle (oder zusätzlich zu) dem Mittelwert.
2 bearbeiten:
Hier folgt ein codiertes Beispiel in R und JAGS, wie das oben erwähnte t-Modell in Bezug auf den Mittelwert robuster ist.
# 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