Skip to content
心理学实验

用 Potato 做心理学与行为实验

在你自己的服务器上运行被试间实验,实验中可以包含计时试次和 jsPsych 任务,参与者从 Prolific 或 SONA 招募平台进入研究。

Potato 用一个 YAML 文件运行一项在线行为实验,支持被试间条件、拉丁方平衡顺序、记录反应时的计时试次、自定步速阅读,以及与 Prolific 或 SONA 之间的来回跳转。Potato 免费开源,运行在你自己的机器或所在机构的服务器上,jsPsych 时间线也可以作为研究中的一个页面运行。

除了任务本身,在线实验还需要一台托管页面和存储数据的服务器、一种把每名参与者分配到某个条件的方法、知情同意和筛选页面,以及返回招募平台的链接。jsPsych 和 PsychoPy 负责构建任务,托管则交给 Pavlovia、JATOS 或 Cognition.run;Gorilla 等托管式搭建平台则在自己的服务器上运行全部内容。Potato 在你控制的服务器上运行整项研究,一些伦理委员会和数据保护规定要求这样做;Potato 还会在导出中记录每一次分配和每一项计时。

Potato 中的行为实验设计

每一行是 Potato 2.12 自带的一项设置或一种页面类型,链接页面列出了它的选项。

任务Potato 的做法文档
被试间设计conditions 以平衡、随机或轮转方式给每名参与者分配一个单元格,页面重新加载后保持不变实验流程
平衡顺序phases.counterbalance 为每名参与者随机或按拉丁方排列区组顺序实验流程
筛选与分支页面上的 show_when 和 exit_when,以及题目上的 display_logic实验流程
快速判断trial_timing,含注视点、刺激呈现时长、作答时限、按键与反应的映射以及反应时计时试次
自定步速阅读与迷宫任务移动窗口、累积和居中三种呈现方式,记录每个区域的时间自定步速阅读
jsPsych 任务一条 jsPsych 8 时间线作为一个页面,由 Potato 提供页面并存储数据运行时阶段
问卷与量表经过验证的量表、李克特与滑块题目,以及从 Qualtrics 或 REDCap 导入调查工具
激励相容任务价格列表、BDM 和信念诱导,并为 Prolific 计算奖金激励支付

一项带 jsPsych 任务的双条件研究

下面这段配置把参与者分配到两种反馈条件之一,在整项研究中保持平衡,并在知情同意和主任务之间运行一条 jsPsych Stroop 时间线。在线行为实验搭建了完整的研究。

yaml
conditions:
  factors:
    feedback: [none, immediate]
  assignment: balanced
 
phases:
  order: [consent, stroop, annotation, debrief]
  stroop:
    type: jspsych
    timeline: tasks/stroop.js
    plugins: [instructions, html-keyboard-response]

assignment: balanced 把每名新参与者分到目前人数最少的单元格,即使各单元格的流失率不同,人数也能保持均衡。Potato 自带 jsPsych 8.3.0 及其 15 个插件,只用到这些插件的研究不会从 CDN 加载任何内容。

通过 Prolific 或 SONA 招募

参与者从 Prolific 进入时,研究 URL 中带有他们的 PROLIFIC_PID,无需密码即可登录。结束时,参与者会看到完成码和一个返回 Prolific 的按钮;未通过注意力检查或培训阶段的参与者可以拿到另一个单独的完成码。Prolific 和 SONA 的设置见众包集成。

数据与导出

每名参与者的答案、所分配的条件、页面顺序和试次计时都存储在你的服务器上。CSV 导出会写出 participants.csv(含条件、顺序和筛除记录)、trials.csv(每个计时试次一行,包括超时),以及用于自定步速阅读的 regions.csv。data_package 导出会附加一份 Frictionless Data Package 描述,psych_ds 则按 Psych-DS 布局写出同样的表格,方便共享。

常见问题

能否把 jsPsych 实验托管在我自己的服务器上,而不是 Pavlovia?

能。添加一个 type: jspsych 页面并指定你的时间线文件,Potato 会提供这个页面,把参与者的 ID 和条件传给时间线,存储每一个试次,并在时间线结束时让参与者进入下一步。知情同意、问卷、返回 Prolific 和导出都留在 Potato 中完成。Potato 可以在任何能安装 Python 的机器上运行,包括大学的服务器。

如何让 Prolific 参与者带着完成码返回?

把登录设置为从 URL 读取 PROLIFIC_PID,并在配置中填入你的完成码。研究结束时,参与者会看到完成码和一个返回 Prolific 的按钮。prolific 提供方还会为未通过注意力检查或培训阶段的参与者提供第二个完成码。

浏览器中测得的反应时够准确吗?

对大多数被试内比较来说,够准确。Potato 在 requestAnimationFrame 回调中呈现刺激,并以下一帧作为刺激起始时间,因此起始时间精确到帧,在 60 Hz 下约为 17 ms。键盘和显示器会额外带来 5 到 30 ms 浏览器察觉不到的延迟,而且延迟因机器而异,所以请在被试内比较反应时,或在模型中加入参与者项。如果需要毫秒级精度或音频起始时间,请在 jsPsych 页面中运行任务。

能否不写 JavaScript 就在线运行自定步速阅读实验?

能。trial_timing 下的 presentation 块以移动窗口、累积或居中模式逐个区域显示每个条目的文本,并记录参与者在每个区域上花了多长时间。迷宫任务的做法相同,理解题作为普通题目跟在后面。自定步速阅读给出了配置。

延伸阅读

从这里开始

示例设计

每个设计都是可以下载并直接运行的 Potato 配置。

其他领域

全部应用场景