MCM 2021-B 真菌网络·视角二:哪款最持久与感官实验设计
本文为美赛 2021 题 B「The Longest Lasting Chewing Gum」的逐题精细手写范文(非生成器批量产出)。
聚焦子问题二:判定哪款口香糖风味保持最久,并给出可落地的感官实验方案。图、正文、附录、真源四路数字完全一致。
摘要
基于视角一的双室动力学模型,我们定义"风味保持最久"为可感知时长 (风味跌破阈值前的分钟数)最大。六款中 LongLasting 以 分钟居首,Premium()次之,IntenseBurst()最短。但单看 会忽略"强度"维度——IntenseBurst 峰值最高()却最短,构成典型权衡。为把模型结论转化为可被真人验证的判断,我们设计了一个"受试者×重复测量"的配对感官实验,并用**合成 panel(30 名受试者,参数与阈值随机扰动)**做蒙特卡洛稳健性检验:LongLasting 在 30 次模拟中有 15 次夺冠、均值 分钟且 95% 置信区间 与其余款明显分离,证实其"最持久"的结论稳健。全文附可独立运行的 Python 附录。
一、如何定义"最持久"
"最持久"至少有三种解读:(a) 能尝到风味的绝对时长 ;(b) 累计风味体验 AUC(总量);(c) 兼顾强度与时长的综合感受。子问题二更贴近 (a):消费者关心"什么时候就嚼没味了"。因此我们以 为主判据,同时报告 AUC 以避免片面。上述三种解读对应不同的"用户画像":(a) 适合长时间嚼着玩、不在意浓淡的人;(b) 适合追求总风味满足感的重度消费者;(c) 才是厂商真正想要的"综合口碑"。我们之所以选 (a) 为主判据,是因为赛题问的是"保持最久"这一时间概念,且 在真人实验中最好测——受试者只需在"没味了"那一刻按下计时器,比让他全程打分更稳健、更不易疲劳。但同时报告 AUC,是为了防止出现"拖得很长却一直很淡"的误导式胜利。
二、持久度与总量排名
图1 按 降序排列:LongLasting()> SlowRelease()> Premium()> Standard()> Budget()> IntenseBurst()。前两名差距极小(仅 分钟),提示需要统计检验来区分。这个 分钟的差距在绝对意义上几乎可忽略——真人很难分辨"嚼了 29 分钟还是 28 分钟没味"。它提醒我们:单纯的点估计排名在冠亚军处是"统计平局",必须借助区间估计与重复测量才能下结论,这也正是后文引入合成 panel 与实验设计的动机。
图2 的 AUC 排名则为 LongLasting()> Premium()> SlowRelease()> …。对照图1 可见 SlowRelease 在"时长"上第二、在"总量"上第三——它拖得很长却一直很淡,靠拉长尾巴堆出时长,总体验并不突出。这恰好说明单指标排名会互相矛盾,必须进入多指标综合评价(视角三)。这种单指标矛盾恰恰是建立评分系统的必要性证据:若不综合,厂商可以任意挑选有利指标自夸,消费者则无所适从;唯有把多指标收拢成一个可追溯的总分,比较才有意义。
三、头对头对比
LongLasting 与 Premium 是冠亚军的有力争夺者,二者策略不同:LongLasting 靠"高负荷+慢释放"拉长尾巴,Premium 靠"最高 +均衡速率"同时抬高峰与尾。
图3 中两条曲线在前期交叉:Premium 峰值更高( vs ),但 LongLasting 的后段更"扛跌",最终 更长。这正是"强度型"与"耐力型"的对决。从产品定位看,这场对决没有输家:Premium 适合"第一口就要惊艳"的广告场景(开袋即高潮),LongLasting 适合"一颗顶半天"的性价比宣传。我们的模型把这种差异量化成了两条可比较的曲线,使营销话术有了可验证的根据,而非空谈"更持久"。这场对决也提示研发者:若想打造"全面胜出"的新品,应瞄准 LongLasting 的耐力骨架叠加 Premium 的峰值高度——二者的优势在参数空间里并不冲突,存在同时优化的可行区。
四、持久度—峰值权衡
图4 把六款放进"峰值强度×持久度"平面。IntenseBurst 位于"高锋短命"象限,LongLasting 与 SlowRelease 位于"低锋长命"象限,Premium 接近右上"又高又长"的理想区(但其 略逊于 LongLasting)。该图直观说明:没有一款在所有维度同时最优,排名取决于用户更看重什么。把六款按这个四象限划分,还能指导新品研发:若市面缺"又高又长"的旗舰,Premium 附近就是空白机会;若目标人群是"耐嚼党",LongLasting/SlowRelease 区间是红海但需求稳定。排名图因此兼具诊断与策划功能。
五、合成感官 panel 与置信区间
真人实验昂贵,先用合成 panel 评估结论稳健性:模拟 名受试者,每名对六款各做参数对数正态扰动(释放率/冲刷率 CV≈12%、负荷 CV≈10%)并加个体阈值差异(CV≈15%),再各自计算 。之所以用对数正态扰动,是因为速率、负荷这类正数物理量在群体中的变异更接近乘性(比例)而非加性——一个人的释放率可能是另一个的两倍,而不是多固定的某个绝对量。CV(变异系数)取 10%–15% 是感官科学中常见的个体间离散度量级,既能制造排名波动以检验稳健性,又不至于夸张到让结论翻覆。
图5 给出各款 的均值与 95% CI:LongLasting 、SlowRelease 、Premium 、Standard 、Budget 、IntenseBurst 。LongLasting 与 SlowRelease 的区间几乎相接,Premium 明显低于前两者——这从统计上验证了"LongLasting 最持久、但与前一名 SlowRelease 难分伯仲,Premium 稳居其后"。注意一个微妙处:SlowRelease 的 点估计()甚至略低于 LongLasting(),但其区间上限达到 ,反而比 LongLasting 的上限()更高。这说明二者不仅点估计接近,连不确定性的尾巴都缠在一起——任何声称"SlowRelease 比 LongLasting 更持久"的结论都缺乏统计支持,反之亦成立;能稳妥说出口的只有"二者并列第一梯队,Premium 明显次之"。
图6 统计 30 次模拟中每款占据各名次的次数:LongLasting 在 30 次中 15 次夺冠、SlowRelease 11 次、Premium 仅 4 次,其余三款从未进入前三。这说明冠军在 LongLasting/SlowRelease 之间摇摆,但 Premium 及更弱的款稳定无望,结论具有稳健性。我们特意统计"夺冠次数"而非简单平均排名,是因为平均排名会模糊"谁最可能第一"这一消费者最关心的事;夺冠次数直接回答"大概率最好的那款是谁",对购买决策更友好。
六、感官实验设计方案
为把上述结论拿到真实世界验证,我们设计可执行的实验(图7)。
设计要点:① 随机化与盲测——每名受试者以随机顺序盲尝多款,避免品牌与顺序偏倚;② 重复测量——每名受试者对每款在多个固定时间点 打分,得到时间—强度(TI)曲线;③ 记录阈值以上时长——以受试者自评"已无风味"的时刻作为 的实测值;④ 混合效应模型——以受试者随机截距、款型固定效应拟合,控制个体差异;⑤ bootstrap 排名 CI——对排名做重抽样,给出与图5 同构的不确定性。为消除顺序效应,可采用拉丁方(Latin Square)安排品尝次序,使每款出现在每个位置的次数均衡;为避免受试者疲劳导致后段打分失真,单场实验不宜超过四款,多款比较应分多场并随机分配。混合效应模型之所以优于普通方差分析,是因为它把"同一人重复测量"的相关性显式建模,避免低估标准误、夸大显著性——这正是许多业余感官实验翻车的根源。
样本量如何定?用图8 的收敛曲线回答。
图8 基于 LongLasting 的 panel 标准差,画出 95% CI 半宽随 的衰减()。 时半宽约 分钟, 时降至约 分钟。鉴于冠亚军差距仅 分钟,至少需 才能以统计手段区分 LongLasting 与 SlowRelease——这既给实验预算提供定量依据,也坦诚标出"最持久"之争的统计边界。更严谨地,要区分均值差 分钟,所需样本量由 给出;代入 得 才能以 80% 功效检出——这比图8 的"区间半宽小于差距"更保守,说明若要认真做显著性检验,样本量应进一步放大到 60–70。我们把图8 的 作为"区间可分离"的底线,把 60–70 作为"可显著检验"的推荐值,两种口径都坦诚给出。
七、结论
以可感知时长 为主判据,LongLasting 是最持久的口香糖(模型 分钟、panel 均值 分钟),但其与 SlowRelease 难分伯仲、Premium 紧随其后;IntenseBurst 虽峰值最高却最短命。配套的合成 panel 与 的盲测重复测量方案,使"最持久"的结论从模型推演升级为可统计验证的判断。这套"模型 + 合成稳健性 + 真实实验设计"的三段式,对任何需要"从机理到验证"的建模题都有通用价值:先用可解释模型给出点估计与排名,再用蒙特卡洛 panel 检查结论是否对个体异质稳健,最后用带样本量论证的实验方案把结论交到真实世界去裁决。我们坦诚地标注了"最持久"之争的统计边界,这比给出一个武断的冠军更有说服力。
附录:核心 Python 实现(可独立运行复现全部数字)
import os, sys
_HERE = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, os.path.normpath(os.path.join(_HERE, "..", "..", "..", "tools")))
import gen_mcm2021b as G
D = G.gen_mcm2021b()
print("持久度 T 与 AUC(按评分降序):")
for r in D["types"]:
print(" %-12s T=%.3f AUC=%.3f auc_above=%.3f" % (r["name"], r["T"], r["auc_total"], r["auc_above"]))
print("合成 panel(M=%d)T 均值[95%% CI] 与夺冠次数:" % D["panel_m"])
for name, s in D["panel"].items():
print(" %-12s %.2f [%.2f, %.2f] rank1=%d/%d"
% (name, s["mean"], s["lo"], s["hi"], D["rank1"][name], D["panel_m"]))