Quale sarebbe un solido modello bayesiano per stimare la scala di una distribuzione approssimativamente normale?


32

Esistono numerosi stimatori di scala robusti . Un esempio notevole è la deviazione assoluta mediana che si riferisce alla deviazione standard come . In un quadro bayesiano esistono numerosi modi per stimare in modo robusto la posizione di una distribuzione approssimativamente normale (diciamo una Normale contaminata da valori anomali), ad esempio, si potrebbe supporre che i dati siano distribuiti alla distribuzione o alla distribuzione di Laplace. Ora la mia domanda:σ=MAD1.4826

Quale sarebbe un modello bayesiano per misurare la scala di una distribuzione approssimativamente normale in modo robusto, robusto nello stesso senso del MAD o di stimatori robusti simili?

Come nel caso di MAD, sarebbe corretto se il modello bayesiano potesse avvicinarsi alla DS di una distribuzione normale nel caso in cui la distribuzione dei dati sia effettivamente distribuita.

modifica 1:

Un esempio tipico di un modello robusto contro la contaminazione / i anomali quando si presume che i dati siano all'incirca normali sta usando alla distribuzione come:yi

yit(m,s,ν)

Dove è la media, è la scala e è il grado di libertà. Con opportune priori su e \ nu , m sarà una stima del mezzo di y_i che saranno robusti contro valori anomali. Tuttavia, s non sarà una stima coerente della SD di y_i poiché s dipende da \ nu . Ad esempio, se \ nu verrebbe fissato su 4.0 e il modello sopra sarebbe adattato a un numero enorme di campioni da una distribuzione \ mathrm {Norm} (\ mu = 0, \ sigma = 1), allora smsνm,sνmyisyisννNorm(μ=0,σ=1)ssarebbe circa 0,82. Quello che sto cercando è un modello che sia robusto, come il modello t, ma per la SD invece (o in aggiunta) la media.

modifica 2:

Segue un esempio codificato in R e JAGS di come il modello t sopra menzionato sia più robusto rispetto alla 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 

Forse non è abbastanza robusto, ma la distribuzione chi-quadrata è il coniugato solitamente scelto prima dell'inverso della varianza.
Mike Dunlavey,

Potresti voler vedere se la prima risposta a questa domanda stats.stackexchange.com/questions/6493/… è sufficiente per te; potrebbe non esserlo, ma forse lo è.
jbowman,

Qual è la tua priorità per il livello di contaminazione? La contaminazione sarà sistematica? Casuale? Sarà generato da una singola distribuzione o da più distribuzioni? Sappiamo qualcosa sulla (e) distribuzione (e) del rumore? Se almeno alcune delle cose di cui sopra sono note, allora potremmo inserire una sorta di modello di miscela. Altrimenti, non sono sicuro di quali siano le tue convinzioni su questo problema, e se non ne hai nessuna sembra un'ambientazione molto vaga. Devi correggere qualcosa, altrimenti puoi scegliere casualmente un punto e dichiararlo come l'unico punto generato gaussiano con.
significa significato

Ma in generale, potresti adattare una distribuzione t che è più resistente agli outlier o una combinazione di distribuzioni t. Sono sicuro che ci sono molti documenti, eccone uno di Bishop research.microsoft.com/en-us/um/people/cmbishop/downloads/… ed ecco un pacchetto R adatto alle miscele: maths.uq.edu. au / ~ gjm / mix_soft / EMMIX_R / EMMIX-manual.pdf
significato-significato

1
Il tuo è vero per una popolazione normalmente distribuita, ma non per la maggior parte delle altre distribuzioniσ=MAD1.4826
Henry,

Risposte:


10

L'inferenza bayesiana in un modello di rumore T con un precedente appropriato fornirà una solida stima della posizione e della scala. Le condizioni precise che la probabilità e il precedente devono soddisfare sono riportate nel documento Modello di robustezza bayesiana di parametri di posizione e scala di Andrade e O'Hagan (2011). Le stime sono solide nel senso che una singola osservazione non può rendere le stime arbitrariamente grandi, come dimostrato nella figura 2 del documento.

Quando i dati sono normalmente distribuiti, la SD della distribuzione T montata (per fixed ) non corrisponde alla SD della distribuzione generatrice. Ma questo è facile da risolvere. Let tramite la deviazione standard della distribuzione di generazione e sia tramite la deviazione standard della distribuzione T montato. Se i dati sono ridimensionati di 2, allora dalla forma della probabilità sappiamo che s deve ridimensionare di 2. Ciò implica che s = σ f ( ν ) per alcune funzioni fisse f . Questa funzione può essere calcolata numericamente mediante simulazione da una normale norma. Ecco il codice per fare questo:σ sνσsss=σf(ν)f

library(stats)
library(stats4)
y = rnorm(100000, mean=0,sd=1)
nu = 4
nLL = function(s) -sum(stats::dt(y/s,nu,log=TRUE)-log(s))
fit = mle(nLL, start=list(s=1), method="Brent", lower=0.5, upper=2)
# the variance of a standard T is nu/(nu-2)
print(coef(fit)*sqrt(nu/(nu-2)))

Ad esempio, a ottengo f ( ν ) = 1.18 . Lo stimatore desiderato è allora σ = s / f ( ν ) .ν=4f(ν)=1.18σ^=s/f(ν)


1
Bella risposta (+1). "nel senso che una singola osservazione non può rendere arbitrariamente grandi le stime", quindi il punto di rottura è 2 / n (me lo stavo chiedendo) .... Come punto di confronto, per la procedura illustrata nella mia risposta è n / 2.
user603

Wow grazie! Fuzzy domanda di follow-up. Avrebbe davvero senso "correggere" la scala in modo che sia coerente con la SD nel caso normale? Il caso d'uso a cui sto pensando è quando si segnala una misura di diffusione. Non avrei alcun problema con la scala dei rapporti, ma sarebbe bello segnalare qualcosa che sarebbe coerente con la DS in quanto è la misura di diffusione più comune (almeno in psicologia). Vedi una situazione in cui questa correzione porterebbe a stime strane e incoerenti?
Rasmus Bååth,

6

Mentre stai ponendo una domanda su un problema molto preciso (stima attendibile), ti offrirò una risposta altrettanto precisa. In primo luogo, tuttavia, inizierò a cercare di dissipare un'ipotesi ingiustificata. Non è vero che esiste una solida stima bayesiana della posizione (ci sono stimatori bayesiani delle posizioni, ma come illustrerò di seguito non sono robusti e, apparentemente , anche il più semplice stimatore robusto della posizione non è bayesiano). A mio avviso, le ragioni dell'assenza di sovrapposizioni tra il paradigma "bayesiano" e "robusto" nel caso della posizione spiegano ampiamente perché non vi sono anche stimatori della dispersione che siano sia robusti che bayesiani.

Con opportune priori su e ν , m sarà una stima della media di y i che saranno robusti contro valori anomali.m,sνmyi

In realtà no. Le stime risultanti saranno solide solo in un senso molto debole della parola robusto. Tuttavia, quando diciamo che la mediana è robusta per gli outlier intendiamo la parola robusta in un senso molto più forte. Cioè, in statistiche solide, la robustezza della mediana si riferisce alla proprietà che se si calcola la mediana su una serie di dati di osservazioni tratte da un modello continuo uni-modale e quindi si sostituisce meno della metà di queste osservazioni con valori arbitrari , il valore della mediana calcolata sui dati contaminati è vicino al valore che avresti avuto se lo avessi calcolato sul set di dati originale (non contaminato). Quindi, è facile dimostrare che la strategia di stima che proponi nel paragrafo che ho citato sopra non lo è robusto nel senso di come la parola è generalmente intesa per la mediana.

Non ho familiarità con l'analisi bayesiana. Tuttavia, mi chiedevo cosa c'è di sbagliato nella seguente strategia in quanto sembra semplice, efficace e tuttavia non è stato preso in considerazione nelle altre risposte. Il precedente è che la buona parte dei dati è tratta da una distribuzione simmetrica e che il tasso di contaminazione è inferiore alla metà. Quindi, una semplice strategia sarebbe quella di:F

  1. calcola la mediana / folle del tuo set di dati. Quindi calcola:
    zi=|ximed(x)|mad(x)
  2. escludere le osservazioni per le quali (questo è il quantile α della distribuzione di z quando x F ). Questa quantità è disponibile per molte scelte di F e può essere avviata per gli altri.zi>qα(z|xF)αzxFF
  3. Esegui un'analisi bayesiana (normale, non solida) sulle osservazioni non respinte.

MODIFICARE:

Grazie all'OP per aver fornito un codice R autonomo per condurre un'analisi bayesiana del problema.

il codice seguente confronta l'approccio bayesiano suggerito dal PO con la sua alternativa dalla robusta letteratura statistica (ad esempio il metodo di adattamento proposto da Gauss nel caso in cui i dati possano contenere fino a valori anomali e la distribuzione dei buona parte dei dati è gaussiana).n/22

la parte centrale dei dati è :N(1000,1)

n<-100
set.seed(123)
y<-rnorm(n,1000,1)

Aggiungi una certa quantità di contaminanti:

y[1:30]<-y[1:30]/100-1000 
w<-rep(0,n)
w[1:30]<-1

l'indice w assume il valore 1 per i valori anomali. Comincio con l'approccio suggerito dal PO:

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)
print(summary(mcmc_samples)$statistics[1:2])
summary(mcmc_samples)

Ottengo:

     Mean        SD 
384.2283  97.0445 

e:

2. Quantiles for each variable:

 2.5%   25%   50%   75% 97.5% 
184.6 324.3 384.7 448.4 577.7 

(tranquillo lontano quindi dai valori target)

Per il metodo robusto,

z<-abs(y-median(y))/mad(y)
th<-max(abs(rnorm(length(y))))
print(c(mean(y[which(z<=th)]),sd(y[which(z<=th)])))

si ottiene:

 1000.149 0.8827613

(molto vicino ai valori target)

Il secondo risultato è molto più vicino ai valori reali. Ma peggiora. Se classifichiamo come anomali le osservazioni per le quali il punteggio stimato è maggiore di (ricordate che il precedente è che F è gaussiano), l'approccio bayesiano rileva che tutte le osservazioni sono anomale (la solida procedura, al contrario, contrassegna tutto e solo i valori anomali in quanto tali). Ciò implica anche che se si dovesse eseguire un'analisi bayesiana abituale (non robusta) sui dati non classificati come anomali dalla procedura robusta, si dovrebbe fare bene (ad esempio soddisfare gli obiettivi indicati nella domanda).zthF
Questo è solo un esempio, ma in realtà è abbastanza semplice dimostrare che (e può essere fatto formalmente, vedi ad esempio nel capitolo 2 di [1]) i parametri di una distribuzione di uno studente adattata a dati contaminati non possono dipendere da rivelare i valori anomali. t

  • [1] Ricardo A. Maronna, Douglas R. Martin, Victor J. Yohai (2006). Statistica solida: teoria e metodi (serie di Wiley in probabilità e statistica).
  • Huber, PJ (1981). Statistiche affidabili. New York: John Wiley and Sons.

1
Bene, la t viene spesso proposta come valida alternativa alla normale distribuzione. Non so se questo sia nel senso debole o no. Vedi ad esempio: Lange, KL, Little, RJ e Taylor, JM (1989). Modellazione statistica robusta utilizzando la distribuzione t. Journal of American Statistical Association , 84 (408), 881-896. pdf
Rasmus Bååth,

1
Questo è il senso debole. Se hai un codice R che implementa la procedura che suggerisci, sarò felice di illustrare la mia risposta con un esempio. altrimenti è possibile ottenere ulteriori spiegazioni nel capitolo 2 di questo manuale.
user603

La procedura che suggerisco è sostanzialmente descritta qui: indiana.edu/~kruschke/BEST incluso il codice R. Dovrò pensare alla tua soluzione! Tuttavia, non sembra bayesiano nel senso che non modella tutti i dati, ma solo il sottoinsieme che "sopravvive" al passaggio 2.
Rasmus Bååth


1
Ora l'ho fatto!
Rasmus Bååth,

1

Nell'analisi bayesiana usare la distribuzione gamma inversa come un precedente per la precisione (l'inverso della varianza) è una scelta comune. O la distribuzione inversa di Wishart per modelli multivariati. L'aggiunta di un precedente alla varianza migliora la robustezza contro i valori anomali.

C'è un bel documento di Andrew Gelman: "Precedenti distribuzioni per parametri di varianza in modelli gerarchici" in cui discute quali buone scelte per i priori possano essere sulle varianze.


4
Mi dispiace ma non riesco a vedere come questo risponde alla domanda. Non ho chiesto un precedente solido, ma piuttosto un modello robusto .
Rasmus Bååth,

0

μNσ2μtN

σD

D|μ,σN(μ,σ2)
D(d1,,dN)
p(D|μ,σ2)=1(2πσ)Nexp(N2σ2((mμ2)+s2))
ms2
m=1Ni=1Ndis2=1Ni=1Ndi2m2
p(μ,σ2|D)p(D|μ,σ2)p(μ,σ2)
(μ,σ2)p(μ,σ2|D)p(σ2|D)
σ2|DIG(α+N/2,2β+Ns2)α,β>0
σ2αβtμ

1
σ2

1
Tutto dipende da cosa intendi per robusto. Quello che stai dicendo in questo momento è che vorresti che i dati fossero robusti. Quello che stavo proponendo era la robustezza rispetto alle specifiche errate del modello. Sono entrambi diversi tipi di robustezza.
yannick,

2
Direi che gli esempi che ho fornito, MAD e l' utilizzo alla distribuzione come distribuzione per i dati sono esempi di solidità rispetto ai dati.
Rasmus Bååth,

Direi che Rasmus ha ragione, così come Gelman in BDA3, così come una comprensione di base che la distribuzione ha code più grosse rispetto alla normale per lo stesso parametro di posizione
Brash Equilibrium,

0

Ho seguito la discussione dalla domanda originale. Rasmus quando dici robustezza, sono sicuro che intendi nei dati (valori anomali, non mancate specifiche delle distribuzioni). Prenderò la distribuzione dei dati come distribuzione di Laplace anziché una distribuzione t, quindi come nella regressione normale in cui modelliamo la media, qui modelleremo la regressione mediana (molto robusta) o mediana (lo sappiamo tutti). Lascia che il modello sia:

Y=βX+ε, ε ha laplace(0,σ2).

Ovviamente il nostro obiettivo è stimare i parametri del modello. Ci aspettiamo che i nostri priori siano vaghi e abbiano un modello oggettivo. Il modello a portata di mano ha un posteriore della formaf(β,σ,Y,X). Dandoβun precedente normale con una grande varianza rende un precedente così vago e un precedente di forma quadrata con piccoli gradi di libertà per imitare un precedente di jeffrey (vago precedente) è dato aσ2. Con un campionatore Gibbs cosa succede? normale precedente + laplace likehood = ???? lo sappiamo. Anche chi-quadrato precedente + verosimiglianza sul posto = ??? non conosciamo la distribuzione. Fortunatamente per noi esiste un teorema in (Aslan, 2010) che trasforma una probabilità laplace in una miscela su scala di distribuzioni normali che ci permettono quindi di godere delle proprietà coniugate dei nostri priori. Penso che l'intero processo descritto sia pienamente solido in termini di valori anomali. In un'ambientazione multivariata chi-square diventa una distribuzione wishart e usiamo laplace multivariata e distribuzioni normali.


2
La tua soluzione sembra focalizzata su una solida stima della posizione (media / mediana). La mia domanda riguardava piuttosto la stima della scala con la proprietà di coerenza rispetto al recupero della SD quando la distribuzione di generazione dei dati è effettivamente normale.
Rasmus Bååth,

Con una stima attendibile della posizione, la scala in funzione della posizione beneficia immediatamente della robustezza della posizione. Non esiste altro modo per rendere robusta la bilancia.
Chamberlain Foncha,

In ogni caso, devo dire che aspetto con impazienza di vedere come questo problema verrà affrontato soprattutto con una distribuzione normale, come hai sottolineato.
Chamberlain Foncha,

0

Supponi di avere K gruppi e vuoi modellare la distribuzione delle loro varianze campione, forse in relazione ad alcune covariate X. Cioè, supponiamo che i tuoi dati puntino al gruppoK1...K è Var(yK)[0,). La domanda qui è: "Che cos'è un modello robusto per la probabilità della varianza del campione?" Un modo per affrontarlo è modellare i dati trasformatiln[Var(yk)] as coming from a t distribution, which as you have already mentioned is a robust version of the normal distribution. If you don't feel like assuming that the transformed variance is approximately normal as n, then you could choose a probability distribution with positive real support that is known to have heavy tails compared to another distribution with the same location. For example, there is a recent answer to a question on Cross Validated about whether the lognormal or gamma distribution has heavier tails, and it turns out that the lognormal distribution does (thanks to @Glen_b for that contribution). In addition, you could explore the half-Cauchy family.

Similar reasoning applies if instead you are assigning a prior distribution over a scale parameter for a normal distribution. Tangentially, the lognormal and inverse-gamma distributions are not advisable if you want to form a boundary avoiding prior for the purposes of posterior mode approximation because they peak sharply if you parameterize them so that the mode is near zero. See BDA3 chapter 13 for discussion. So in addition to identifying a robust model in terms of tail thickness, keep in mind that kurtosis may matter to your inference, too.

I hope this helps you as much as your answer to one of my recent questions helped me.


1
My question was about the situation when you have one group and how to robustly estimate the scale of that group. In the case of outliers I don't believe the sample variance is considered robust.
Rasmus Bååth

If you have one group, and you are estimating its normal distribution, then your question applies to the form of the prior over its scale parameter. As my answer implies, you can use a t distribution over its log transformation or choose a fat tailed distribution with positive real support, being careful about other aspects of that distribution such as its kurtosis. Bottom line, if you wan a robust model for a scale parameter, use a t distribution over its log transform or some other fat tailed distribution.
Brash Equilibrium
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.