Potato 能导入来自 Qualtrics、REDCap、LimeSurvey、SurveyJS、Network Canvas 或 XLSForm 的问卷并运行它,支持随机分配实验条件,针对敏感话题的列表实验和随机化回答,以及自我中心网络的提名生成器。Potato 免费开源,运行在你自己的机器或所在机构的服务器上,回答数据也就留在那里。
调查实验需要的不只是一个表单生成器:随机分配要在各条件之间保持平衡,题目要按规则显示或跳过,要有让人能私下回答敏感问题的设计,导出还要记录每位受访者被分配到什么、看到了什么。Potato 在一份 YAML 配置中满足这些需求。由于 Potato 运行在你自己的服务器上,回答数据受你所在机构的数据协议约束。随着一些大学和院系停止使用 Qualtrics,自己运行服务器变得更加重要。例如,拉德堡德大学社会科学学院要求其研究人员在 2026 年 12 月 1 日前迁移到 LimeSurvey。
Potato 中的调查研究设计
每一行是 Potato 2.12 自带的一项功能,链接页面列出了它的选项。
| 任务 | Potato 的做法 | 文档 |
|---|---|---|
| 调查实验与情境实验(vignette) | conditions 给每位受访者分配因子设计中的一个单元格,页面和题目上的规则可以读取所分配的条件 | 实验流程 |
| 列表实验 | list_experiment 只向处理组显示敏感条目,导出时估计其发生率 | 敏感问题 |
| 随机化回答 | randomized_response,支持强制回答设计和交叉设计 | 敏感问题 |
| 个人网络 | ego_network,含提名生成器、提名解释器、他者之间的关系和社会关系图 | 自我中心网络 |
| 经过验证的量表 | 55 套工具,涵盖人格、心理健康筛查、情感、态度和人口统计信息 | 调查工具 |
| 跳题逻辑与分支 | 题目上的 display_logic,以及页面上的 show_when 和 exit_when | 多阶段工作流 |
| 编码开放式回答 | 把回答作为条目载入,由多名编码者依据码本编码,并计算 Krippendorff's alpha | 内容分析 |
一个列表实验
下面这段配置把受访者分成对照组和处理组,敏感陈述只出现在处理组的列表中。受访者只报告有几条陈述符合自己的情况,从不说明是哪几条;survey_experiments 导出会估计敏感条目的发生率,并给出标准误和 95% 区间。
conditions:
factors:
list_group: [control, treatment]
annotation_schemes:
- annotation_type: list_experiment
name: lists
description: How many of these have you done in the last year?
items:
- Gone to a live music concert
- Bought a book in a shop
- Volunteered for a local group
sensitive_item: Driven a car after drinking alcohol
treatment: {factor: list_group, level: treatment}对照陈述要选那些对大多数受访者来说既不全真、也不全假的。如果每一条陈述都符合、或者没有一条符合某位受访者,计数就会暴露敏感问题的答案,这个设计也就失效了。
导入已有问卷
potato import 能读取 Qualtrics .qsf、REDCap 数据字典、LimeSurvey .lss、ODK、KoboToolbox、SurveyCTO 或 Ona 使用的 XLSForm、SurveyJS JSON、Beiwe 问卷,以及 Network Canvas 协议。题目、页面和显示/隐藏逻辑会转换为 Potato 的问卷页面和规则。这些文件都不含回答数据,所以导入迁移的是问卷本身,已收集的数据留在原处。
potato import -i my-survey.qsf -o survey-project/与 Qualtrics、REDCap、ODK 和 Network Canvas 的分工
这些工具各自面向不同的使用场景。Qualtrics 是托管式商业调查平台,通常由大学统一购买许可。REDCap 面向联盟成员机构的临床与研究数据库。ODK 和 KoboToolbox 在野外用移动设备离线采集数据,Network Canvas 用于访员辅助的网络访谈。Potato 在你自己的服务器上运行网络问卷,并额外提供实验条件、敏感问题设计、同一会话中的标注任务、Prolific 和 SONA 招募,以及统一的导出。
常见问题
不用 Qualtrics,能运行带随机分配的调查实验吗?
能。conditions 以跨单元格平衡、随机或轮转的方式,给每位受访者分配被试间设计中的一个单元格,页面重新加载后受访者仍留在原单元格。页面和题目可以根据所分配的条件做判断,CSV 导出会把每位受访者的条件写入 participants.csv。
如何在线搭建列表实验?
使用一道 list_experiment 题,包含一个对照列表和一个敏感条目,再加一个两水平的条件来决定谁能看到敏感条目。survey_experiments 导出用均值差法估计敏感条目的发生率,并给出标准误和 95% 区间。随机化回答题的用法相同。
为满足 IRB 或 GDPR 的要求,问卷回答能留在我自己的服务器上吗?
能。Potato 运行在你选择的服务器上,回答写入这台服务器的磁盘。除非你配置了外部服务,例如托管的 AI 端点,否则不会向任何第三方发送数据。某套具体部署是否满足你的 IRB 或 GDPR 要求,由你所在的机构决定。
能在网络问卷中用提名生成器收集自我中心网络数据吗?
能。一道 ego_network 题在同一个问卷页面上依次运行各个环节,包括提名生成器、关于每位被提名者的问题、这些人之间的关系,以及在图上摆放位置。ego_network 导出写出 ego、alter 和 edge 三张表,并为每个网络写出一个 GraphML 文件;除非设置 export_names=true,否则不包含姓名。