Contoh sederhana yang menunjukkan keunggulan Bayesian Model Averaging (BMA)

12

Saya menggabungkan pendekatan Bayesian Model Averaging (BMA) dalam penelitian saya dan akan segera memberikan presentasi tentang pekerjaan saya kepada kolega saya. Namun, BMA tidak begitu terkenal di bidang saya, jadi setelah memberikan mereka semua teori dan sebelum benar-benar menerapkannya pada masalah saya, saya ingin memberikan contoh sederhana namun instruktif tentang mengapa BMA bekerja.

Saya sedang memikirkan contoh sederhana dengan dua model yang dapat dipilih, tetapi model penghasil data yang sebenarnya (DGM) ada di antara keduanya dan bukti tidak benar-benar mendukung salah satu dari mereka. Jadi jika Anda memilih salah satu dan melanjutkannya, Anda akan mengabaikan ketidakpastian model dan membuat kesalahan, tetapi BMA, meskipun model sebenarnya bukan bagian dari set model, setidaknya memberikan kepadatan posterior yang tepat dari parameter yang menarik. Misalnya, ada dua ramalan cuaca setiap hari (A dan B) dan satu ingin memprediksi cuaca terbaik, jadi dalam statistik klasik Anda pertama-tama akan mencoba untuk menemukan peramalan terbaik di antara keduanya, tetapi bagaimana jika kebenaran ada di suatu tempat di antara keduanya. (yaitu, kadang-kadang A benar, kadang-kadang B). Tetapi saya tidak bisa memformalkannya. Sesuatu seperti itu tetapi saya sangat terbuka dengan ide. Saya harap pertanyaan ini cukup spesifik!

Dalam literatur, saya belum menemukan contoh bagus dari apa yang saya baca sejauh ini:

  • Kruschke (2011) , sementara pengantar yang bagus untuk statistik Bayesian, tidak benar-benar fokus pada BMA dan contoh lemparan koin yang dia miliki di bab 4 sangat bagus untuk memperkenalkan statistik Bayesian, tetapi tidak benar-benar meyakinkan rekan peneliti untuk menggunakan BMA. ("Mengapa lagi saya memiliki tiga model, satu mengatakan koin itu adil dan dua mengatakan itu bias di kedua arah?")
  • Semua hal lain yang saya baca ( Koop 2003 , Koop / Poirier / Tobias (2007) , Hoeting et al. (1999) dan banyak lainnya) adalah referensi yang bagus, tetapi saya belum menemukan contoh mainan sederhana di dalamnya.

Tapi mungkin saya melewatkan sumber yang bagus di sini.

Jadi, adakah yang punya contoh bagus yang ia gunakan untuk memperkenalkan BMA? Mungkin dengan bahkan menunjukkan kemungkinan dan posisi karena saya pikir itu akan sangat instruktif.

Christoph_J
sumber
Pembaruan singkat: Saya baru saja menemukan presentasi ini yang merujuk pada paradoks Freedman di bagian 2. Ada contoh singkat di mana 39 kovariat acak disimulasikan dan jika seseorang hanya mencari model terbaik, ia akhirnya menemukan kovariat yang signifikan. Rata-rata model tampaknya merupakan obat untuk masalah itu. Saya tidak memposting solusi dengan kode di sini karena terus terang, saya tidak tahu bagaimana angka-angka yang diperoleh.
Christoph_J
(Lanjutan) Apa yang sebenarnya mereka ratakan? Parameter terbaik? Semua parameter (saya pikir itu hanya masuk akal dalam contoh khusus ini). Namun, saya pikir grafik dalam kombinasi dengan petunjuk untuk paradoks Freedman cukup membantu. Mungkin ini membantu.
Christoph_J

Jawaban:

8

Saya melakukan sesuatu yang serupa baru-baru ini. Tidak banyak berusaha meyakinkan orang lain, tetapi melakukan proyek kecil yang memungkinkan saya untuk mendapatkan sedikit rasa BMA. Apa yang saya lakukan adalah membuat dataset dengan respons biner, tiga variabel independen yang berpengaruh pada respons dan tujuh variabel yang tidak memiliki efek pada respons. Saya kemudian membandingkan hasil BMA dengan perkiraan sering dalam regresi logistik. Saya pikir setidaknya dalam hal ini pendekatan BMA tampaknya cukup baik. Jika Anda ingin membuatnya lebih mudah diakses, Anda selalu dapat memberi nama variabel atau sesuatu daripada menyebutnya variabel generik dan .yXy

Kode R yang saya gunakan untuk ini disajikan di bawah ini. Semoga ini bisa menginspirasi Anda!

# 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)
hejseb
sumber
2
Itu contoh yang bagus, jadi beri +1 untuk itu. Namun, seperti yang sudah Anda tunjukkan, itu tidak benar-benar membantu meyakinkan orang lain untuk menggunakan BMA. Sebenarnya, saya menjalankannya dan bahkan butuh beberapa waktu untuk meyakinkan saya bahwa BMA lebih baik di sini daripada pendekatan klasik: model terbaik bukan model yang benar (model terbaik hanya mencakup x2 dan x3) dan parameter untuk model2 tidak sebanyak itu, setidaknya untuk parameter yang relevan. Namun, ini menunjukkan beberapa parameter signifikan x5 dan x6 yang seharusnya tidak ada dan BMA melakukan pekerjaan yang baik dalam memberi tahu Anda bahwa ini tidak signifikan, jadi ini merupakan nilai tambah untuk BMA.
Christoph_J
2

Sumber yang bagus untuk ini adalah:
Bayesian Model Averaging with BMS oleh Stefan Zeugner (2012)

Ini adalah menggunakan R-paket BMS , info lebih lanjut dapat ditemukan di sini:
http://bms.zeugner.eu/

Dua tutorial praktis untuk mereproduksi contoh dunia nyata dengan paket dapat ditemukan di sini:

Pengantar motivasi dan metode Bayesian yang lebih umum adalah makalah berikut ini:

Waktunya telah tiba: Metode Bayesian untuk Analisis Data dalam Ilmu Organisasi oleh John K. Kruschke, Herman Aguinis dan Harry Joo

vonjd
sumber
Terima kasih atas tautannya, tetapi sebenarnya bukan itu yang saya cari. Saya benar-benar tahu dan menggunakan paket itu sebelumnya (sangat bagus) dan saya setuju bahwa dokumentasi mereka sangat instruktif. Tetapi sekali lagi, maksud penulis bukan untuk meyakinkan seseorang (mudah-mudahan dalam waktu kurang dari 5 menit) mengapa mereka harus menggunakan BMA, tetapi mengingat bahwa mereka ingin menggunakannya, bagaimana melakukannya dengan paket mereka. Jadi mereka mulai dengan attitudecontoh dan jika Anda menggulir tautan pertama Anda, sebenarnya tidak ada tabel atau angka di mana Anda akan berteriak: "Ya ampun, saya senang telah menggunakan BMA!"
Christoph_J
Lanjutan: Hanya untuk memperjelas, ini tentu saja bukan kritik terhadap dokumentasi mereka: itu bukan niat mereka sejak awal. Mungkin untuk memberi contoh yang saya cari. Mari kita asumsikan Anda ingin menjelaskan masalah outlier dalam regresi linier. Anda mungkin akan mulai dengan sesuatu seperti grafik di sini . Tentu saja, masalah dalam data nyata tidak akan pernah semudah itu. Akan sulit bagaimana Anda mendefinisikan outlier dll. Tetapi dengan bagan seperti itu, semua orang tahu apa yang terjadi.
Christoph_J
3
@Christoph_J: Apakah Anda tahu makalah ini: indiana.edu/~kruschke/articles/KruschkeAJ2012.pdf - ini bukan tentang BMA tetapi tentang meyakinkan seseorang untuk menggunakan metode Bayesian di tempat pertama - mungkin ini adalah sesuatu yang bermanfaat untuk Anda :-)
vonjd
1
Saya tidak tahu itu dan itu adalah makalah pengantar yang sangat bagus untuk metode Bayesian, jadi +1 untuk tautannya. Terima kasih.
Christoph_J
@Christoph_J: Saya mengedit posting sesuai dengan itu: +1 Anda untuk jawabannya tidak berfungsi, masih 0 (?!?) Jadi bisakah Anda melakukannya lagi - Terima kasih :-)
vonjd