<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>评分引擎 - tag - 沐木</title><link>https://oldletter.cn/tags/%E8%AF%84%E5%88%86%E5%BC%95%E6%93%8E/</link><description>评分引擎 - tag - 沐木</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Fri, 10 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://oldletter.cn/tags/%E8%AF%84%E5%88%86%E5%BC%95%E6%93%8E/" rel="self" type="application/rss+xml"/><item><title>问卷考试系统设计（三）：评分引擎--维度计分、公式 DSL 与常模</title><link>https://oldletter.cn/posts/qnr-03-scoring-engine/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><author>mumu</author><guid>https://oldletter.cn/posts/qnr-03-scoring-engine/</guid><description><![CDATA[<p><strong>上一篇:<a href="/posts/qnr-02-dsl-design/" rel="">问卷考试系统设计(二):题目 DSL 设计</a></strong></p>
<p>评分引擎是整个系统里容易出错、也需要优先可审计的部分。心理量表和普通考试上限的差异也在这里：不能只把考试系统那套 <code>sum()</code> 逻辑搬过来，很多规则要单独设计。</p>
<hr>
<h2 id="心理量表评分-vs-普通考试">心理量表评分 vs 普通考试</h2>
<p>两者的差异很大。</p>
<p><strong>普通考试</strong>的计分模型很直白:答对得 1 分,答错得 0 分,加起来就是总分。题目按章节组织,分数按章节汇总,出个柱状图就完事了。</p>
<p>到<strong>心理量表</strong>这里，逻辑就不一样了。题目常用 Likert 等级量表&ndash;“从不”到“总是”、“非常不同意”到“非常同意”，每个选项对应一个分值，<strong>没有对错之分，只有程度差异</strong>。量表按心理学维度组织，比如焦虑、抑郁、躯体化，每道题在设计阶段就归属到某个维度了。</p>
<p>更关键的差异:</p>
<ul>
<li><strong>反向计分题</strong>:防止被试不动脑子全选同一个选项。正常题&quot;我觉得工作很有成就感&quot;选&quot;总是&quot;得 5 分,反向题&quot;我觉得工作毫无意义&quot;选&quot;总是&quot;得 1 分。考试没有这种概念。</li>
<li><strong>测谎题</strong>:检测被试是否在刻意美化自己。考试也不需要这个。</li>
<li><strong>维度分析</strong>:心理量表的核心价值是维度分&ndash;焦虑多少分、抑郁多少分、躯体化多少分,分别对应什么严重程度。光给一个总分没有意义。</li>
<li><strong>常模参照</strong>:原始分需要转换成标准分(T 分/Z 分),然后和常模比较才能得出有意义的结论。这是心理量表和考试上限的区别,后面会详细讲。</li>
</ul>
<table>
  <thead>
      <tr>
          <th>维度</th>
          <th>普通考试</th>
          <th>心理量表</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>计分逻辑</td>
          <td>对/错二元</td>
          <td>程度量表(1-5 Likert)</td>
      </tr>
      <tr>
          <td>反向题</td>
          <td>不存在</td>
          <td>存在,需要反转分数</td>
      </tr>
      <tr>
          <td>维度结构</td>
          <td>章节/知识点</td>
          <td>心理学维度(如焦虑、抑郁)</td>
      </tr>
      <tr>
          <td>质量检测</td>
          <td>无</td>
          <td>测谎题、一致性检测</td>
      </tr>
      <tr>
          <td>结果呈现</td>
          <td>总分</td>
          <td>维度分 + T分/Z分 + 常模比较</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="维度模型设计">维度模型设计</h2>
<p>维度和题目不要做成简单多对多，还要记录反向题、测谎题和父子维度聚合规则：</p>
<div class="mermaid" id="id-3" data-mermaid-definition="Zmxvd2NoYXJ0IFRCCiAgICAgICAgICAgICAgICAgICAgU2NhbGVbIumHj&#43;ihqOeJiOacrCJdIC0tPiBSb290WyLmgLvnu7TluqYiXQogICAgICAgICAgICAgICAgICAgIFJvb3QgLS0&#43;IEQxWyLkuIDnuqfnu7TluqYgQSJdCiAgICAgICAgICAgICAgICAgICAgUm9vdCAtLT4gRDJbIuS4gOe6p&#43;e7tOW6piBCIl0KICAgICAgICAgICAgICAgICAgICBEMSAtLT4gTDFbIuWPtuWtkOe7tOW6piBBMSJdCiAgICAgICAgICAgICAgICAgICAgRDEgLS0&#43;IEwyWyLlj7blrZDnu7TluqYgQTIiXQogICAgICAgICAgICAgICAgICAgIEwxIC0tPiBRMVsi6aKY55uuIDEiXQogICAgICAgICAgICAgICAgICAgIEwxIC0tPiBRMlsi6aKY55uuIDI8YnIvPuWPjeWQkemimCJdCiAgICAgICAgICAgICAgICAgICAgTDIgLS0&#43;IFEzWyLpopjnm64gMyJdCiAgICAgICAgICAgICAgICAgICAgRDIgLS0&#43;IEwzWyLlj7blrZDnu7TluqYgQjEiXQogICAgICAgICAgICAgICAgICAgIEwzIC0tPiBRNFsi5rWL6LCO6aKYIl0KICAgICAgICAgICAgICAgICAgICBRMSAtLT4gU3VtWyLlj7blrZDnu7TluqbogZrlkIgiXQogICAgICAgICAgICAgICAgICAgIFEyIC0tPiBTdW0KICAgICAgICAgICAgICAgICAgICBRMyAtLT4gU3VtCiAgICAgICAgICAgICAgICAgICAgU3VtIC0tPiBQYXJlbnRbIueItue7tOW6puiBmuWQiCJd">flowchart TB
                    Scale[&#34;量表版本&#34;] --&gt; Root[&#34;总维度&#34;]
                    Root --&gt; D1[&#34;一级维度 A&#34;]
                    Root --&gt; D2[&#34;一级维度 B&#34;]
                    D1 --&gt; L1[&#34;叶子维度 A1&#34;]
                    D1 --&gt; L2[&#34;叶子维度 A2&#34;]
                    L1 --&gt; Q1[&#34;题目 1&#34;]
                    L1 --&gt; Q2[&#34;题目 2&lt;br/&gt;反向题&#34;]
                    L2 --&gt; Q3[&#34;题目 3&#34;]
                    D2 --&gt; L3[&#34;叶子维度 B1&#34;]
                    L3 --&gt; Q4[&#34;测谎题&#34;]
                    Q1 --&gt; Sum[&#34;叶子维度聚合&#34;]
                    Q2 --&gt; Sum
                    Q3 --&gt; Sum
                    Sum --&gt; Parent[&#34;父维度聚合&#34;]</div><h3 id="维度与题目的关联">维度与题目的关联</h3>
<p>每个量表由若干维度组成,每道题归属于一个维度。维度之间可以有层级关系&ndash;比如职业兴趣测评里先有&quot;人际/事务/研究&quot;这类一级维度,下面再拆更细的子维度。类似 SCL-90 这种经典量表则是相对扁平的 9 个因子,不要硬套层级。</p>]]></description></item></channel></rss>