在R中修改线性弹道累加器(LBA)仿真


11

“线性弹道累加器”模型(LBA)是在快速简单决策任务中用于人类行为的相当成功的模型。唐金等人(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 =标准差 X4 =气; X5 = Ter。


1
提供的代码中有错误。整个过程中,在逻辑运算符的中间放置一个空格,例如<=,> =,==和!=。
russellpierce

您建议的修改听起来很微不足道,问题在于它被/ very /掩埋在代码中。要创建拟合,它称为拟合。Fitter显然为模型提供了其参数,然后将实际的拟合函数包装为最优。被优化的函数是obj。
russellpierce

Answers:


1

这不是一个完整的答案。这只是尝试提供一个指针。我对LBA一无所知,我只喜欢R代码,所以您的工作量可能会有所不同。

找到合适的代码部分的关键是要知道,将Ter值简单地添加到模型计算的最终结果中(并从obj函数中进行回溯,而obj函数位于优化和参数化包装器“ fitter”中)。那把我引向了pqlba和lbameans。在lbameans中,在tmp $ mean的末尾添加Ter,这又从n1mean函数派生而来,该函数接受参数x0max,chi,drift和sdI作为x1:X4名称的合理匹配。但是,没有什么叫lbameans,导致我回到pqlba。仔细研究,我可以看到pqlba(在添加Ter之前)通过几个函数反弹-最终到达fptpdf。此时,我已陷入困境。

令人高兴的是,如果我是对的,fptpdf会吸引所有主要参与者。不好的部分是,1)需要花费更多时间查看参数是否正在做其他事情并且需要在fptpdf之前进行控制(可能),以及2)消除X1(又名x0max)是有问题的,因为该函数已被划分x0max。将其设置为0会导致明显的问题(除以0是不好的吗?)。因此,在实现目标之前,可能需要对模型的工作方式有更深入的了解。

祝好运。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.