Модифікація лінійного балістичного акумулятора (LBA) в R


11

Модель "Лінійний балістичний акумулятор" (LBA) - досить вдала модель поведінки людини у швидких простих завданнях рішення. Donkin і ін (2009, PDF ) надати код , який дозволяє оцінити параметри моделі даної поведінкові дані людини, і я скопіював цей код (з деякими незначними змінами форматування) по суті тут . Однак я хотів би внести незначну модифікацію в модель, але я не впевнений, як досягти цієї модифікації в коді.

Для початку канонічну модель LBA представляє кожну альтернативу відповіді як конкурента в досить дивному змаганні, таким чином, щоб конкуренти могли відрізнятися за такими характеристиками:

  • Вихідне положення: це змінюється від раси до раси відповідно до рівномірного розподілу, обмеженого U (0, X1).
  • Швидкість: це підтримується постійним у межах даної гонки (без прискорення), але змінюється від гонки до раси відповідно до розподілу Гаусса, визначеного N (X2, X3)
  • Положення фінішної лінії (X4)

Таким чином, у кожного конкурента є свій набір значень для X1, X2, X3 і X4.

Гонка повторюється багато разів, при цьому переможець та їх час фіксуються після кожної гонки. Константа X5 додається до кожного виграшного разу.

Тепер, модифікація, яку я хочу внести, - це поміняти мінливість в початковій точці на фінішну лінію. Тобто, я хочу, щоб стартова точка була нульовою для всіх конкурентів і всіх гонок, тим самим виключаючи X1, але я хочу додати параметр, X6, який визначає розмір діапазону рівномірного розподілу, орієнтованого на X4, від якого кожен конкурент фінішна лінія відбирається для кожної гонки. Тоді в цій моделі кожен конкурент матиме значення для X2, X3, X4 та X6, і ми все ще маємо значення для конкурента для всіх конкурентів.

Буду дуже вдячний, якщо хтось готовий допомогти у цьому.

О, і для надання відображення з описаних вище параметрів з іменем "X" до імен змінних, використовуваних кодом LBA, який я пов'язав: X1 = x0max; X2 = дрейфрат; X3 = sddrift; X4 = чі; X5 = Тер.


1
У коді є помилки, як це передбачено. Всюди ви розміщуєте пробіл посередині логічних операторів, наприклад <=,> =, == і! =.
russellpierce

Пропонована вами модифікація звучить тривіально, проблема полягає в тому, що вона / дуже / закопується в код. Щоб створити пристосування, він викликає монтажника. Fitter, очевидно, надає моделям свої параметри, а потім оптимізує фактичну функцію підгонки. Оптимізована функція є obj.
russellpierce

Відповіді:


1

Це не повна відповідь. Це лише спроба дати вказівник. Я нічого не знаю про LBA, мені просто подобається R-код, тому ваш посів може відрізнятися.

Ключовим моментом для пошуку відповідного розділу коду було те, що значення Ter було просто додано до кінцевого результату розрахунків моделі (і зворотного відстеження від функції obj, яка знаходиться в обгортці оптимізації та параметризації 'fitter'). Це привело мене до pqlba та lbameans. У lbameans Ter додається як в кінці tmp $ mean, в свою чергу, отриманий від функції n1mean, яка приймає в якості параметрів x0max, chi, дрейф та sdI, що здавалося розумним збігом для ваших імен X1: X4. Але нічого не кличе lbameans, що веде мене назад до pqlba. Перекопавшись через це, я можу побачити, що pqlba (до додавання Ter) перескакує через пару функцій - і закінчується у fptpdf. У цей момент я пригнічений.

Приємно, що fptpdf, якщо я маю рацію, має всіх основних гравців. Погана частина полягає в тому, що 1) знадобиться більше часу, щоб зрозуміти, чи параметри виконують інші речі і чи потрібно їх контролювати перед fptpdf (можливо), і 2) Усунути X1 (він же x0max) проблематично, оскільки функція розділена від x0max. Якщо встановити його на 0, то виникають очевидні проблеми (ділення на 0 - це погано, добре?) Таким чином, для досягнення своїх цілей, ймовірно, потрібно більше розуміння того, як працює модель.

Удачі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.