stimulus-coding or accuracy coding?怎么编码?上边界是正确还是选A?

Created: June 11, 2023 9:26 AM Last edited by: Pan Wanke Last edited time: June 11, 2023 9:26 AM Owner: Pan Wanke

问题:用correct和incorrect做DDM的两条边界,和用左右键做DDM的两条边界,他们的区别是什么呀?算出的参数含义上和解释上会发生什么变化

编码对v的影响

如果上边界是正确。

drift rate表示的是获得有效信息速度。

drift越大,那么信息累计的速度越快。

如果上边界是选择A,相对于选择B。

drift rate表示的是获得偏好信息倾向性。

drift越大,那么越偏好收集与A信息有关的信息。

此时的 drift rate不能直接表达为信息累计的速度,而更多反应的是一种偏好。

编码对z的影响

如果上边界是选择A,相对于选择B。

当z>0.5,表示个体对A选项的偏好存在倾向性或者偏差。

比如,在食物选择的研究中,个体可能对某一类零食存在偏好。

又比如,在歧视研究中,个体可能对黑人有判断偏差。

如果上边界是正确。

此时的z难以解释。如果z>0.5,z大概可以解释为在没有累计信息前就获得了有关正确反应的信息。

如点探测类任务,可能在正式决策前给被试提供cue,因此被试在没有累计信息前就获得了有关正确反应的信息。

一般以正确率为指标的任务,会将z设置为0.5,以避免难以解释的问题。

如何选择编码?

选择编码主要取决于实验任务和实验目的。

实验任务决定了你的指标是正确率还是选择比率;

实验目的决定了你如何解释参数,此时可以根据实验目的调整编码。比如在社会决策的sDDM中,选择的上边界可以是与他人选择一致,也可以是与自己之前的选择保持一致。

常见误区

  • 试图通过两个v来解释

    当在考虑如何解释编码的影响时,研究者可能会想,我既然知道了被试选择A的drift偏好,那我是否能求他关于选项B的偏好呐?

    进而,我是否可以比较被试在两种选择下drift偏好的差异性?

回答:一般来说,这是不可以的。

一方面,DDM会把上下两个方向的drift融和为一个,并且表达为上边界的drift,这使得另一个drift被忽略。比如,在四参数DDM中,上下边际drift的大小是一样的。在加入drift的trial层面变异sv后,对于下边界的drift的估计虽然会与上边界不同,但是彼此也相互影响。

另一方面,DDM的意义就是联合选择和rt共同解释。上述的操作等于把选择和rt分开分析了,这和把被试的选择作为自变量,把rt作为因变量进行GLM的区别很小。

编码对数据的影响

由于编码对于数据的影响反映为对rt的翻转(flip),如下图

Untitled

因此,如果以正确为上边界,那么错误的rt会翻转为负数。

如果以选择A为上边界,那么选择B的rt会翻转为负数。

HDDM中的stim coding

stim coding的意义在于探查被试对某些反应是否存在偏好

比如被试是否更喜欢按右键,而不是左键。

stim coding的本质

首先是多加入了一列协变量(stim)

然后假设,v或者z,对于stim1为正(z就是大于0.5),对于stim2为负(z就是小于0.5)。

实际的模型设定也是这样。

对于stim1,

res = 1(可以是正确或者选择A),使用wiener(…,v,z)

res = 0,使用wiener(…,-v,1-z)

对于stim2,

res = 1,使用wiener(…,-v,z) 或者 wiener(…,v,1-z)

res = 0,使用wiener(…,v,1-z) 或者 wiener(…,-v, z)

一般在代码中会默认使用accuary coding,如果需要stim coding ,可以参照https://hddm.readthedocs.io/en/latest/howto.html 里的代码进行设置

model = hddm.HDDMStimCoding(data, include='z', stim_col='stim', split_param='v')