Semplice esempio che mostra i vantaggi della Bayesian Model Averaging (BMA)


12

Sto incorporando un approccio Bayesian Model Averaging (BMA) nella mia ricerca e presto presenterò una presentazione del mio lavoro ai miei colleghi. Tuttavia, la BMA non è poi così ben nota nel mio campo, quindi dopo aver presentato loro tutta la teoria e prima di applicarla effettivamente al mio problema, voglio presentare un esempio semplice ma istruttivo sul perché la BMA funzioni.

Stavo pensando a un semplice esempio con due modelli tra cui scegliere, ma il vero modello di generazione dei dati (DGM) è da qualche parte nel mezzo e l'evidenza non favorisce davvero nessuno di essi. Quindi, se ne scegli uno e continui da loro in poi, ignoreresti l'incertezza del modello e commetterei un errore, ma BMA, sebbene il modello vero non faccia parte del set di modelli, almeno dia la densità posteriore corretta del parametro di interesse. Ad esempio, ci sono due previsioni meteorologiche ogni giorno (A e B) e una vuole predire il tempo migliore, quindi nelle statistiche classiche proveresti prima a trovare il miglior meteorologo tra i due, ma se la verità fosse da qualche parte nel mezzo (cioè a volte A ha ragione, a volte B). Ma non potevo formalizzarlo. Qualcosa del genere, ma sono molto aperto alle idee. Spero che questa domanda sia abbastanza specifica!

In letteratura, non ho trovato esempi interessanti di ciò che ho letto finora:

  • Kruschke (2011) , sebbene un'ottima introduzione alle statistiche bayesiane, non si concentri davvero sulla BMA e l'esempio del lancio di monete che ha nel capitolo 4 è ottimo per introdurre le statistiche bayesiane, ma non convince davvero un collega ricercatore a usare la BMA. ("Perché ho di nuovo tre modelli, uno che dice che la moneta è giusta e due che dice che è distorto in entrambe le direzioni?")
  • Tutte le altre cose che ho letto ( Koop 2003 , Koop / Poirier / Tobias (2007) , Hoeting et al. (1999) e tonnellate di altre) sono grandi riferimenti, ma non ho trovato un semplice esempio di giocattolo in esse.

Ma forse ho appena perso una buona fonte qui.

Qualcuno ha un buon esempio che usa per introdurre la BMA? Magari mostrando anche le probabilità e le posizioni posteriori perché penso che sarebbe piuttosto istruttivo.


Un breve aggiornamento: mi sono appena imbattuto in questa presentazione che fa riferimento al paradosso di Freedman nella sezione 2. Vi è un breve esempio in cui vengono simulate 39 covariate casuali e se si cerca solo il modello migliore, alla fine si trovano covariate significative. La media del modello è apparentemente una cura per quel problema. Non sto pubblicando una soluzione con codice qui perché, francamente, non so come vengano ricavate le cifre.
Christoph_J,

(Continua) Su cosa stanno esattamente calcolando la media? Il miglior parametro? Tutti i parametri (penso che avrebbe senso solo in questo esempio specifico). Tuttavia, penso che le classifiche in combinazione con il suggerimento al paradosso di Freedman siano piuttosto utili. Forse aiuta alcuni.
Christoph_J,

Risposte:


8

Ho fatto qualcosa di simile di recente. Non tanto cercare di convincere gli altri, ma fare un piccolo progetto che mi ha permesso di avere un assaggio di BMA. Quello che ho fatto è stato generare un set di dati con una risposta binaria, tre variabili indipendenti che avevano un effetto sulla risposta e sette variabili che non avevano alcun effetto sulla risposta. Ho quindi confrontato i risultati BMA con le stime dei frequentatori nella regressione logistica. Penso che almeno in questo caso l'approccio BMA sembra essere abbastanza buono. Se vuoi renderlo più accessibile, puoi sempre nominare le variabili o qualcosa invece di chiamarle e generiche .yXy

Il codice R che ho usato per questo è presentato di seguito. Spero che possa ispirarti!

# The sample size
n <- 100

# The 'true' coefficient vector
Beta <- cbind(c(-1.5, 0.45, -3))

# Generate the explanatory variables which have an effect on the outcome
set.seed(1)
X <- cbind(rnorm(n, 0, 1), rnorm(n, 4, 2), rnorm(n, 0.5, 1))

# Convert this into probabilities
prob <- 1/(1+exp(-X %*% Beta))

# Generate some uniform numbers. If the elements are smaller than the corresponding elements in the prob vector, then return 1.
set.seed(2)
runis <- runif(n, 0, 1)
y <- ifelse(runis < prob, 1, 0)

# Add the nonsense variables
X <- cbind(X, rpois(n, 3))        # Redundant variable 1 (x4)
X <- cbind(X, rexp(n, 10))        # Redundant variable 2 (x5)
X <- cbind(X, rbeta(n, 3, 10))    # Redundant variable 3 (x6)
X <- cbind(X, rbinom(n, 10, 0.5)) # Redundant variable 4 (x7)
X <- cbind(X, rpois(n, 40))       # Redundant variable 5 (x8)
X <- cbind(X, rgamma(n, 10, 20))  # Redundant variable 6 (x9)
X <- cbind(X, runif(n, 0, 1))     # Redundant variable 7 (x10)


# The BMA
library(BMA)
model <- bic.glm(X, y,  glm.family="binomial", factor.type=FALSE, thresProbne0 = 5, strict = FALSE)

# The frequentist model
model2 <- glm(y~X, family = "binomial")

old.par <- par()
par(mar=c(3,2,3,1.5))
plot(model, mfrow=c(2,5))
par(old.par)

summary(model)
summary(model2)

2
Questo è un bell'esempio, quindi +1 per questo. Tuttavia, come hai già sottolineato, non aiuta davvero a convincere gli altri a usare BMA. In realtà, lo eseguo e ci è voluto anche un po 'di tempo per convincermi che BMA qui è meglio dell'approccio classico: il modello migliore non è il modello vero (il modello migliore include solo x2 e x3) e i parametri per model2 non lo sono così tanto, almeno per i parametri pertinenti. Tuttavia, mostra alcuni parametri significativi x5 e x6 che non dovrebbero esserci e BMA fa un ottimo lavoro nel dirti che questo non è significativo, quindi questo è un vantaggio per BMA.
Christoph_J,

2

Una grande risorsa per questo è:
Bayesian Model Averaging with BMS di Stefan Zeugner (2012)

Sta usando il pacchetto R BMS , maggiori informazioni sono disponibili qui:
http://bms.zeugner.eu/

Due tutorial pratici per la riproduzione di esempi del mondo reale con il pacchetto sono disponibili qui:

Un'introduzione più generale motivazionale e attuale ai metodi bayesiani è il seguente documento:

È giunto il momento: metodi bayesiani per l'analisi dei dati nelle scienze organizzative di John K. Kruschke, Herman Aguinis e Harry Joo


Grazie per i collegamenti, ma non sono proprio quello che sto cercando. In realtà conoscevo e utilizzavo il pacchetto prima (è fantastico) e sono d'accordo che la loro documentazione è davvero istruttiva. Ma ancora una volta, l'intenzione degli autori non è di convincere qualcuno (si spera in meno di 5 minuti) perché dovrebbero usare il BMA, ma dato che vogliono usarlo, come farlo con il loro pacchetto. Quindi iniziano con l' attitudeesempio e se scorri il tuo primo link, non c'è davvero alcuna tabella o figura in cui urleresti: "Accidenti, sono felice di aver usato BMA!"
Christoph_J,

Continua: Giusto per essere chiari, questa ovviamente non è in alcun modo una critica della loro documentazione: non è la loro intenzione in primo luogo. Forse per fare un esempio che sto cercando. Supponiamo che tu voglia spiegare il problema degli outlier in una regressione lineare. Probabilmente inizieresti con qualcosa come i grafici qui . Naturalmente, il problema nei dati reali non sarà mai così semplice. Sarà difficile come si definisce un valore anomalo ecc. Ma con un grafico del genere, tutti sanno cosa sta succedendo.
Christoph_J,

3
@Christoph_J: conosci questo documento: indiana.edu/~kruschke/articles/KruschkeAJ2012.pdf - non si tratta tanto di BMA ma di convincere qualcuno ad usare i metodi bayesiani in primo luogo - forse questo è qualcosa che è utile per tu :-)
vonjd,

1
Non lo sapevo ed è un ottimo documento introduttivo ai metodi bayesiani, quindi +1 per il link. Grazie.
Christoph_J,

@Christoph_J: ho modificato il post di conseguenza: il tuo +1 per la risposta non ha funzionato, è ancora 0 (?!?) Quindi potresti per favore farlo di nuovo - Grazie :-)
vonjd
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.