Memodifikasi simulasi linear balistik akumulator (LBA) di R

11

Model "Linear Ballistic Accumulator" (LBA) adalah model yang agak berhasil untuk perilaku manusia dalam tugas keputusan cepat yang dipercepat. Donkin et al (2009, PDF ) menyediakan kode yang memungkinkan memperkirakan parameter model yang diberikan data perilaku manusia, dan saya telah menyalin kode ini (dengan beberapa perubahan format kecil) ke intisari di sini . Namun, saya ingin membuat modifikasi yang tampaknya kecil untuk model tetapi saya tidak yakin bagaimana mencapai modifikasi ini dalam kode.

Untuk memulai dengan model kanonik, LBA mewakili setiap alternatif respons sebagai pesaing dalam perlombaan yang agak aneh sehingga para pesaing dapat berbeda dalam karakteristik berikut:

  • Posisi awal: ini bervariasi dari satu ras ke ras lain berdasarkan distribusi seragam yang dibatasi oleh U (0, X1).
  • Kecepatan: ini dijaga konstan dalam balapan tertentu (tidak ada akselerasi) tetapi bervariasi dari satu balapan ke balapan berdasarkan distribusi Gaussian yang ditentukan oleh N (X2, X3)
  • Selesaikan posisi garis (X4)

Dengan demikian, setiap pesaing memiliki nilai sendiri untuk X1, X2, X3 dan X4.

Perlombaan diulang berkali-kali, dengan pemenang dan waktu mereka dicatat setelah setiap perlombaan. Konstanta X5 ditambahkan ke setiap waktu kemenangan.

Sekarang, modifikasi yang ingin saya buat adalah untuk menukar variabilitas di titik awal ke garis finish. Artinya, saya ingin titik awal menjadi nol untuk semua pesaing dan semua ras, sehingga menghilangkan X1, tetapi saya ingin menambahkan parameter, X6, yang menentukan ukuran kisaran distribusi seragam yang berpusat pada X4 dari mana masing-masing pesaing garis finish disampel untuk setiap balapan. Dalam model ini, masing-masing pesaing akan memiliki nilai untuk X2, X3, X4, dan X6, dan kami masih memiliki nilai lintas-pesaing untuk X5.

Saya akan sangat berterima kasih jika ada yang mau membantu dengan ini.

Oh, dan untuk menyediakan pemetaan dari parameter bernama "X" yang dijelaskan di atas ke nama variabel yang digunakan oleh kode LBA yang saya tautkan: X1 = x0max; X2 = driftrate; X3 = sddrift; X4 = chi; X5 = Ter.

Mike Lawrence
sumber
1
Ada kesalahan dalam kode yang disediakan. Sepanjang Anda menempatkan spasi di tengah operator logis, misalnya <=,> =, ==, dan! =.
russellpierce
Modifikasi yang Anda sarankan terdengar sepele, masalahnya adalah / sangat / terkubur dalam kode. Untuk membuat cocok, itu disebut bugar. Fitter tampaknya memberikan parameter modelnya dan kemudian membungkus fungsi fit yang sebenarnya dalam optim. Fungsi yang dioptimalkan adalah obj.
russellpierce

Jawaban:

1

Ini bukan jawaban yang lengkap. Ini hanya upaya untuk memberikan pointer. Saya tidak tahu apa-apa tentang LBA, saya hanya suka kode R, jadi hasil Anda mungkin berbeda.

Kunci untuk menemukan bagian kode yang sesuai adalah mengetahui bahwa nilai Ter hanya ditambahkan ke hasil akhir dari perhitungan model (dan mundur dari fungsi obj yang ada dalam pengoptimal dan pembungkus parameterisasi 'bugar'). Itu menuntun saya ke pqlba dan lbameans. Di lbameans, Ter ditambahkan pada akhir tmp $ mean, pada gilirannya berasal dari fungsi n1mean yang menerima sebagai parameter x0max, chi, drift, dan sdI yang sepertinya cocok untuk nama X1: X4 Anda. Tapi, tidak ada yang memanggil lbameans, membawaku kembali ke pqlba. Menggali itu saya bisa melihat bahwa pqlba (sebelum menambahkan Ter) memantul melalui beberapa fungsi - dan berakhir di fptpdf. Pada titik ini saya terhalang.

Bagian yang bagus adalah, jika saya benar, fptpdf memiliki semua pemain utama yang hadir. Bagian yang buruk adalah bahwa, 1) akan membutuhkan lebih banyak waktu untuk melihat apakah parameter melakukan hal-hal lain dan perlu dikontrol sebelum fptpdf (mungkin), dan 2) Menghilangkan X1 (alias x0max) bermasalah karena fungsinya dibagi oleh x0max. Pengaturan ke 0 kemudian menyebabkan masalah yang jelas (membaginya dengan 0 adalah mkay buruk?). Dengan demikian pemahaman yang lebih besar tentang bagaimana model ini bekerja mungkin diperlukan sebelum Anda dapat mencapai tujuan Anda.

Semoga berhasil.

russellpierce
sumber