核心结论

研究里的概念,是我们想理解的东西;变量,是数据表里实际记录或算出来的字段;操作定义,则是连接两者的说明书。比如“营养结构”是概念,蛋白质克数是变量,“怎样取得蛋白质克数、用什么单位、缺失时怎么办”属于操作定义。

把一个概念变成数字,并不等于已经把它测准了。真正可用的测量,至少要让不同调查员面对同一种情况时知道怎样填,让分析人员能够从原始记录重新计算,还要诚实说明这把尺子能测什么、不能测什么。

下面的五维营养评分专门为这组虚拟教学文章设置,不是临床诊断工具,也不是经过现实人群验证的通用早餐指数。它只用于演示操作定义怎样进入数据和分析。

同一份早餐,两名调查员不能各凭感觉打分

一份早餐是无糖豆浆、油条和鸡蛋。调查员甲看到油条,填“营养不好”;调查员乙看到豆浆和鸡蛋,填“营养尚可”。两个人都能讲出理由,但研究者拿到这两个标签后,无法判断分歧来自早餐本身,还是来自调查员各自心里的标准。

最直接的修正不是再开会强调“认真判断”,而是把判断拆开。先约定一行数据代表什么:本研究的一行,是一家店在调查时段内能够同时购买的一份常见早餐组合,不是一件单品,也不是某位顾客一周的饮食。然后记录组合包含什么、各自份量是多少、配方从哪里得到,再计算营养值。

这样便有三层数据。第一层是尽量靠近现场的原始记录,如食品名称、份量、价格、店铺和配方来源;第二层是根据原始记录估算或测得的能量、蛋白质、膳食纤维和钠;第三层才是按固定公式产生的分项、总分和“是否低于 6 分”。

三层不能挤在同一列里。为了让后面的数据示例可以直接对应表格,本文会在中文含义后附上代码使用的英文列名:食品原始记录列 food_items 可以保留“油条;无糖豆浆;鸡蛋”,蛋白质食物标记列 has_protein_food 按编码手册填 0 或 1,蛋白质含量列 protein_g 则记录具体克数。文字方便追查原貌,0/1 标记方便按统一规则分组,具体克数保留数量差异。它们描述的是同一份早餐,却不能互相冒充。

每一行还需要一个不会重复的早餐编号,数据列写作 combo_id;同时保留它所属的店铺编号 shop_id。早餐名称可能重复,甚至两家店都叫“经典套餐”,不能拿名称当身份证。后面发现某份记录重复、需要核对照片或回到店铺层级计算时,真正能把材料重新接起来的是这些编号。

为什么不让调查员现场直接填总分?因为一旦评分规则需要调整,只有总分的数据没法重算。若原始份量和营养值仍在,我们可以改正公式、比较新旧版本,也能追查某个异常分数从哪一步产生。保留原始变量,不是表格做得越细越好,而是让关键判断有路可退。

从一份记录到研究结果,中间不能跳步

这项研究的计算链可以写成:

早餐组合与实际份量
        ↓
配方资料、营养数据库或参照测量
        ↓
能量、蛋白质、膳食纤维、钠、食物类别数
        ↓
五个 0—2 分的分项
        ↓
0—10 分总分
        ↓
总分是否低于 6 分

每个箭头都要留下依据。份量是现场称的,还是看菜单图片估的?配方来自店家、营养标签,还是相似食物的数据库?豆浆记为豆类时,使用什么分类表?只有这些信息保留下来,最后的 5 分才不只是一个看似精确的数字。

“0”“没有”“未测”和“缺失”也不能混用。早餐明确不含蔬菜,可以在“是否有蔬菜”这一列填 has_vegetable = 0;调查员没有检查是否含蔬菜,应该记成缺失,而不是 0;店家未提供配方,但团队用参照食物估算了钠,钠可以有数值,同时在“配方是否估算”一列填 recipe_estimated = 1。这几种情况在分析中的可信程度和处理方法不同。

如果把未测都填成 0,错误会沿计算链继续传下去:未测蛋白质被当成真的 0 克,蛋白质分项得到 0,总分被压低,最后失衡比例也可能被推高。软件不会提醒研究者“这个零其实不知道”,因为在软件看来它就是一个合法数字。操作定义的细节因此会进入最终结论,并不只是数据管理员的琐事。

字段还要带单位。protein_g = 14.2 表示整份早餐估计有 14.2 克蛋白质;若另一个人把毫克填进同一列,数值仍能被软件读取,含义却已经错了。单位、允许范围、小数位和特殊编码都应该进入数据字典,第 7 篇会把那张字典完整做出来。

五把尺子的刻度,要写到边界值都不会争论

教学评分包含五个维度,每项 0—2 分,总分 0—10 分。冻结规则如下:

维度2 分1 分0 分
能量300—500 kcal220—299.9 或 500.1—650 kcal低于 220 或高于 650 kcal
蛋白质≥18 g12—17.9 g<12 g
膳食纤维≥6 g3—5.9 g<3 g
≤500 mg500.1—800 mg>800 mg
食物类别数≥4 类3 类1—2 类

表格故意把 500、650 这类边界写清楚。计算时先把原始营养估值保留到规定精度,再按同一顺序计分;不能有人先取整,有人先分类。评分公式也需要版本号。若以后营养专家把蛋白质 2 分线改成 20 克,新规则应当成为新版本,旧数据仍能按旧版复算,而不是悄悄覆盖历史结果。

把五项直接相加,还暗含了两个选择。第一,每个维度最高都是 2 分,相当于暂时给予相同权重;第二,一个维度的高分可以补偿另一个维度的低分。两份早餐可能都得 6 分,一份钠低但蛋白质少,另一份蛋白质多但钠高,结构并不相同。因此总分适合做统一的教学汇总,却不能替代五个分项。论文报告总体比例时,也应当同时展示主要营养指标和分项分布。

手算一份虚拟记录:能量 430 kcal、蛋白质 14.2 g、膳食纤维 2.8 g、钠 760 mg、食物类别 3 类。五项依次得到 2、1、0、1、1 分,总分为 5。按主要规则,它属于“低于 6 分”;在数据表中,这个判断列写作 imbalanced_lt6,用 1 表示“是”。这只是展示公式怎样运行,不代表现实中某种具体搭配一定得到 5 分。

中国居民膳食指南的官方内容为食物多样和合理搭配提供了规范背景,但上表的具体分值和界线是教学团队的研究选择。引用指南不能替代阈值论证。真实研究要说明为何选择这些范围,征求营养专业意见,并检查它们是否适合目标人群和一顿早餐的场景。

能稳定算出 5 分,不等于 5 分一定有意义

人们常把整套评分工具简称为量表,然后笼统地说“这个量表有效”。拆开以后,至少有三个问题。

第一个问题是记录是否稳定。同一份早餐由两名受训调查员独立分类,食品类别和份量是否接近?同一名调查员隔一段时间重新编码,结果会不会大变?如果“是否含明确蛋白质食物”经常因肉馅多少而出现分歧,操作手册就要增加判定例子,而不是等正式调查后把分歧平均掉。

正式采集前的小规模试填通常叫预测试。预测试时最值得保留的,往往正是这些争议记录。比如豆沙包算不算明确蛋白质食物,咸豆花里的少量配菜算不算一类蔬菜。团队应记录原判断、争议原因和最后规则,再让另一批记录按修订后的手册重新编码。若只留下“会议决定”,正式调查员仍然不知道遇到相似边界时怎样处理。

第二个问题是这把尺子是否覆盖了我们声称的概念。五项评分能够反映部分单餐营养结构,却没有测长期饮食、个人需要、食物安全、微量营养素全貌或健康结局。因此,一个 8 分早餐不能被写成“对所有人都健康”,5 分也不是疾病诊断。概念比变量宽时,论文必须把没有覆盖的部分说出来。

第三个问题是观察值离参照值有多远。店家不给配方时,只凭相似餐名估算钠,误差可能比现场称重更大。我们会从六城各取 20 份,共 120 份早餐,做教学性的参照测量比较,并计算蛋白质和钠估值偏差。它能帮助判断部分营养估算是否可靠,却不能替整套 0—10 分完成效度证明,更不能被称作无误差的“金标准”。

前面两个问题在研究方法里有各自的名字:“重复记录是否稳定”常称为信度,“这把尺子有没有测中目标概念”常称为效度。COSMIN 的测量属性资料把信度、效度和测量误差分开讨论,正是因为“每次算得差不多”和“确实测到了目标概念”不是同一件事。一把偏了两公斤的秤可以每次都偏得很稳定;稳定并没有让它自动准确。

实际数据里还要留下质量标记。portion_measured = 0 表示份量没有现场实测,recipe_estimated = 1 表示配方依靠估算。预先规定的主要分析可以使用这些记录,随后再排除估算记录、重新计算一次,看看主要比例是否明显改变。这种“换一个合理条件再算一次”的检查叫敏感性分析。标记的作用不是把“不完美数据”全部扔掉,而是让不完美程度进入判断。

总分和合格线,回答的是两个不同层次的问题

0—10 分保留了较多差异,可以直接比较样本的中间位置和不同店铺的分数分布。把它改成“低于 6 分/不低于 6 分”,好处是能直接回答主要问题中的比例,代价是压扁信息:0 分和 5 分都被归入同一边,6 分和 10 分也被归入另一边。

所以数据表必须保存五个分项和总分,不能只保存“低于/不低于”这种两类结果。主要分析按事先冻结的低于 6 分计算;低于 5 分和低于 7 分同时预留为敏感性分析。如果三个阈值得出的比例差别很大,说明“失衡有多普遍”高度依赖人为分界,论文就应把这种不稳定写进结论,而不是只展示最符合预期的一个。

到这里,“营养结构”已经变成一套可以执行、复算和质疑的变量规则。它仍然只是一把教学用的尺子,不会因为公式完整就升级成现实标准。下一步要问的是:为了回答比例和关联问题,应该在什么时间、对哪些对象、以什么方式观察。那是研究设计要解决的事。