Skip to content
Back to skills

Questionnaire Design

ASecurity

问卷设计——把调研目标拆成假设再落到题目,定题型、题序、跳转,改掉诱导、双重提问,做预测试并粗算样本量。当用户说「帮我设计一份问卷」「这道题有没有问题」「问卷要发多少份」时使用。

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 13, 2026
ai-agentspythongobashtesting

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned October 13, 2026

npx -y skills add po-et/workbuddy-skills --skill questionnaire-design --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Questionnaire Design?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Questionnaire Design
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/po-et-questionnaire-design/badge)](https://www.skillsdirectory.com/skills/po-et-questionnaire-design)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: questionnaire-design
description: "问卷设计——把调研目标拆成假设再落到题目,定题型、题序、跳转,改掉诱导、双重提问,做预测试并粗算样本量。当用户说「帮我设计一份问卷」「这道题有没有问题」「问卷要发多少份」时使用。"
author: Captain
version: 0.1.1
display_name: "问卷设计"
display_name_en: "Questionnaire Design"
description_zh: "从调研目标推出假设、从假设推出题目;选单选、多选、量表还是开放题;排题序、设跳转;逐条排查诱导、双重提问、选项重叠;预测试怎么做、样本量怎么粗算。附 12 题示例问卷与自查清单。不代做统计检验,不替伦理审查下结论。"
description_en: "Design a survey from goal to hypotheses to questions, with question types, order, skip logic, wording fixes, pretesting, rough sample sizing and a 12-question example."
tags:
  - "问卷设计"
  - "调查问卷"
  - "问卷调查"
  - "毕业论文问卷"
  - "满意度调查"
  - "量表"
  - "样本量"
  - "questionnaire"
  - "survey"
examples_zh:
  - "帮我设计一份问卷,想知道员工食堂晚餐要不要延长供应时间"
  - "这道题有没有问题:你对食堂的价格和口味满意吗"
  - "毕业论文的问卷要发多少份才够,全院大概 500 人"
examples_en:
  - "Help me design a survey on whether the staff canteen should serve dinner later"
  - "Is anything wrong with this question: are you satisfied with the canteen's prices and taste?"
  - "How many questionnaires do I need for my thesis if the whole school has about 500 people?"
---

# 问卷设计

定位一句话:**每道题都要能指回一条假设;指不回去的题,收得再多也是噪音。**

## 何时使用

员工或用户满意度调查、毕业论文问卷、活动反馈、需求摸底;手里有一份问卷想挑毛病;不知道该发多少份。用户这样说时用本技能:

- 「帮我设计一份问卷,想知道员工食堂晚餐要不要延长供应时间」→ 先交「决策—假设—空表」,确认后再出题
- 「这道题有没有问题:你对食堂的价格和口味满意吗」→ 逐题给「原题 → 问题所在 → 改法」
- 「毕业论文的问卷要发多少份才够,全院大概 500 人」→ 跑样本量脚本,写清前提
- 「帮我看看这份满意度问卷哪里不对」→ 逐题审,不整卷重写
- 「问卷写好了,预测试怎么做」→ 按预测试步骤安排

不适用:

- 要知道「为什么、怎么想的、卡在哪一步」:先做几场访谈把选项找全,转访谈提纲(interview-outline);问卷只答「有多少、占多大比例」。
- 显著性检验、回归建模、写分析结论:不做,分析方法请与导师或统计咨询确认;可以先把「每条假设看哪张表」写清。
- 测心理状况、做诊断的量表:不自编,用已发表并验证过的量表,并遵守其使用许可。

## 先判断:这件事该不该用问卷

- 适合:要知道「有多少人、占多大比例、哪一组更高」,也就是量的问题。
- 不适合:要知道「为什么、怎么想的、卡在哪一步」——先做几场访谈把选项找全,再出问卷(见 访谈提纲 interview-outline)。
- 动笔前写下三句话,写不出就先别出题:① 这份问卷服务哪个决策(例:食堂晚餐要不要从 19:00 延到 20:30);② 谁来答、一共多少人、怎么触达他们;③ 结果是 A 你做什么、是 B 你做什么——两种结果做的事一样,这份问卷就不必发。

## 流程:目标 → 假设 → 题目 → 题型 → 题序

```
第 1 步 写假设:把决策拆成 2–4 条能被数据推翻的判断
  H1 晚餐需求主要来自每周加班两天以上的人
  H2 不来食堂吃晚饭的主因是关门早,不是口味或价格
  H3 延长后每天来吃的人够覆盖成本(盈亏线由行政自己算)
第 2 步 先画空表:为每条假设画出结论要用的表,如「加班天数 × 预计就餐次数」交叉表;
  表里每个行列变量对应一道题,没进任何表的题删掉
第 3 步 选题型
  单选:选项互斥且穷尽,末尾给「其他(请注明)」或「不适用」
  多选:限定「最多选 2 项」,否则人人全选,没有区分度
  量表:五级或七级,每个刻度都写文字,全卷方向一致,另设「不了解,不评价」
  频率:必须带时间窗,问「过去 4 周几次」,不问「经常/偶尔」
  排序:不超过 5 项,再多就改问「最重要的一项」
  开放:全卷 1–2 道、放最后、选填;要统计的内容别用开放题收
  敏感:收入、健康这类给区间不问精确数,加「不便回答」,放到最后
第 4 步 排题序:筛选题 → 好答的行为题 → 评价题 → 意向题 → 背景信息 → 开放题;
  先问总体再问细项;部门、原因这类选项可随机排序,「其他」固定在最后,量表选项不随机
第 5 步 设跳转:画跳转图,每条路径从头走到尾,不该答的人看不到,该答的人不会被跳过
第 6 步 写开头:三句话说清谁在做、结果用来做什么、大约几分钟;匿名与否照实写,承诺的时长要守住
```

出完题,逐题过一遍这张清单:

```
□ 每题都标得出服务哪条假设或哪个分组变量
□ 一题只问一件事:题干里有「和」「及」「或」的逐个复查
□ 题干没有褒贬词,没有「大家都说」「你是否同意……很重要」
□ 选项互斥且穷尽,数字区间不重叠(1–4/5–8,不是 1–5/5–10)
□ 频率和数量题都带时间窗;量表每个刻度都有文字、全卷方向一致
□ 敏感题和背景题放最后,没有收集用不上的个人信息
□ 每条跳转路径都实际走过一遍,预测试用时不超过开头承诺的时长
```

## 预测试与样本量粗算

预测试:找 5–10 位目标人群(经验值),不找参与出题的人;请对方边读边说「这题在问什么、选哪个、为什么犹豫」。记下用时、卡住的题、理解与原意不同的词、几乎人人选同一项的题;改完再测 2–3 人。正式发放后先看前 20 份:成片空白的题、「其他」里反复出现的同一答案(说明漏了选项)。以手机作答为主时,题干不超过两行、矩阵题不超过五行(经验值),否则中途放弃的人会明显变多。

样本量:比例类结论,95% 置信、按最保守的 p=0.5 算,误差 ±10% 约 97 份,±5% 约 385 份,±3% 约 1068 份。总体只有几百人要做有限总体修正;发放量 = 需要份数 ÷ 预计回收率。脚本会检查参数是否合理(误差写成 5 而不是 0.05、回收率超过 100% 都会被拦下并说明怎么改):

```bash
python3 scripts/sample_size.py --margin 0.05 --population 500 --response-rate 0.3
python3 scripts/sample_size.py --compare 100 100     # 两组比较:差多少以内可能只是抽样误差
```

第一条的输出(本机实测):

```
前提:置信水平 95%(z=1.96),预估比例 p=0.5,允许误差 ±5%
总体很大时需要:385 份
总体 500 人(有限总体修正):218 份
预计回收率 30%:至少发放 725 份
注意:要发 725 份,超过总体 500 人。可以全员发放(普查),或放宽允许误差,或想办法提高回收率
提醒:公式只对随机或接近随机的样本成立;方便样本份数再多也修不了偏差,报告里只能写「本次填答者中」
```

分组比较:每个要单独下结论的组各按公式算;两组各 100 份时,相差不到约 14 个百分点就可能只是抽样误差。公式只对随机或接近随机的样本成立;朋友圈转发、自愿填写的方便样本,份数再多也修不了偏差,报告里只能写「本次填答者中」,不能写「全体员工中」。回收后先剔除用时明显过短、整页都选同一项的问卷,剔除规则发放前写好,别看了结果再定。

## 信息不全或出错时

| 情况 | 怎么处理 | 对用户说的话(模板) |
|---|---|---|
| 只说「帮我出一份问卷」,没说决策、对象、规模 | 只问三个:服务哪个决策;谁来答、多少人、怎么发;结果是 A、是 B 各做什么。其余按本页默认(五级量表、手机作答、匿名)先定,标 [待确认] | 「先问三件事:这份问卷帮你做什么决定?谁来答、大概多少人、怎么发给他们?结果是 A 你怎么做、是 B 你怎么做?其余我先按常见做法定,标了 [待确认]。」 |
| 两种结果做的事一样 | 指出这份问卷不必发;建议直接决策,或只问真正拿不准的那一题 | 「不管结果是 A 还是 B 你都打算延长供应,那这份问卷可以不发;想知道延到几点,只问离开时间一题就够。」 |
| 题目自相矛盾(选项重叠、频率题没有时间窗、跳转指向不存在的题) | 指出矛盾在哪,给两种改法 | 「Q4 的选项 1–5 次和 5–10 次在 5 次上重叠。两种改法:改成 1–4、5–8;或者改成填空,填过去 4 周的次数。」 |
| 格式不对(截图看不清、题号乱、只有题干没有选项) | 请贴文字版;或按读到的内容逐题复述,请用户确认后再改 | 「截图里 Q7–Q9 看不清,麻烦贴文字版;或者我先把读到的内容复述一遍,你确认了我再改。」 |
| 样本量参数不合理(误差写成 5、回收率 130%、要发的份数比总体还多) | 脚本会拦下并说明;给两种理解让用户选 | 「误差写的是 5,你是想要 ±5%(写 0.05)吗?另外算出来要发 725 份、全院只有 500 人:可以全员发放,或者把误差放宽。」 |
| 超出范围(显著性检验、建模、诊断量表、伦理审批判断) | 说明不做,转导师、统计咨询或伦理委员会 | 「显著性检验和建模不在我这里做,分析方法请和导师确认;我先把每条假设看哪张表写清楚。」 |
| 时间紧,只要最小可用版 | 最小版:一句决策 + 两条假设 + 六到九道题(筛选 1、行为 2–3、评价 1–2、背景 1–2、选填开放 1)+ 三句开头;预测试不省,至少找 5 位目标人群 | 「先给最小可用版:两条假设、九道题以内,外加三句开头说明;预测试不能省,找 5 位目标人群试答一遍再发。」 |
| 用户坚持越界(要诱导题、要代填或刷份数、要收身份证号) | 守住边界,给能做的替代 | 「诱导题收回来的数说服不了任何人,我帮你改成平衡量表;代填和刷份数我不做;身份证号用不上,不收。」 |
| 方便样本却想推到全体 | 结论措辞改成「本次填答者中」 | 「朋友圈转发收来的问卷,份数再多也修不了偏差,报告里只能写『本次填答者中』。」 |

脚本报错对照(`python3 scripts/sample_size.py`):

| 退出码 / 报错 | 原因 | 修正办法 |
|---|---|---|
| 0,输出份数 | 正常 | 把前提(置信水平、误差、回收率)一起写进交付物 |
| 1,「允许误差应在 0 到 1 之间…」 | 把 ±5% 写成了 5,或比例、回收率超出 0–1 | 写 0.05 或 5% |
| 1,「置信水平只支持 90、95、99」 | 写了别的置信水平 | 改用 90、95 或 99 |
| 1,「总体人数应是正整数」「不认识的参数」 | 人数写成小数,或参数名拼错 | 看 python3 scripts/sample_size.py -h |
| 0,但提示「要发 X 份,超过总体 N 人」 | 回收率低、误差要求严 | 全员发放,或放宽误差,或提高回收率 |
| 130,「已中断」 | 手动按了 Ctrl+C | 重新运行 |
| 环境里跑不了脚本 | 只有对话、没有终端 | 手算:n0 = z² × p(1−p) ÷ e²;n = n0 ÷ (1 + (n0 − 1) ÷ N);发放量 = n ÷ 回收率,都向上取整 |

## 输出契约

新设计一份问卷时,交付物按下面的顺序,每次都一样:

1. **决策—假设—空表三件套**:一句决策、2–4 条假设、每条假设对应的空表;用户确认后再出题。
2. **问卷开头说明**:三句话,谁在做、结果用来做什么、大约几分钟;匿名与否照实写。
3. **题目清单**:每题标【服务的假设或分组变量】、题型与跳转规则。
4. **预测试计划与样本量**:写出算式和前提(置信水平、误差、总体、回收率),用户能自己重算。
5. **分析计划**:每条假设看哪张表、什么结果算支持、什么结果算推翻,发放前就写好。
6. **待确认清单**:汇总所有 [待补]、[待确认]。

改别人的问卷时:逐题交「原题 → 问题所在 → 改法」对照表,不整卷重写;最后同样附待确认清单。

占位符规则:[待补] = 只有用户知道的事实(总体人数、发放渠道、盈亏线、承诺时长);[待确认] = 我按本页常见做法先定的默认值(量表级数、题序、跳转)。数字写出算法与前提,不写没有来源的比例。

交付前自检(每条都答「是」才交):

- [ ] 决策—假设—空表已经用户确认,或已标明「待确认后再出题」?
- [ ] 上面的逐题自查清单 7 条都打了勾?
- [ ] 样本量写了算式和前提,用户能自己重算?
- [ ] 分析计划写了「什么结果算支持、什么结果算推翻」?
- [ ] 没有收集用不上的个人信息,敏感题放在最后并给了「不便回答」?
- [ ] 所有 [待补]、[待确认] 都进了待确认清单?

## 示例

(示例,场景虚构)

> 用户:这道题有没有问题:「你对食堂的价格和口味满意吗?」○满意 ○不满意

助手:信息够用,不追问,直接交对照表;这题服务哪条假设,用户没说,标 [待确认]。

| 原题 | 问题所在 | 改法 |
|---|---|---|
| 你对食堂的价格和口味满意吗?○满意 ○不满意 | ① 双重提问:价格满意、口味不满意的人没法答;② 只有两档,没有中间项;③ 没吃过的人被迫乱选 | 拆成一道矩阵题:「你对食堂晚餐以下各项的满意程度?(每行单选)」价格/口味 × 非常不满意/不太满意/一般/比较满意/非常满意/没吃过,不评价 |

- 放的位置:评价题,放在「过去 4 周在食堂吃晚饭几次」这类行为题之后。
- 待确认:这题服务哪条假设 [待确认]——如果决策只关心供应时间,价格和口味两行可以都删,改问「以下改进哪一项对你最重要」。

完整示例(一句需求 → 决策—假设—空表 → 12 题问卷 → 样本量 → 分析计划)见 [examples/canteen-dinner-survey.md](examples/canteen-dinner-survey.md)。

## 常见问题(FAQ)

**问卷发多少份才够?** 看结论要多精确:95% 置信下误差 ±10% 约 97 份、±5% 约 385 份;总体只有几百人时用脚本做有限总体修正,再除以回收率得到发放量。

**朋友圈转发收了几百份,能代表全体吗?** 不能。方便样本份数再多也修不了偏差,报告里只能写「本次填答者中」。

**五级量表还是七级?** 都可以;每个刻度都写文字、全卷方向一致,另设「不了解,不评价」。

**能不能多加几道题「顺便问问」?** 先看它进不进得了某张空表,进不了就删;题多了中途放弃的人会变多。

**「推出后你会来吗」这种意向题能当预测用吗?** 意向普遍高估实际行为,只当上限看,结论靠「过去 4 周几次」这类行为题。

**能帮我发问卷、代填或者凑份数吗?** 不能。不代发、不代填、不刷份数;交付的是问卷文本和计划,由你发布。

**能帮我做显著性检验吗?** 不做统计检验与建模;分析方法请与导师确认。我可以把每条假设看哪张表、怎样算支持写清楚。

**问卷需要伦理审批吗?** 面向学生、患者、未成年人或涉及健康、收入等敏感信息的,是否需要审批与知情同意,以学校或单位规定为准,问导师或伦理委员会。

## 常见错误(反模式)

每条:错误做法 → 为什么错 → 正确做法。

1. **诱导**:「新食堂品种这么丰富,你满意吗?」→ 题干替人表了态,答案往一边倒 → 「你对食堂晚餐品种的满意程度?」配平衡量表。
2. **双重提问**:「你对价格和口味满意吗?」→ 一个满意一个不满意的人没法答 → 拆成两行。
3. **预设前提**:没筛选就问「你每周在食堂吃几次晚饭」→ 没吃过的人被迫乱选 → 先问吃没吃过,或给「0 次」。
4. **模糊频率**:「你经常加班吗?」→「经常」每个人理解不同,没法比较 → 「过去 4 周,19:00 以后还在公司的天数?」
5. **否定句**:「你是否不同意取消晚餐?」→ 双重否定容易读反 → 改成正向陈述,双重否定一律删。
6. **选项重叠**:年龄「18–25/25–30」→ 25 岁的人两个都能选 → 「18–24/25–29」。
7. **意向当事实**:「推出后你会来吗」的「会」被当成来客数 → 意向普遍高估实际行为 → 意向只当上限,结论靠行为题。
8. **题目太多**:每题都「顺便问问」→ 答题的人中途放弃,收回来的也用不上 → 回到第 2 步的空表,没进表的删掉。
9. **开放题太多**:五道开放题 → 收回来没人读得完 → 能列出选项的都改成选择题。
10. **看了结果再定剔除规则** → 等于按想要的结论挑数据 → 发放前写好剔除规则(用时明显过短、整页选同一项)。
11. **不做预测试就正式发** → 理解偏差和卡住的题,要等收回来才发现 → 找 5–10 位目标人群边读边说,改完再测 2–3 人。

## 边界与不做什么

- 不做统计检验与建模,不替你下「显著」的结论;论文里的分析方法请与导师确认。
- 面向学生、患者、未成年人或涉及健康、收入等敏感信息的调查,要不要伦理审批与知情同意,以学校或单位规定为准,问导师或伦理委员会。
- 不自编测评心理状况或用于诊断的量表;需要标准化量表时用已发表并验证过的版本,并遵守其使用许可。
- 不代发、不代填、不刷份数;不收集身份证号、手机号这类用不上的个人信息,抽奖要留联系方式的,单独收集、与答卷分开存放。

Files in this skill

  • SKILL.md18.2 KB
  • examples/canteen-dinner-survey.md6.5 KB
  • scripts/sample_size.py6.5 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.