Prosty przykład pokazujący zalety Bayesian Model Averaging (BMA)


12

W swoich badaniach włączam podejście Bayesian Model Averaging (BMA) i wkrótce przedstawię kolegom moją prezentację na temat mojej pracy. Jednak BMA nie jest tak dobrze znany w mojej dziedzinie, więc po przedstawieniu im całej teorii i zanim faktycznie zastosuję ją do mojego problemu, chcę przedstawić prosty, ale pouczający przykład, dlaczego BMA działa.

Myślałem o prostym przykładzie z dwoma modelami, z których można wybierać, ale prawdziwy model generowania danych (DGM) jest gdzieś pośrodku, a dowody tak naprawdę nie sprzyjają żadnemu z nich. Więc jeśli wybierzesz jedną i będziesz kontynuować od niej, zignorujesz niepewność modelu i popełnisz błąd, ale BMA, chociaż prawdziwy model nie jest częścią zestawu modeli, przynajmniej daje prawidłową gęstość boczną parametru będącego przedmiotem zainteresowania. Na przykład istnieją dwie prognozy pogody każdego dnia (A i B), a jedna chce przewidzieć pogodę najlepiej, więc w klasycznych statystykach najpierw starałbyś się znaleźć najlepszego prognostę między nimi, ale co, jeśli prawda jest gdzieś pośrodku (to znaczy czasami A ma rację, czasami B). Ale nie mogłem tego sformalizować. Coś w tym stylu, ale jestem bardzo otwarty na pomysły. Mam nadzieję, że to pytanie jest wystarczająco szczegółowe!

W literaturze nie znalazłem żadnych dobrych przykładów z tego, co przeczytałem do tej pory:

  • Kruschke (2011) , chociaż jest świetnym wprowadzeniem do statystyki bayesowskiej, tak naprawdę nie koncentruje się na BMA, a przykład rzucania monetami, który ma w rozdziale 4, jest świetny do wprowadzenia statystyki bayesowskiej, ale tak naprawdę nie przekonuje innych badaczy do korzystania z BMA. („Dlaczego znowu mam trzy modele, jeden mówiący, że moneta jest uczciwa, a drugi mówi, że jest tendencyjny w dowolnym kierunku?”)
  • Wszystkie inne rzeczy, które czytam ( Koop 2003 , Koop / Poirier / Tobias (2007) , Hoeting i wsp. (1999) i mnóstwo innych) są świetnymi referencjami, ale nie znalazłem w nich prostego przykładu zabawki.

Ale może właśnie brakowało mi tutaj dobrego źródła.

Czy ktoś ma dobry przykład, którego używa do wprowadzenia BMA? Może nawet pokazując prawdopodobieństwa i osoby postronne, ponieważ uważam, że byłoby to dość pouczające.


Krótka aktualizacja: Właśnie natknąłem się na tę prezentację, która odnosi się do paradoksu Freedmana w sekcji 2. Istnieje krótki przykład, w którym symulowanych jest 39 losowych zmiennych towarzyszących, a jeśli ktoś szuka najlepszego modelu, w końcu znajduje znaczące zmienne towarzyszące. Uśrednianie modelu jest najwyraźniej lekarstwem na ten problem. Nie zamieszczam tutaj rozwiązania z kodem, bo szczerze mówiąc, nie wiem, skąd się biorą liczby.
Christoph_J,

(Ciąg dalszy) Na czym dokładnie się one uśredniają? Najlepszy parametr? Wszystkie parametry (myślę, że miałoby to sens tylko w tym konkretnym przykładzie). Mimo to wydaje mi się, że wykresy w połączeniu ze wskazówką dotyczącą paradoksu Freedmana są bardzo pomocne. Może to trochę pomaga.
Christoph_J,

Odpowiedzi:


8

Xy

Kod R, którego użyłem do tego, jest przedstawiony poniżej. Mam nadzieję, że to Cię zainspiruje!

# 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
To dobry przykład, więc daj +1. Jednak, jak już wskazałeś, tak naprawdę nie pomaga przekonać innych do korzystania z BMA. Właściwie to go uruchomiłem i nawet trochę czasu zajęło mi przekonanie, że BMA jest tutaj lepszy niż klasyczne podejście: najlepszy model nie jest prawdziwym modelem (najlepszy model zawiera tylko x2 i x3), a parametry dla modelu2 nie są tyle, przynajmniej w przypadku odpowiednich parametrów. Pokazuje jednak pewne znaczące parametry x5 i x6, których nie powinno tam być, a BMA ma świetną robotę, mówiąc ci, że to nie jest znaczące, więc jest to plus dla BMA.
Christoph_J

2

Świetnym źródłem informacji jest:
Bayesian Model Averaging with BMS autorstwa Stefana Zeugnera (2012)

Korzysta z pakietu R BMS , więcej informacji można znaleźć tutaj:
http://bms.zeugner.eu/

Dwa praktyczne samouczki dotyczące odtwarzania rzeczywistych przykładów z pakietem można znaleźć tutaj:

Bardziej ogólne motywacyjne i aktualne wprowadzenie do metod bayesowskich to następujący artykuł:

Nadszedł czas: bayesowskie metody analizy danych w naukach organizacyjnych John K. Kruschke, Herman Aguinis i Harry Joo


Dzięki za linki, ale tak naprawdę nie są to, o co mi chodzi. Właściwie znałem i korzystałem z tego pakietu już wcześniej (jest świetny) i zgadzam się, że ich dokumentacja jest naprawdę pouczająca. Ale znowu, intencją autorów nie jest przekonanie kogoś (mam nadzieję, że w mniej niż 5 minut), dlaczego powinni korzystać z BMA, ale biorąc pod uwagę, że chcą go użyć, jak to zrobić ze swoim pakietem. Zaczną więc od attitudeprzykładu, a jeśli przewiniesz swój pierwszy link, tak naprawdę nie ma żadnej tabeli ani figury, w której krzyczałbyś: „Rany, cieszę się, że użyłem BMA!”
Christoph_J,

Ciąg dalszy: Żeby było jasne, nie jest to oczywiście w żaden sposób krytyka ich dokumentacji: przede wszystkim nie jest to ich intencją. Może podając przykład, którego szukam. Załóżmy, że chcesz wyjaśnić problem wartości odstających w regresji liniowej. Prawdopodobnie zaczniesz od czegoś takiego jak tutaj wykresy . Oczywiście problem rzeczywistych danych nigdy nie będzie taki łatwy. Trudno będzie zdefiniować wartość odstającą itp. Ale dzięki takiej tabeli wszyscy wiedzą, co się dzieje.
Christoph_J,

3
@Christoph_J: Czy znasz ten artykuł: indiana.edu/~kruschke/articles/KruschkeAJ2012.pdf - nie chodzi o BMA, ale przede wszystkim o przekonanie kogoś do korzystania z metod bayesowskich - być może jest to coś, co jest pomocne dla ty :-)
vonjd

1
Nie wiedziałem o tym i jest to naprawdę dobry wstęp do metod bayesowskich, więc +1 za link. Dzięki.
Christoph_J,

@Christoph_J: Zredagowałem post: Twoja +1 za odpowiedź nie zadziałała, wciąż jest 0 (?!?), Więc czy możesz to zrobić jeszcze raz - Dziękuję :-)
vonjd
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.