Saya mengalami masalah kinerja menggunakan MCMCglmm
paket di R untuk menjalankan model efek campuran. Kode ini terlihat seperti ini:
MC1<-MCMCglmm(bull~1,random=~school,data=dt,family="categorical"
, prior=list(R=list(V=1,fix=1), G=list(G1=list(V=1, nu=0)))
, slice=T, nitt=iter, ,burnin=burn, verbose=F)
Ada sekitar 20.000 pengamatan dalam data dan mereka terkelompok di sekitar 200 sekolah. Saya telah membuang semua variabel yang tidak digunakan dari kerangka data dan menghapus semua objek lain dari memori, sebelum dijalankan. Masalah yang saya miliki adalah bahwa hal itu membutuhkan waktu yang sangat lama untuk dijalankan, kecuali saya mengurangi iterasi ke jumlah yang sangat kecil. Dengan 50.000 iterasi, dibutuhkan 5 jam dan saya punya banyak model berbeda untuk dijalankan. Jadi saya ingin tahu apakah ada cara untuk mempercepat eksekusi kode, atau paket lain yang bisa saya gunakan. Saya menggunakan MCMCglmm
karena saya ingin interval kepercayaan untuk efek acak.
Di sisi lain, saya berharap untuk mendapatkan PC baru akhir tahun ini, tetapi dengan sedikit keberuntungan saya dapat membawa itu ke depan, jadi saya telah bertanya-tanya bagaimana cara terbaik menghabiskan sejumlah uang terbatas pada perangkat keras baru - lebih banyak RAM , lebih cepat CPU, dll. Dari menonton task manager, saya tidak percaya bahwa RAM adalah masalahnya (tidak pernah mendapatkan lebih dari 50% dari fisik yang digunakan), tetapi penggunaan CPU juga tidak jauh di atas 50%, yang menurut saya aneh. . Pengaturan saya saat ini adalah intel core i5 2.66GHz, RAM 4GB, HDD 7200rpm. Apakah masuk akal untuk mendapatkan CPU tercepat mungkin, dengan mengorbankan RAM tambahan? Saya juga bertanya-tanya tentang pengaruh ukuran cache CPU level 3 pada masalah komputasi statistik seperti ini?
Pembaruan: Setelah ditanyakan pada meta SO, saya disarankan untuk mengulangi pertanyaan dan mengirimnya ke Superuser. Untuk melakukannya saya perlu memberikan rincian lebih lanjut tentang apa yang terjadi "di bawah tenda" di MCMCglmm. Apakah saya benar dalam berpikir bahwa sebagian besar waktu perhitungan dihabiskan untuk melakukan optimasi - maksud saya menemukan maksimum dari beberapa fungsi yang rumit? Apakah inversi matriks dan / atau operasi aljabar linier lainnya juga merupakan operasi umum yang dapat menyebabkan kemacetan? Setiap informasi lain yang bisa saya berikan kepada komunitas Pengguna Super akan sangat diterima dengan penuh rasa syukur.
sumber
lmer()
model ke kumpulan data besar bisa memakan waktu cukup lama, terutama jika Anda perlu melakukannya berkali-kali. Jawaban atas pertanyaan Anda mungkin terletak pada komputasi paralel meskipun pengguna lain (mis. @DirkEddelbuettel) akan jauh lebih membantu daripada saya dalam hal ini. Ada juga kemungkinan Anda mendapatkan jawaban yang lebih baik tentang stackoverflow.glmer
(seperti yang Anda tahu dari posting saya yang lain) dan itu membutuhkan waktu sekitar 20 detik, tetapi masalahnya adalah tidak memberikan interval kepercayaan atau kesalahan standar, dan dari apa yang saya baca di milis arsipkan penulislme4
paket mengatakan bahwa distribusi sampling dari efek acak dapat sangat miring, sehingga statistik tersebut tidak dilaporkan. Sebenarnya saya menemukan dariMCMCglmm
jauh bahwa dalam kasus saya mereka mendekati normal (bukan berarti ini banyak membantu - saya hanya mengatakan). Apakah akan lebih baik jika saya meminta untuk memigrasikannya ke SO?Jawaban:
Mengapa tidak menjalankannya di layanan cloud-computing Amazon EC2 atau layanan serupa serupa?
MCMCpack
adalah, jika saya ingat dengan benar, sebagian besar diimplementasikan dalam C, jadi itu tidak akan menjadi jauh lebih cepat kecuali jika Anda mengurangi kompleksitas model Anda, iterasi, dll. Dengan EC2, atau layanan komputasi awan yang serupa, Anda dapat memiliki beberapa instance di mana pun spesifikasi yang Anda inginkan, dan jalankan semua model Anda sekaligus.sumber