การปรับเปลี่ยนการจำลองแบบ linear ballistic accumulator (LBA) ใน R


11

โมเดล "Linear Ballistic Accumulator" (LBA) เป็นแบบจำลองที่ค่อนข้างประสบความสำเร็จสำหรับพฤติกรรมมนุษย์ในการตัดสินใจงานง่าย ๆ Donkin, et al (2009, PDF ) ให้รหัสที่ใบอนุญาตประมาณค่าพารามิเตอร์ของรูปแบบการให้ข้อมูลพฤติกรรมของมนุษย์และผมได้คัดลอกโค้ดนี้ (กับเล็กน้อยบางรูปแบบการเปลี่ยนแปลง) เพื่อสรุปสาระสำคัญที่นี่ อย่างไรก็ตามฉันต้องการทำการดัดแปลงเล็กน้อยกับโมเดล แต่ฉันไม่แน่ใจว่าจะได้รับการปรับเปลี่ยนนี้อย่างไรในโค้ด

ในการเริ่มต้นด้วยรูปแบบที่เป็นที่ยอมรับ LBA หมายถึงทางเลือกในการตอบสนองแต่ละข้อในฐานะคู่แข่งในการแข่งขันที่ค่อนข้างแปลกประหลาดซึ่งคู่แข่งสามารถแตกต่างกันในลักษณะดังต่อไปนี้:

  • ตำแหน่งเริ่มต้น: สิ่งนี้แตกต่างจากการแข่งขันไปยังการแข่งขันตามการกระจายเครื่องแบบที่ล้อมรอบด้วย U (0, X1)
  • ความเร็ว: สิ่งนี้จะถูกเก็บไว้อย่างคงที่ภายในการแข่งขันที่กำหนด (ไม่เร่งความเร็ว) แต่จะแตกต่างกันไปตามการแข่งขันตามการแจกแจงแบบเกาส์ที่กำหนดโดย N (X2, X3)
  • ตำแหน่งเส้นชัย (X4)

ดังนั้นผู้แข่งขันแต่ละคนจึงมีค่าเป็นของตนเองสำหรับ X1, X2, X3 และ X4

การแข่งขันซ้ำหลายครั้งโดยผู้ชนะและเวลาที่บันทึกไว้หลังจากการแข่งขันแต่ละครั้ง ค่าคงที่ของ X5 จะถูกเพิ่มเข้าไปในทุกครั้งที่ชนะ

ตอนนี้การดัดแปลงที่ฉันต้องการจะทำคือการสลับความแปรปรวนในจุดเริ่มต้นไปยังเส้นชัย นั่นคือฉันต้องการจุดเริ่มต้นที่จะเป็นศูนย์สำหรับคู่แข่งและการแข่งขันทั้งหมดดังนั้นจึงกำจัด X1 แต่ฉันต้องการเพิ่มพารามิเตอร์ X6 ที่ระบุขนาดของช่วงของการกระจายเครื่องแบบที่มีศูนย์กลางอยู่ที่ X4 ซึ่งคู่แข่งของแต่ละคน เส้นชัยเป็นตัวอย่างสำหรับการแข่งขันแต่ละครั้ง ในโมเดลนี้ผู้แข่งขันแต่ละคนจะมีค่าสำหรับ X2, X3, X4 และ X6 และเรายังคงมีค่าข้ามคู่แข่งสำหรับ X5

ฉันจะขอบคุณมากถ้าใครยินดีจะช่วย

โอ้และเพื่อให้การแมปจากพารามิเตอร์ชื่อ "X" ที่อธิบายไว้ข้างต้นกับชื่อตัวแปรที่ใช้โดยรหัส LBA ที่ฉันเชื่อมโยง: X1 = x0max; X2 = ล่องลอย; X3 = sddrift; X4 = ไค; X5 = เธอ


1
มีข้อผิดพลาดในรหัสตามที่ให้ไว้ คุณใส่ช่องว่างตรงกลางของตัวดำเนินการเชิงตรรกะเช่น <=,> =, ==, และ! =
russellpierce

การดัดแปลงที่คุณแนะนำให้ฟังดูไม่สำคัญปัญหาคือมัน / มาก / ถูกฝังอยู่ในโค้ด เพื่อสร้างความพอดีมันเรียกว่าช่างฟิต เห็นได้ชัดว่าช่างทำแบบจำลองให้พารามิเตอร์ของโมเดลและจากนั้นห่อฟังก์ชั่นพอดีที่เกิดขึ้นจริงในการเพิ่มประสิทธิภาพ ฟังก์ชั่นการเพิ่มประสิทธิภาพเป็น obj
russellpierce

คำตอบ:


1

นี่ไม่ใช่คำตอบที่สมบูรณ์ มันเป็นเพียงความพยายามที่จะให้ตัวชี้ ฉันไม่รู้อะไรเกี่ยวกับ LBA ฉันก็เหมือนกับรหัส R ดังนั้นค่าของคุณอาจแตกต่างกันไป

กุญแจสำคัญในการค้นหาส่วนที่เหมาะสมของรหัสคือการรู้ว่าค่า Ter ถูกเพิ่มเข้ากับผลลัพธ์สุดท้ายของการคำนวณแบบจำลอง (และการย้อนรอยจากฟังก์ชัน obj ซึ่งอยู่ในตัวปรับและการปรับพารามิเตอร์ของ 'fitter') นั่นนำฉันไปสู่ ​​pqlba และ lbameans ใน lbameans, Ter ถูกเพิ่มเข้ามาในตอนท้ายของ tmp $ mean ในทางกลับกันมาจากฟังก์ชั่น n1mean ซึ่งยอมรับว่าเป็นพารามิเตอร์ x0max, chi, drift, และ sdI ซึ่งดูเหมือนว่าจะเหมาะสมกับชื่อ X1: X4 ของคุณ แต่ไม่มีอะไรเรียก lbameans พาฉันกลับไปที่ pqlba เมื่อขุดผ่านฉันจะเห็นว่า pqlba (ก่อนเพิ่ม Ter) กระเด้งผ่านฟังก์ชั่นสองอย่าง - และจบลงที่ fptpdf ณ จุดนี้ฉันใจเย็น

ส่วนที่ดีคือถ้าฉันพูดถูก fptpdf มีผู้เล่นหลัก ๆ ทุกคน ส่วนที่ไม่ดีคือ 1) จะใช้เวลานานกว่านี้เพื่อดูว่าพารามิเตอร์กำลังทำสิ่งอื่น ๆ และต้องมีการควบคุมก่อน fptpdf (อาจ) และ 2) การกำจัด X1 (aka x0max) เป็นปัญหาเพราะฟังก์ชันถูกแบ่งออก โดย x0max การตั้งค่าเป็น 0 จะทำให้เกิดปัญหาชัดเจน (หารด้วย 0 คือ mkay ที่ไม่ดี?) ดังนั้นความเข้าใจที่มากขึ้นเกี่ยวกับวิธีการทำงานของแบบจำลองอาจเป็นสิ่งจำเป็นก่อนที่คุณจะบรรลุเป้าหมายได้

โชคดี.

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.