Il existe un certain nombre d' estimateurs d'échelle robustes . Un exemple notable est l’écart absolu médian qui se rapporte à l’écart type sous la forme . Dans un cadre bayésien, il existe un certain nombre de moyens pour estimer de manière fiable l' emplacement d'une distribution à peu près normale (disons une normale contaminée par des valeurs aberrantes), par exemple, on pourrait supposer que les données sont distribuées de la même manière que la distribution de Laplace. Maintenant ma question:
Que serait un modèle bayésien permettant de mesurer de manière robuste l’ échelle d’une distribution à peu près normale, robuste au même sens que le MAD ou des estimateurs robustes similaires?
Comme dans le cas de MAD, il serait judicieux que le modèle bayésien puisse approcher le SD d'une distribution normale dans le cas où la distribution des données est réellement distribuée.
éditer 1:
Un exemple typique de modèle qui résiste à la contamination / aux valeurs aberrantes en supposant que les données est à peu près normale utilise la distribution à la manière suivante:
Où est la moyenne, s l’échelle et \ nu le degré de liberté. Avec des a priori convenables sur m, s et \ nu , m sera une estimation de la moyenne de y_i qui sera robuste contre les valeurs aberrantes. Cependant, s ne sera pas une estimation cohérente du SD de y_i car s dépend de \ nu . Par exemple, si \ nu est fixé à 4.0 et que le modèle ci-dessus est ajusté à un très grand nombre d'échantillons d'une distribution \ mathrm {Norm} (\ mu = 0, \ sigma = 1), alors sserait autour de 0,82. Ce que je recherche, c’est un modèle robuste, comme le modèle t, mais pour le SD au lieu de (ou en plus) de la moyenne.
éditer 2:
Voici ci-dessous un exemple codé dans R et JAGS de la manière dont le modèle t mentionné ci-dessus est plus robuste par rapport à la moyenne.
# 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