
精确计时
背景与上下文
在心理学研究中,反应时间用于量化认知过程和行为。反应时间的明确界定与刺激出现与反应之间经过的时间有关。
测量反应时间有两个组成部分,即刺激的开始时间和参与者反应发生的时间,如图 Fig.1 所示。

Fig. 1: 测量反应时间的两个主要组成部分。
为了准确测量反应时间,必须知道刺激开始的确切时间(A 点),以及参与者反应发生的时间(B 点),因为反应时间是这两个点之间的差值。借助这两个点,可以轻易地确定参与者的反应发生时间,但确切的刺激开始时间(A 点)较难确定。
为什么确定 A 点何时发生会有挑战?影响刺激出现的主要原因有三个:
屏幕刷新率: 显示器的刷新率为 60Hz,所以如果某个事件被调度发生,它只能在显示器刷新时发生。虽然这在毫秒级别上是一个重要因素,但量化这一点非常重要(我们稍后将讨论如何通过请求动画帧来测量它),因为这直接影响实验序列。
编程性质: 所有实验都是基于编码的,为了执行代码,它必须被处理,因为没有什么是瞬时的,这通常需要 1 到 2 次刷新周期。
设备容量: 尽管这种情况并不常见,但如果参与者的设备容量非常慢,刺激呈现可能会延迟,因为所有系统延迟(如计算机冻结)都会影响结果。我们稍后讨论如何检查此问题(JavaScript 事件循环)。
总之,反应时间受到许多因素的影响,这些因素是技术过程的基础,旨在准确确定刺激开始与参与者反应之间的时间。
在《行为研究方法》中的同行评审出版物
查看这篇于 2022 年 5 月发表在 Springer Nature 的《行为研究方法》 中的同行评审论文。作者得出结论,Labvanced 与其他基于网络的工具相比,具备最准确的反应时间测量。

我们的流程:Labvanced 的精确计时管道

Fig. 2: Labvanced 中精确计时和捕捉准确反应时间的一般管道。
为了提供精确的计时和反应时间,我们的软件遵循以下步骤 (Fig. 2):
预加载(缓存): 确保所有实验刺激在实验开始之前都已预加载并在本地可用,以便在实验进行中不会发生加载。因此,如果参与者想参与研究,所有刺激(图像、音频和视频)都已从我们的服务器中预取并在他们的计算机上本地加载。
预渲染: 当实验开始时,会递归创建内容,以便下一个画面和试验在后台加载,并在参与者准备好继续之前随时准备就绪。这是由一个预渲染机制驱动的。
参与者特定测量: 由于在线研究始于浏览器,每个参与者都有有限的计算机资源(GPU、CPU),必须考虑这些资源,因为它们会影响性能。我们捕捉任何潜在的延迟,并将其作为修正变量反馈给研究人员,研究人员也可以将其作为排除标准。
保存参与者的反应
所有实验都在参与者的计算机上本地进行。因此,互联网在技术上并不是运行实验的强制要求。互联网仅在实验开始时需要以便在本地预加载实验,之后在结束时需要上传数据和反应回服务器。
然而,如果条件允许,我们的软件被设置为在每次试验后自动保存数据记录和反应。这很重要,因为:
- 本地浏览器不能存储或缓存无限量的内存。通过频繁备份,内存得以释放,系统不会出现滞后风险。
- 如果参与者停止或中断,则至少会保存一些他们完成的试验的数据以及在终止参与之前提供的反应。
关于时间戳
当实验进行时,Labvanced 应用程序无法访问计算机上的所有其他进程或部分。然而,在记录反应时间时,需要时间戳,应用程序可以访问计算机时钟的系统时间,以确定 A 点(刺激开始)和 B 点(参与者反应)发生的时间。由于计算机有一个通用的系统时钟,因此无论您在哪里/使用什么,这个时钟都是相同的。
关于系统架构和反应时间数据流
虽然上述管道捕捉了反应时间过程的基本步骤,但以下是 Labvanced 中发生的一切更详细的解释,以确保反应时间测量的准确性和精确性。
预加载(缓存)

Fig.3: Labvanced 中预加载/缓存机制的主要步骤。
预加载或缓存发生在实验开始之前。Labvanced 被设置为在研究开始之前下载所有实验刺激。这包括所有元素,如图像和视频。它们都从 Labvanced 服务器中提取并下载到参与者的设备上,以便在实验本身中不需要下载 (Fig. 3)。
预渲染机制

Fig. 4: Labvanced 中预渲染机制的主要步骤。
我们有一个 预渲染机制,以提前构建实验任务、试验和画面的结构。例如,如果您在任务的试验 #1 中,我们会预渲染当前和即将进行的试验中的所有画面,以便在实验中不发生加载,包括指示、文本、音频对象、注视交叉等。通过提前构建试验和画面,可以防止浏览器变慢或被淹没 (Fig. 4)。
参与者特定测量
由于设备和计算机之间的固有变异性,性能会受到定义的影响。仅仅通过在本地系统上运行实验,这些系统的资源有限(即速度和内存并不是无限的,而是受其技术规格的限制),刺激可能无法如预期那样显示(例如,可能会有几毫秒的延迟)。
为了捕捉这些设备和参与者特定的波动,我们有以下机制:
- 请求动画帧
- JavaScript 事件循环
请求动画帧

Fig. 5: Labvanced 中请求动画帧机制的演示。
每 60 毫秒显示器都会独立更新和刷新,这是所有计算机和屏幕的常量。为了确定刺激呈现是否存在延迟(在毫秒级别),在发生计时刺激的所有实例中都使用请求动画帧。
假设您执行了在 2000 毫秒后显示刺激的代码,当您执行它时,没有任何反应,刺激将在下一个刷新率处自动呈现,60 毫秒(Hz)后,在 240 毫秒标记处。您可以测量这微小的延迟并进行后期补偿。因为我们使用请求动画帧,所以您可以准确知道一个命令何时被执行(何时真正发生/出现在显示器上),并相应调整 (Fig. 5)。
JavaScript 事件循环

另一个与参与者特定测量相关的示例是确定其设备的速度。
如果您的计算机反应较慢,可能是因为正在运行的活动系统进程占用了可用的 CPU。因此,浏览器正在使用可用的有限资源,因此所有内容都会变得更慢。
为了确定参与者级别是否发生这种情况,我们使用 JavaScript 事件循环和回调函数,其在后台自动运行(默认情况下)以测量函数自己回调所需的时间。如果它在 5 毫秒内没有返回,则意味着参与者的浏览器/计算机较慢,这可能影响测量反应时间的实验结果的完整性 (Fig. 6)。我们报告回调函数对于参与者返回所需的平均毫秒值。
在 Labvanced 中完成的数千项研究中,我们发现超过 95% 的参与者报告值均低于 3 毫秒,有时甚至低于 1 毫秒。但在某些情况下,有记录的平均反应时间为 200-300 毫秒,这可能会提示研究者考虑将该特定用户的数据从最终数据集分析中排除。
Labvanced 反应时间和精确计时能力的主要特点:
我们测量参与者反应的主要特点包括 (Fig. 7):
- 刺激呈现的时间准确性
- 刺激呈现的空间准确性
- 眼动追踪准确性 和采样率
- 量化和测量与每位参与者相关的设备和屏幕延迟,从而实现标准化、受试者之间的可比性和修正。这是通过前面部分描述的事件循环精度和请求动画帧来实现的。

Fig. 7: Labvanced 精确计时/反应时间解决方案的主要特点。
Labvanced 精确计时的优势
由于这些步骤和机制,Labvanced 提供了一个准确和精确的解决方案,用于在在线实验中测量反应时间。我们强调我们平台的以下优势:
- 刺激的受控时机: 研究者知道刺激在屏幕上呈现的确切时间,便于调整和准确测量。
- 强大的计算和编程机制: 为了确保研究人员报告的数据最为准确,我们使用强大的计算和编程机制来准确量化刺激在参与者屏幕上的出现。
- 经过实践检验: 我们与来自世界各地的研究人员合作,优化我们的平台,因此我们的功能已经被无数研究和学术机构使用我们的在线反应时间测量作为其研究和出版工作的基础进行过实践检验。
反应时间的样本数据和指标

Fig. 8: 关于在 Labvanced 中执行 Stroop 任务的参与者会话的数据报告;从右侧第 3 列展示了记录的反应时间。
使用 Labvanced 的精确计时可以做到的事情:
- 警觉性
- 认知衰退
- 感知
- 表现测量
- 特征识别
LV 文献库研究:
许多研究测量刺激反应所需的时间,这里是一些以反应时间测量为核心的任务示例:
- N-back 任务: 测量工作记忆容量的认知测试。刺激呈现时,参与者被挑战以匹配是否是相同的刺激呈现 n 步前。
- Stroop 任务: 该经典任务表明,当参与者面临不一致刺激(一个写着 "黄色" 但颜色为蓝色的词)时,反应时间会增加。
- 面孔识别: 面孔识别深深扎根于人性,并且可以测量参与者识别或区分两个或多个面孔所需的反应时间。
利用 Labvanced 精确计时的热门研究领域:
- 警觉性
- 认知衰退
- 感知
- 表现测量
- 特征识别
理论上,您可以通过 在编辑器中创建一个反应时间变量来将反应时间添加到任何实验中。
查看您如何能够通过此视频添加一个 反应时间任务 到您的研究中: