Menyesuaikan model campuran khusus dalam R - alternatif untuk mengoptimalkan ()

8

Saya ingin melakukan sesuatu dalam R yang dapat dilakukan SAS menggunakan campuran proc SAS (ada beberapa cara yang dapat dilakukan dalam STATA es dengan baik), yaitu menyesuaikan model Bivariat yang disebut dari Reitsma et al (2005). Model ini adalah model campuran khusus di mana varians tergantung pada penelitian (lihat di bawah). Googling dan berbicara dengan beberapa orang yang akrab dengan model tidak menghasilkan pendekatan langsung yang cepat pada saat yang sama (yaitu fungsi pemasangan model tingkat tinggi yang bagus). Namun saya yakin, ada sesuatu yang cepat di R yang bisa dibangun.

Singkatnya, seseorang dihadapkan pada situasi berikut: Pasangan proporsi yang diberikan (p1,p2) di [0,1]2orang ingin mencocokkan normal bivariat dengan pasangan logit-transformed. Karena proporsi berasal dari tabel 2x2 (yaitu data binomial) setiap logit yang diubah proporsi yang diamati memiliki estimasi varians yang harus dimasukkan dalam proses pemasangan, katakanlah(s1,s2). Jadi orang ingin mencocokkan normal bivariat dengan pasangan, di mana matriks kovariansΣ tergantung pada pengamatan, yaitu

(logit(p1),logit(p2))N((mu1,mu2),Σ+S)

dengan S adalah matriks diagonal dengan (s1,s2)dan sepenuhnya tergantung pada data tetapi bervariasi dari observasi ke observasi. mu dan Sigma adalah sama untuk semua observasi sekalipun.

Saat ini saya menggunakan panggilan ke optim()(menggunakan BFGS) untuk memperkirakan lima parameter (μ1, μ2, dan tiga parameter untuk Σ). Namun demikian ini sangat lambat, dan terutama tidak cocok untuk simulasi. Juga salah satu tujuan saya adalah untuk memperkenalkan koefisien regresi untuk mu nanti, meningkatkan jumlah parameter.

Saya mencoba mempercepat pemasangan dengan memasok nilai awal dan saya juga berpikir tentang menghitung gradien untuk lima parameter. Karena kemungkinan menjadi sangat kompleks karena penambahanS, Saya merasa risiko memasukkan kesalahan dengan cara ini terlalu besar dan belum mencobanya, saya juga tidak melihat cara untuk memeriksa perhitungan saya.

Apakah perhitungan gradien biasanya bermanfaat? Bagaimana Anda memeriksanya?

Saya mengetahui pengoptimal lain selain itu optim(), yaitu nlm()dan saya juga tahu tentang tampilan tugas CRAN: Pengoptimalan. Manakah yang patut dicoba?

Trik macam apa yang ada untuk mempercepat optim()selain mengurangi akurasi?

Saya akan sangat berterima kasih atas petunjuk apa pun.

Philipp
sumber
Beberapa diskusi di sini
Henry
Jawaban untuk pertanyaan ini mungkin bermanfaat: stats.stackexchange.com/questions/9535/…
Jason Morgan
@ mbq: Terima kasih telah memigrasikan pertanyaan. Juga terima kasih telah mengisyaratkan pertanyaan lain.
Philipp

Jawaban: