在 R 中修改线性弹道蓄能器 (LBA) 仿真

机器算法验证 r 随机过程
2022-03-16 04:46:38

“线性弹道蓄能器”模型 (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个回答

这不是一个完整的答案。这只是试图给出一个指针。我对 LBA 一无所知,我只是喜欢 R 代码,所以你的米数可能会有所不同。

找到适当的代码部分的关键是知道值 Ter 只是简单地添加到模型计算的最终结果中(并从 obj 函数回溯,该函数位于 optim 和参数化包装器“fitter”中)。这让我想到了 pqlba 和 lbameans。在 lbameans 中,Ter 添加到 tmp$mean 的末尾,而这又从 n1mean 函数派生而来,该函数接受 x0max、chi、drift 和 sdI 作为参数,这似乎与您的 X1:X4 名称合理匹配。但是,没有什么叫 lbameans,让我回到 pqlba。通过挖掘,我可以看到 pqlba(在添加 Ter 之前)通过几个函数反弹 - 最终以 fptpdf 结束。在这一点上,我受到了阻碍。

好的部分是,如果我是对的,fptpdf 拥有所有主要参与者。不好的部分是,1)需要更多时间来查看参数是否在做其他事情并且需要在 fptpdf 之前进行控制(可能),以及 2)消除 X1(又名 x0max)是有问题的,因为函数被划分了由 x0 最大。将其设置为 0 会导致明显的问题(除以 0 不好?)。因此,在实现目标之前,可能需要更深入地了解模型的工作原理。

祝你好运。