简介:《认知诊断DINA模型研究进展》(张潇)是一篇关于认知诊断模型DINA的理论综述,面向教育学、心理学及测量学方向的研究者,系统梳理了DINA模型从提出到改进的发展脉络,帮助读者快速把握该模型的核心思想、适用场景与前沿方向。文档为PDF格式,共1个文件,压缩包约1.31MB,轻量便于随时查阅。目前已有517人学习/下载,是了解认知诊断领域不可多得的入门与进阶材料。内容围绕DINA模型展开,详细介绍了Q矩阵的构建、失误与猜测两个参数的数学定义及似然函数,并重点评述了HO-DINA、P-DINA、G-DINA等改进模型如何应对传统模型的局限,最后结合个性化教学与补救教育探讨了实际应用价值。适合需要撰写文献综述、设计认知诊断测验或从事教育数据挖掘的读者系统阅读。
1. 认知诊断模型DINA:用两个参数穿透分数的黑匣子
一次小学分数减法测验结束后,A同学拿到75分。这个分数能说明他掌握了“分数减法”吗?能说明他卡在哪个环节吗?不能。传统测验只输出总分,而认知诊断模型要做的是穿透分数,判断被试在每项认知属性上的真实掌握状态。DINA模型正是其中最有代表性、也最容易落地的一种:只引入“失误”与“猜测”两个参数,用一张0/1构成的Q矩阵描述题目与认知属性之间的关系,就能输出每个被试的知识状态向量。自2001年前后正式提出后,围绕它的改进、验证和应用研究持续了十多年,衍生出高阶、多级评分、一般化等多个变体。这份文献综述正是沿着“原理、改进、应用”这条线把DINA模型讲透的,适合教育测量方向的研究者、命题与评估人员,以及想做学习诊断系统的技术从业者。
2. DINA模型的核心机制:Q矩阵、双参数设定与估计路线
很多人第一次接触DINA模型会觉得它“过于简单”——整个模型只有两个被试参数,公式也短。但真正跑过模拟数据之后会发现,这个模型的简洁恰恰是它的优势:参数少,可解释性强,对样本量的要求也比复杂模型低。要把DINA模型用好,首先得把它的三个核心组件拆开:Q矩阵怎么建、失误与猜测参数怎么定义、参数估计走哪条路线。
2.1 从Q矩阵到知识状态:属性向量怎么构建
Q矩阵是整个认知诊断的认知地图。假设一份测验有J道题,通过认知分析定义了K个属性,Q矩阵就是一个J行K列的0/1矩阵。每一行对应一道题,每一列对应一个属性,取值为1表示“正确作答这道题必须掌握这个属性”,取值为0表示不需要。这里说的属性,可以是一种技能、一个知识点,也可以是一种加工过程。
以分数减法为例,文献里对小学分数减法的认知过程做了分析,归纳出五种属性:基本分数减法、化简、将整数部分与分数部分分开、从整数部分借1、将整数变为分数。比如要正确作答“735 - 45”这道题,需要掌握属性1、属性3和属性4,那么在Q矩阵里,这道题对应的行向量就是(1,0,1,1,0)。
| 题目 | 属性1 基本分数减法 | 属性2 化简 | 属性3 整数与分数分开 | 属性4 从整数借1 | 属性5 整数变分数 |
|---|---|---|---|---|---|
| 735 - 45 | 1 | 0 | 1 | 1 | 0 |
| 其他题目 | … | … | … | … | … |
Q矩阵建好之后,被试的属性掌握模式用 αi = {αik} 表示,k = 1, 2, …, K。如果被试掌握了第k个属性,αik = 1,否则为0。在这个基础上,DINA模型定义了一个潜在作答向量 ηij,表示被试i在第j题上的理想作答结果:ηij = ∏ αik^qjk(k从1到K连乘)。也就是说,只有当被试掌握了题目考核的全部属性时,ηij = 1;只要缺一个属性,ηij = 0。这个连乘形式就是DINA模型“确定性输入、与门连接”这个名字的来源。
实际操作中,建Q矩阵是第一步,也是最容易返工的一步。我一般会先找学科老师或领域专家做认知属性分析,把每道题的解题路径拆出来,再转成0/1向量。这个环节不要赶时间,Q矩阵错一个属性,后面估计出来的失误和猜测参数都会跟着偏。
2.2 失误和猜测:两个参数如何决定作答概率
如果没有噪声,被试的作答结果完全由ηij决定,那就变成了确定性模型。但实际测验里,被试在理想作答向量之外还会受到两类干扰:一类是掌握了全部属性却答错,称为“失误”;另一类是没掌握属性却答对了,称为“猜测”。DINA模型用两个参数分别刻画这两种情况:
- sj = P(Yij = 0 | ηij = 1),即掌握了全部所需属性但答错的概率;
- gj = P(Yij = 1 | ηij = 0),即未掌握全部所需属性但答对的概率。
于是,掌握模式为αi的被试正确作答第j题的概率为:
P(Yij = 1 | αi) = (1 - sj)^ηij · gj^(1 - ηij)
这个公式的含义很直白:当ηij = 1时,答对概率是1 - sj;当ηij = 0时,答对概率是gj。注意,这里的“猜测”并不等于完全瞎猜。文献里特别解释过,猜测参数实际上包含了那些没有反映在Q矩阵里的其他解题策略。比如一道题可以用另一种认知路径解出来,只是这条路径没有进入Q矩阵,那么具备这些额外属性的被试就能“系统地”答对,而不是随机蒙对。这也是为什么Q矩阵如果建得不完整,gj会异常偏高。
整个模型在项目反应理论的局部独立假设下构建似然函数:
L(s, g, α) = ∏(i=1..N) ∏(j=1..m) [pj(αi)]^Yij · [1 - pj(αi)]^(1 - Yij)
这个似然函数是后面用MCMC或EM算法做参数估计的起点。每次跑估计之前,我会先检查一下sj和gj的先验范围:一般要求不小于0、不大于0.4,并且满足 1 - sj > gj。如果估计结果突破了0.4,基本可以断定Q矩阵有问题,而不是算法调参的问题。
2.3 参数估计的两条路线:MCMC与EM
DINA模型的参数估计,文献里主要有两条路线。一条是MCMC方法,把被试的掌握模式α、失误参数s、猜测参数g都当作待估参数,从后验分布里抽样。这条路线实现起来相对直接,适合属性个数中等、样本量不算太大的场景,也是早期DINA研究最常用的方法。
另一条是边际极大似然路线,包括联合极大似然估计(JMLE)和边际极大似然估计(MMLE)。这类方法把被试参数积分掉,只估计项目参数,计算量更小,收敛速度更快。文献里专门有研究比较过两条路线的精度,结论是MCMC在参数估计精度上表现更好,但计算时间更长。如果数据量上了几万人,纯MCMC会跑得很痛苦,这时候用MMLE或EM算法更现实。
| 估计路线 | 实现方式 | 优点 | 适用场景 |
|---|---|---|---|
| MCMC | 贝叶斯抽样 | 精度高,能同时估计被试与项目参数 | 中小规模数据、属性数适中、研究阶段 |
| JMLE / MMLE | 极大似然 + EM | 计算快,适合大规模数据 | 项目池大、样本量大、工程化部署 |
参数估计完成之后,还有一个容易被忽略的检查项:看s和g的估计值是否落在合理区间。文献给出的经验界限是0.4,超过这个值就要回头查Q矩阵。这不是玄学,而是参数本身承载着认知假设——如果“失误”和“猜测”的概率高到接近随机作答,说明题目或者属性定义并没有真正刻画被试的认知加工过程。
3. 三种改进模型怎么选:HO-DINA、P-DINA与G-DINA的边界
传统DINA模型虽然简洁,但局限也很明显:只能处理0-1计分数据,默认每个项目只有一种解题策略,且没有考虑属性之间的关联结构。围绕这几个缺陷,文献里陆续出现了三支重要的改进方向:HO-DINA引入高阶能力因子,P-DINA扩展多级评分,G-DINA则把整个DINA家族收编进一个统一框架。这三者不是彼此替代的关系,而是适用于不同数据条件和研究目标。
3.1 HO-DINA:引入高阶能力θ,降低属性组合爆炸
DINA模型里,被试的知识状态是一个K维0/1向量,属性个数一多,可能的掌握模式就有2的K次方种。比如10个属性就有1024种模式,光靠数据往往很难把每种模式都估计稳。HO-DINA模型的思路是:假设这些认知属性背后存在一个更高阶的一般能力θ,在给定θ的前提下,各属性的掌握概率条件独立。
P(α | θ) = ∏(k=1..K) P(αk | θ)
P(αk | θ) = exp[1.7·λ1·(θ - λ0k)] / (1 + exp[1.7·λ1·(θ - λ0k)])
从形式上看,这是一个以认知属性为“项目”、以θ为潜在特质的高阶逻辑回归模型。λ0k类似于属性k的难度参数,λ1是斜率参数,1.7是IRT里常用的缩放常量。实际用下来,HO-DINA最明显的收益是降低了技能组合的数量压力——你不必为每一种属性模式都准备足够的样本量,模型会借助θ的结构信息来平滑估计。
这个模型的适用场景很清晰:当研究假设认为被试的整体能力水平会系统性地影响属性掌握概率时,HO-DINA比传统DINA更合适。而且它有一个传统DINA没有的副产品——可以同时报告被试的总体能力θ和具体属性掌握情况,这两类信息放在一起,比单纯给一个“掌握/未掌握”向量更有解释力。
3.2 P-DINA:多级评分数据的扩展
现实中的教育测验大量使用多级计分:一道题不是只有对错,还有部分分。传统DINA模型只能处理0-1数据,硬把多级评分压成二值,会丢掉大量信息。P-DINA模型就是用等级反应模型里的累积类别反应函数思想,把DINA扩展到了多级评分场景。
P(Yij = t | αi) = P*(Yij ≥ t | αi) - P*(Yij ≥ t + 1 | αi)
其中P*(Yij ≥ t | αi)表示被试i在第j题上得分达到t级及以上的概率,其形式与DINA的0-1概率函数类似,但每一级有各自的失误和猜测参数。P-DINA模型需要估计的参数数量明显增加——除了被试属性掌握模式,还要估计多级评分下每一级的s和g。文献里采用MCMC算法实现参数估计,并经蒙特卡洛模拟检验了模型性能。
这里有一个对实际应用非常关键的结论:如果希望属性模式判准率保持在80%以上,建议诊断的属性个数不宜超过7个。这条经验值在做研究设计时就要记住——不是属性拆得越细越好,属性太多,多级评分下的参数估计精度会明显下降。我见过的翻车案例里,有人在P-DINA里塞了9个属性,跑到最后判准率掉到70%以下,回头砍掉两个属性之后才稳下来。
3.3 G-DINA:把DINA装进一个统一框架
G-DINA模型的贡献不在于多了一个新模型,而在于提供了一个一般性框架。它在传统DINA基础上放松了对条件的限制,用一个饱和模型刻画属性与作答概率的关系:
P(α*ij) = δj0 + Σδjk·αjk + Σδjkk'·αjk·αjk' + … + δj12…k*j·∏α
公式里的δj0是截距,表示未掌握任何属性时的基线答对概率;δjk是属性k的主效应;δjkk'是属性k和k'的交互效应;最后一项是所有属性的最高阶交互。当δj0和最高阶交互项不为0,其余主效应和低阶交互项都为0时,这个一般模型就退化为DINA模型。也就是说,DINA只是G-DINA在特定约束下的一个特例。
这个框架的实际价值在于模型比较。以前想判断“数据到底支持DINA还是更复杂的模型”,缺乏统一的参照系。有了G-DINA之后,可以在同一个框架下做似然比检验,判断哪些交互项显著、哪些可以约束为0,从而在简单性和拟合度之间找一个平衡点。文献里建议用EM算法做G-DINA的参数估计,同时也指出,如果能用更底层的语言重新实现参数估计程序,对大规模数据处理会更有帮助。
| 模型 | 解决了什么问题 | 核心特征 | 适用场景 |
|---|---|---|---|
| DINA | 基础认知诊断 | 双参数、与门结构 | 0-1计分、单一策略、属性数较少 |
| HO-DINA | 属性组合爆炸 | 高阶能力θ + 逻辑回归 | 属性间受整体能力支配 |
| P-DINA | 多级评分数据 | 累积类别反应函数 | 多级计分、属性数≤7 |
| G-DINA | 统一模型比较 | 饱和模型 + 约束特例 | 模型选择与拟合检验 |
4. DINA模型的应用路径:从测验编制到认知诊断CAT
DINA模型真正能落地的环节不只是数据分析,更关键的是测验编制。一份普通测验只需要控制难度和区分度,一份认知诊断测验还要求题目能够有效区分不同的属性掌握模式。这直接影响到怎么选题、怎么组卷、怎么和计算机自适应测验结合。
4.1 认知诊断测验编制:K-L信息量与项目筛选
在传统测验里,选题靠的是难度和区分度指标。认知诊断测验里,刷选标准变成了“这道题对区分两种属性掌握模式有多大贡献”。文献里提出用K-L信息量(Kullback-Leibler Information)作为选题依据——它度量的是某个项目在不同掌握模式下作答概率分布的差异程度。差异越大,说明这道题越能帮我们区分不同的知识状态。
具体操作可以按三步走:第一步,根据Q矩阵和初步属性分析,为每道题计算它在所有候选掌握模式下的作答概率;第二步,计算每道题的K-L距离,评估区分能力;第三步,按属性覆盖度和K-L信息量排序,优先选择覆盖了稀缺属性组合、且区分度高的题目。
在这个基础上,研究者还尝试用遗传算法自动组卷。思路是把“构成一份满足属性覆盖和信息量要求的试卷”编码成一个优化目标,用遗传算法迭代搜索,替代人工排题。工程上要做认知诊断测验,我一般建议把Q矩阵的设计和题目筛选合并成一个流程来做——先用专家分析确定属性,生成候选题目的Q向量,再跑K-L筛选,最后用模拟数据验证整份试卷在已知真实掌握模式下的判准率。
4.2 CD-CAT:计算机自适应测验与认知诊断的结合
认知诊断和计算机自适应测验结合之后,就形成了CD-CAT。常规CAT的目标是高效估计被试的能力值θ,CD-CAT的目标则是尽可能准确地判断被试属于哪一种属性掌握模式。目标变了,选题策略也跟着变。
一个典型的CD-CAT流程是这样的:
- 初始化:为每个被试设定一个属性掌握模式的先验分布。
- 选题:从项目池中挑选当前对区分候选模式最有信息量的题目,常用K-L信息量或其变体作为选题指标。
- 作答:呈现题目,记录作答结果。
- 更新:用作答结果更新被试属性模式的后验分布。
- 终止:当某个属性模式的后验概率超过阈值或达到预设题数上限时停止,输出诊断结果。
CD-CAT落地时有一个容易被低估的工程问题:项目池要覆盖所有属性组合,否则某些掌握模式的被试在选题阶段会一直选不到合适的题目。文献里还专门研究了在DINA模型下的CD-CAT表现,结论是合理的选题策略能显著降低诊断所需的题目数量——这意味着同样时长的测验,CD-CAT能做到比固定题本更精细的诊断。
4.3 教育评估与临床研究中的典型用法
DINA模型的应用研究在教育和临床两个方向都有积累。教育领域最典型的场景是数学问题解决诊断和阅读能力评估:数学测验可以拆成计算规则、转化、借位等多个认知属性,阅读测验可以拆成信息提取、推理整合等属性,每个学生最终拿到的不再是一个笼统的分数,而是一份“哪些属性已掌握、哪些属性缺失”的诊断单,补救教学就有了明确靶点。
临床方面也有研究把DINA模型用于病理性赌博行为的评估。这个场景很有意思——测验题目并不是对错题,而是行为指标,Q矩阵刻画的是每种行为指标背后对应的认知或行为特征,诊断结果可以帮助临床工作者定位问题行为模式。不过和传统教育测评相比,这类临床应用的样本量和属性界定更困难,实际落地时需要更谨慎地验证Q矩阵的合理性。
国内的应用研究起步相对晚,主要集中在数学和阅读两个学科,而且多是用DINA做实证数据的回溯分析,真正从测验编制阶段就按认知诊断理念设计的还不多。对从业者来说,这意味着一个现实的机会:DINA模型的理论工具已经比较成熟,缺的是把它前移到测验设计环节的工程实践。
5. DINA模型实战避坑:参数越界、Q矩阵误设与多策略陷阱
DINA模型看起来只有两个参数,跑起来似乎不难,真正上手之后才会发现坑都在数据里和Q矩阵里。这一章把我见过的失败案例和文献里明确警告过的问题集中列出来,每一条都是“现象、原因、解决”的结构,希望能帮你少走弯路。
5.1 失误和猜测参数越过0.4
现象:MCMC或EM估计跑完后,某道题的sj或gj超过了0.4,甚至接近0.5。乍看参数还在0到1之间,模型也能收敛,但诊断结果明显不合理——大量被试被判为“恰好猜对”或“恰好失误”。
原因:文献里明确写过,sj和gj值过大基本可以归为三类问题:一是Q矩阵界定得不好,某些题目实际用到的属性没有被列进去,或者是多余的属性被列了进去;二是被试使用了Q矩阵之外的解题策略,这些策略被模型当成了“猜测”;三是模型与数据本身不拟合,被试的作答模式不符合DINA的与门假设。
解决:不要急着调MCMC的迭代次数或先验。先回到Q矩阵,逐题核对属性设定;如果某道题存在多种可接受的解法,考虑改题或者在模型层面换用多策略扩展。按经验,一道题如果sj或gj超过0.4,多半是属性定义环节出了问题。
5.2 估计结果不满足 1 - sj > gj
现象:某道题的失误参数和猜测参数加起来大于1,比如sj = 0.5、gj = 0.6。从概率角度看,这意味着“掌握了所有属性的人答对概率”反而低于“没掌握属性的人答对概率”,明显违背了模型的基本假设。
原因:这个不等式本质上是模型可解释性的底线。出现这种情况,通常是该题目在两组被试(掌握全部属性 vs 缺失至少一个属性)之间的作答概率差异太小,甚至是反向的。最常见的原因是Q矩阵把这道题不需要的属性也写了进去,导致“掌握全部属性”的定义失真。
解决:先把这道题单独拿出来,重新做认知分析,确认它的属性需求;然后看样本量是否足够支撑两个参数同时被稳定估计;最后可以尝试删掉该题重新跑一遍,观察整体判准率的变化。如果删题后结果明显变好,说明这道题本身有问题,留着只会拖累整个模型。
5.3 P-DINA模型属性个数超过7个
现象:用P-DINA做多级评分数据分析时,模型收敛了,属性模式判准率却一直上不去,卡在70%左右。模拟实验里换了不同的样本量,效果也没有本质改善。
原因:文献里用蒙特卡洛模拟验证过,P-DINA要保证属性模式判准率在80%以上,诊断的属性个数不宜超过7个。原因是多级评分模型要估计的参数远超0-1模型——除了属性模式,每一级计分都有各自的s和g,参数空间膨胀得很快,数据提供的有效信息密度跟不上。
解决:在设计认知属性时就要控制数量。如果研究确实需要更精细的属性划分,可以分两阶段:先用一个较粗的属性集做整体诊断,再对疑似困难的区域用更细的属性集做二次诊断。另一种思路是扩大样本量,但效果有限,属性太多时样本量再大也难以弥补模型复杂度的上升。
5.4 Q矩阵界定不完整,猜测参数系统性偏高
现象:一批题目的gj普遍偏高,多道题都在0.3以上,而且删掉任何一道题都无法单独解释这个现象。被试的诊断结果也异常:很多人被判定为“未掌握属性但答对”,比例高得不合理。
原因:文献里专门研究过Q矩阵不完整的影响。如果测验中存在Q矩阵之外的解题策略,被试可以依赖这些属性系统性答对,模型会把这部分区分不出来,全部归入gj。这不是某一题的问题,而是整个认知分析框架的缺口。
解决:回到认知分析环节,请领域专家补充常见解题路径,尤其是“非标准解法”。把这些路径纳入Q矩阵之后,gj通常会明显回落。如果某些策略确实无法避免但又不适合写进Q矩阵,可以考虑把对应题目替换为更封闭的题型,减少多路径作答的空间。
5.5 多策略DINA模型的前提限制
现象:想把多策略DINA模型用于实际数据,每道题可以解出多个属性向量,但估计结果不理想,判准率不升反降。
原因:经典的多策略DINA模型有一个很强的假设——不同策略的难度相等,失误和猜测参数对所有策略取相同值。实际测验里,用不同策略解题的难度几乎不可能完全一致,这个前提不满足时,模型强行共用参数就会带来偏差。
解决:先用模拟数据检查在已知“策略难度不等”的情况下模型是否还能恢复真实参数。如果不行,就要考虑能允许s和g随策略变化的扩展版本;文献里也指出这个问题还需要进一步研究,应用时要谨慎评估模型的适用边界。
6. 上手验证DINA模型的三个步骤:模拟数据、收敛检查与判准率
拿到一份DINA模型相关的代码或工具,第一件事不是直接分析真实测验数据,而是用模拟数据把整个流程验证一遍。这个习惯能帮你过滤掉大量“看起来在跑、其实在算错”的隐患。我一般的做法分三步。
第一步,构造已知真值的模拟数据。先确定Q矩阵的规模,比如5道题、3个属性,生成对应的0/1矩阵;再设定真实的失误和猜测参数,比如所有题目的sj = 0.1、gj = 0.2;然后从预先定义的属性掌握模式分布中抽样,按DINA的概率公式生成作答矩阵。这一步的关键是“已知答案”——真实的属性模式、真实的s和g都握在手里,后面估计出来的结果可以和真值直接对比。
第二步,跑参数估计并检查收敛。用MCMC或EM对模拟数据做估计,记录sj、gj和属性模式的估计值。MCMC场景下要看迹图和Gelman-Rubin诊断值,一般建议多个链并行,确保不同起点收敛到同一区域。具体操作上可以设两条链、每链迭代一定次数(如2000次预热加5000次抽样),观察参数的后验均值是否稳定。
| 检查项 | 工具/手段 | 通过标准 |
|---|---|---|
| 参数收敛 | 迹图 + 后验分布 | 迹图无明显漂移,多链结果一致 |
| 项目参数恢复 | 估计值 vs 真值 | 偏差小于0.05 |
| 属性模式判准率 | 预测 vs 真值 | 判准率高于0.8 |
第三步,计算判准率。把估计出的属性模式与真实模式逐一比对,算出属性模式判准率,也就是“完全判对的被试占比”。这个指标是DINA模型诊断效用的核心度量。如果模拟数据下判准率都上不去,直接拿去分析真实数据只会更糟。文献里对判准率的经验要求是80%以上,达不到就要回到Q矩阵或样本量去排查。
我第一次上手DINA模型时,就是被“参数超过0.4”这类问题卡了好几天,最后发现根源不是算法而是Q矩阵少了一个属性。从那以后我每次拿到新数据都强制走一遍这个模拟验证流程,先在已知真值的数据上跑通程序,再碰真实测验数据。希望帮到你。
本文还有配套的精品资源,点击获取