5D Library › 行动的经典与统计力学 · English

第八章 实践与预注册试验

第一部分 四步势垒核查表

前七章可以归结为四个可以每周记录的数字。它们不测量「意志力」,而测量让人开始和坚持下去的外部条件。

  1. 启动摩擦。 从坐下(或打开电脑)到第一个有效动作所用的分钟数,取一周中位数。对应第二章的静摩擦:启动所需的力。
  2. 势垒高度。 在第一个有效动作之前需要完成的准备步骤或决定的数目(找资料、选题目、开软件、决定从哪里开始)。对应第三章的 ΔU\Delta U。
  3. 外部棘轮。 每周固定日期期待看到你的成果的人数(同伴、学生、合作者)。对应第三、五章的持续外部拉力与同伴耦合。
  4. 反馈延迟。 从完成一项工作到第一次看到可见反馈所经过的天数。对应第二章的「抓地力」:努力能否尽快转化为可见的进展。

推导

把核查用于一周的记录。记录是虚构的;任何人都可以在笔记本或表格里记下同样的几列。目标值是作者提出的初始值,不是标准,应根据自己的记录调整。

# Four-step barrier audit for one person (or one team) over one week.
# The log is invented here; anyone can keep the same columns in a notebook or a spreadsheet.
# Targets are the author's starting values, not norms; adjust them to your own records.
from statistics import median

# each working session: (minutes from sitting down to the first useful action,
#                         separate set-up steps or decisions before that action)
sessions = [(14, 4), (3, 1), (22, 5), (6, 2), (2, 1), (18, 4), (9, 3)]
watchers = 2          # people who expect to see your output on a fixed day each week
feedback_days = [6, 6, 7]   # days from finishing a piece of work to the first visible response to it

start = median(s[0] for s in sessions)
steps = median(s[1] for s in sessions)
delay = median(feedback_days)
checks = [("1 start-up friction: median minutes to first action", start, start <= 5, "<= 5 min"),
          ("2 barrier height: median set-up steps before it", steps, steps <= 2, "<= 2"),
          ("3 outside ratchet: people expecting output weekly", watchers, watchers >= 2, ">= 2"),
          ("4 feedback delay: median days to a visible result", delay, delay <= 2, "<= 2 days")]
for name, value, ok, target in checks:
    print(f"{name:52s} {value:>5}  target {target:9s} {'OK' if ok else 'ACT'}")
worst = [c[0] for c in checks if not c[2]]
print(f"{len(worst)} of 4 need action; change one lever at a time and keep logging, so the effect can be seen")
# 1 start-up friction: median minutes to first action      9  target <= 5 min  ACT
# 2 barrier height: median set-up steps before it          3  target <= 2      ACT
# 3 outside ratchet: people expecting output weekly        2  target >= 2      OK
# 4 feedback delay: median days to a visible result        6  target <= 2 days ACT
# 3 of 4 need action; change one lever at a time and keep logging, so the effect can be seen

这一周有三项需要处理。处理的顺序有讲究:模型提示,降低势垒(例如前一天晚上把材料摆好、把第一步写成具体动作)会同时缩短开始与复发的时间,所以应当与外部棘轮搭配使用(第三章),这一周已经达标的这一项要保持住;反馈延迟可以通过把工作切成更小、可以当天展示的单元来缩短。每次只改变一个杠杆,并继续记录,才能看出哪一个起了作用。

注

这份核查表不是心理测评,不能诊断任何状况。如果启动困难持续存在,并伴有情绪低落、兴趣丧失、睡眠或注意力的明显问题,请寻求专业评估(见序言开头的说明)。

第二部分 预注册试验

问题

在一门 30 天的在线课程中,与独自学习相比,「完成两次有记录的同伴辅导才能解锁下一阶段」的规则,能否提高 30 天完课率与盲评期末测验成绩?

第五章已经说明,原先设想的「辅导两名同伴达标才能解锁」在封闭班级里会造成阻塞,因此试验采用以「辅导时段」计数的可行版本。

设计

要素 规定
受试者 18 岁以上、自愿报名一门 30 天在线课程的成年人;课程内容、价格和日程在两组完全相同;签署知情同意
设计 个体随机、两组平行、1:1 分配;两组各自组成独立的学习社群,避免互相影响;B 组的辅导配对在组内随机产生
A 组(对照) 独自学习:同样的材料、同样的每日提醒、同样的组内答疑区;通过阶段小测即解锁下一阶段
B 组(干预) 在 A 组全部内容之外:每通过一个阶段,须与两位不同的同组同学各完成一次至少 20 分钟、有记录的辅导时段(由被辅导者确认),才解锁下一阶段;48 小时内找不到可辅导的同学则自动解锁
共同主要结局 (1)30 天完课率:30 天内通过全部四个阶段小测的比例;(2)第 30 天期末测验成绩:所有随机分组者无论是否完课均受邀参加,题目事先不公开,由不知道分组的评分者评分
次要结局 第 60 天保持测验;学习时长(平台记录);退出时间;辅导时段数;满意度;不良感受(压力、负担自评)
分析 意向治疗分析;完课率比较率差及 97.5% 置信区间;测验成绩用含辅导小组随机效应的混合模型;缺失成绩用多重插补,并作敏感性分析
盲法 受试者和辅导者无法设盲(他们必然知道自己是否在辅导);评分者与统计分析者不知道分组

注

原先设想写作「双盲」。在这项试验中,受试者不可能不知道自己是否被要求辅导同伴,因此无法做到双盲;能做到的是评估者盲法(评分者不知道分组)与分析者盲法(分析时组别以代码表示)。本书据此修改。

样本量

推导

# Sample size for two co-primary outcomes, each tested at two-sided alpha = 0.025 (so the pair keeps 0.05):
#   (1) completion of the 30-day course, a proportion;  (2) blind-marked final test score, standardised.
# Learners in the teach-to-unlock arm tutor each other in small groups, so their outcomes are correlated:
# inflate by the design effect 1 + (m - 1) * ICC.
import math
from statistics import NormalDist
N = NormalDist()

def n_two_props(p1, p2, alpha, power):
    za, zb = N.inv_cdf(1 - alpha / 2), N.inv_cdf(power)
    pbar = (p1 + p2) / 2
    num = za * math.sqrt(2 * pbar * (1 - pbar)) + zb * math.sqrt(p1 * (1 - p1) + p2 * (1 - p2))
    return math.ceil((num / (p2 - p1)) ** 2)

def n_two_means(d, alpha, power):
    za, zb = N.inv_cdf(1 - alpha / 2), N.inv_cdf(power)
    return math.ceil(2 * ((za + zb) / d) ** 2)

deff = 1 + (3 - 1) * 0.05            # groups of 3, intraclass correlation 0.05 (assumed)
for p1, p2 in ((0.40, 0.52), (0.40, 0.55)):
    n = n_two_props(p1, p2, 0.025, 0.90)
    print(f"completion {100 * p1:.0f} % -> {100 * p2:.0f} %: {n} per arm, {math.ceil(n * deff)} with design effect {deff:.2f}")
for d in (0.30, 0.35):
    n = n_two_means(d, 0.025, 0.90)
    print(f"test score d = {d:.2f}: {n} per arm, {math.ceil(n * deff)} with design effect")
need = max(math.ceil(n_two_props(0.40, 0.52, 0.025, 0.90) * deff), math.ceil(n_two_means(0.30, 0.025, 0.90) * deff))
print(f"plan: {need} randomised per arm ({2 * need} in all); everyone is tested on day 30, finished or not")
# completion 40 % -> 52 %: 426 per arm, 469 with design effect 1.10
# completion 40 % -> 55 %: 273 per arm, 301 with design effect 1.10
# test score d = 0.30: 276 per arm, 304 with design effect
# test score d = 0.35: 203 per arm, 224 with design effect
# plan: 469 randomised per arm (938 in all); everyone is tested on day 30, finished or not

两个共同主要结局各以双侧 α = 0.025 检验,使总的一类错误率不超过 0.05。按完课率从 40% 提高到 52%、把握度 90% 计算,每组需要 426 人;B 组学员在三人辅导小组中互相影响,按组内相关 0.05 计入设计效应后为每组 469 人。测验成绩按 0.30 个标准差的差异计算需要的人数更少。方案计划每组随机分配 469 人,共 938 人。40% 的基线完课率与组内相关都是假设,将在前 100 名受试者的内部预试验中核对;如果基线完课率明显不同,正式试验前重新计算样本量。

判定规则

推导

# Decision rule, fixed before any data are seen. Each co-primary outcome is judged on its own
# 97.5 % confidence interval (two-sided alpha 0.025 each) against its smallest effect worth acting on.
SESOI = {"completion (percentage points)": 10.0, "blind test score (SD units)": 0.25}

def verdict(name, diff, lo, hi):
    s = SESOI[name]
    if lo >= s:
        v = f"benefit of at least {s:g}"
    elif lo > 0:
        v = "benefit; size not shown to reach the threshold"
    elif hi < 0:
        v = "harm: teach-to-unlock did worse"
    elif lo >= -s and hi <= s:
        v = "no difference worth acting on"
    else:
        v = "unclear"
    return f"{name:32s} {diff:+6.2f} ({lo:+6.2f} to {hi:+6.2f}): {v}"

# Invented results, only to show how the trial will be reported.
print(verdict("completion (percentage points)", 6.0, -1.5, 13.5))
print(verdict("blind test score (SD units)", 0.31, 0.12, 0.50))
print(verdict("completion (percentage points)", -9.0, -16.0, -2.0))
print("the method is recommended only if neither outcome shows harm and at least one shows benefit")
# completion (percentage points)    +6.00 ( -1.50 to +13.50): unclear
# blind test score (SD units)       +0.31 ( +0.12 to  +0.50): benefit; size not shown to reach the threshold
# completion (percentage points)    -9.00 (-16.00 to  -2.00): harm: teach-to-unlock did worse
# the method is recommended only if neither outcome shows harm and at least one shows benefit

示例结果是编造的,用来事先说明结果将怎样报告。完课率的最小关注差为 10 个百分点,测验成绩为 0.25 个标准差。只有两项结局都没有显示伤害、且至少一项显示获益时,才建议采用这一规则。

这项试验不能说明什么

试验比较的是一个「打包」的干预:B 组学员同时得到了承诺、额外的复述练习与更多的人际接触,试验不能区分这几种成分各自的作用。它只检验一种课程、一种在线形式、一群自愿报名的成年人;结果不能直接推广到中小学生、线下课堂或其他学科。它也不检验任何要求学员招募新学员的规则(见第五章的说明)。

伦理与利益冲突

试验须经独立伦理委员会批准,取得知情同意,并在第一位受试者入组之前登记方案、分析计划和判定规则 (Chan et al. 2013; Nosek et al. 2018)。受试者可以随时退出,退出不影响其继续使用课程材料。报告将遵循 CONSORT 规范,并说明辅导小组造成的聚类 (Campbell et al. 2012)。

利益披露

作者以本书作为其社群认知课程、升维牌卡与 Yafu AI 知识库的底层方法论,因此与本书主题及第八章试验的结果有直接的商业利益关系。本书不推销任何课程、牌卡或产品,也不作任何健康或疗效声称;试验设计为由独立于作者企业的研究人员实施和分析;书中所有代码与研究方案均公开,供任何人检验。为限制这种利益的影响:方案、分析代码和判定规则在入组前公开;无论结果如何,结果、数据和代码都将公开。

参考文献

Campbell, Marion K., Gilda Piaggio, Diana R. Elbourne, and Douglas G. Altman. 2012. “CONSORT 2010 Statement: Extension to Cluster Randomised Trials.” BMJ 345: e5661.
Chan, An-Wen, Jennifer M. Tetzlaff, Douglas G. Altman, et al. 2013. “SPIRIT 2013 Statement: Defining Standard Protocol Items for Clinical Trials.” Annals of Internal Medicine 158 (3): 200–207.
Nosek, Brian A., Charles R. Ebersole, Alexander C. DeHaven, and David T. Mellor. 2018. “The Preregistration Revolution.” Proceedings of the National Academy of Sciences of the USA 115 (11): 2600–2606.

Fan, Y. (2026). Classical and Statistical Mechanics of Human Action: Psychological Inertia, Static Friction Thresholds, Kramers Escape Rate in Double-Well Potentials and Habit Phase Transitions, Read Beside East Asian Philosophy of Practice [行动的经典与统计力学] (Version 1.0.0). 5D Library. https://doi.org/10.5281/zenodo.23738774 · Licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0).