欢迎光临
我们一直在努力

我用MATLAB复现了一套DEMATEL-ISM模型,揭开了矿工不安全情绪背后的12个“隐形推手“

一、写在前面

提到煤矿安全,大多数人的第一反应是瓦斯爆炸、顶板坍塌、透水事故。但你可能不知道一个令人警醒的数据——我国煤矿事故中人因所占比例高达97.67%(据行业统计)。

这意味着,绝大多数事故的发生,根源不在设备,不在地质,而在于人。

更具体地说,在于人的不安全情绪。

当一个矿工带着焦虑、恐惧、愤怒或疲惫下井时,他的风险感知能力会大幅下降,注意力分散,反应迟缓。此时,任何一次看似"无心"的违章操作,都可能酿成无法挽回的后果。

那么问题来了:矿工的不安全情绪,究竟是怎么形成的?

是个人性格问题?是家庭压力太大?还是企业的管理出了问题?——如果只是凭经验拍脑袋,我们得到的永远是一堆零散的、缺乏因果逻辑的"可能因素"。

2021年,李广利、严一知等学者在《中国安全科学学报》上发表了一篇论文,提出了一个系统性的分析框架:集成DEMATEL-ISM方法,将12个矿工不安全情绪形成因子纳入一个统一的数学模型中,量化它们之间的因果关系与层级结构。

最近,我用MATLAB完整复现了这篇论文的全部计算逻辑与可视化分析。本文将带你从零开始,拆解这套方法的每一步——背景、原理、公式、参数到代码实现,一同看清矿工不安全情绪背后的那张"隐形因果网"。

如果你也对系统工程建模、安全管理研究或MATLAB算法实现感兴趣,这篇文章值得你认真读完。

二、研究背景:为什么必须用数学模型来看"情绪"?

2.1 情绪→行为→事故:一条致命的传导链

在安全科学领域,"不安全情绪→不安全行为→安全事故"已被广泛证实为一条核心传导路径。矿工长期处于高温、高湿、高粉尘、强噪声的井下环境,加之高强度体力劳动和严格的生产考核压力,情绪状态的波动远比普通人剧烈。

但问题在于——"情绪"是一个多因一果的复杂变量。它既可能源于个人层面(性格、能力、家庭),也可能来自组织层面(管理、文化、监管),还可能是环境层面(工作条件、薪酬福利)的直接后果。

传统的问卷统计或回归分析,可以告诉你哪些因素"相关",但很难告诉你:

  • 谁是原因,谁是结果?
  • 因素之间如何层层传导?
  • 哪几个因素才是根本源头?

而这,恰恰是**DEMATEL(决策实验室分析法)+ ISM(解释结构模型法)**这套集成方法的用武之地。

2.2 现有研究的痛点

目前国内对矿工不安全情绪的研究,主要存在三个局限:

  • 方法单一:多数研究采用描述性统计或简单回归,难以揭示因素间的非线性因果网络;
  • 缺乏层级视角:即便识别出了关键因素,也无法区分哪些是"根源因子"、哪些是"表层因子";
  • 重定性轻量化:大量研究停留在理论分析层面,缺少可复现、可推广的数学计算框架。
  • 本次复现的核心目标,就是用一套完整的MATLAB代码,把论文中的DEMATEL-ISM计算过程逐一落地,并生成高质量的可视化输出,为后续研究提供一个"开箱即用"的建模工具。

    三、主要功能:这套代码能做什么?

    在开始讲算法之前,先让你直观地感受一下这套程序的功能全景。按下F5运行后,它会自动完成以下工作:

    序号功能模块输出成果
    1 DEMATEL因果分析 12×12综合影响矩阵T,各因子的影响度、被影响度、中心度、原因度
    2 因素分类 区分原因因素(3个)与结果因素(9个)
    3 权重排序 基于中心度归一化的12因子权重排名
    4 ISM层级划分 三层级递阶结构:表层→中间层→深层
    5 阈值自动计算 采用均值+标准差法自动确定可达矩阵二值化阈值
    6 关键路径识别 提取管理路径、文化路径、监管路径三条核心传导链
    7 可视化输出(9张图) 因果关系散点图、柱状图、热力图、ISM递阶结构、网络图、饼图、气泡图等

    一句话总结:输入一个12×12的专家打分矩阵,输出一套完整的因果网络分析报告 + 9张高质量学术图表。

    四、技术路线:从数据到洞察的完整流程

    整条技术路线可以概括为**“一个输入、两大模块、三层输出”**:

    ┌─────────────────────────────┐
    │ 专家打分(0-3分制) │
    │ 12×12 直接影响矩阵 A │
    └─────────────┬───────────────┘

    ┌────────────────────┼────────────────────┐
    │ │ │
    ┌────────▼────────┐ ┌────────▼────────┐ ┌────────▼────────┐
    │ 行和最大值法 │ │ B = A/max │ │ T=B·(I-B)⁻¹ │
    │ 规范化处理 │ │ 规范矩阵B │ │ 综合影响矩阵T │
    └────────┬────────┘ └────────┬────────┘ └────────┬────────┘
    │ │ │
    │ DEMATEL模块 │ ISM模块 │
    │ ┌─────────────────▼────┐ ┌───────────▼──────────┐
    │ │ D/C/M/R 四维指标计算 │ │ H = T + I 整体矩阵 │
    │ │ 原因/结果因素分类 │ │ λ = mean(T)+std(T) │
    │ │ 权重归一化排序 │ │ 二值化→可达矩阵K │
    │ └─────────────────┬────┘ └───────────┬──────────┘
    │ │ │
    │ ┌────────────────▼────────────────────▼──────────┐
    │ │ 迭代层级划分(Ri ∩ Ai = Ci) │
    │ │ 第1层: 表层直接因子(7个) → 第2层: 中间因子(2个) │
    │ │ → 第3层: 深层根源因子(3个) │
    │ └──────────────────────┬─────────────────────────┘
    │ │
    │ ┌──────────────────────▼─────────────────────────┐
    │ │ 9张可视化图表 + 完整分析报告 │
    │ └────────────────────────────────────────────────┘

    核心逻辑非常清晰:DEMATEL负责"定量计算因果强度",ISM负责"定性构建层级结构",二者互补,既见树木又见森林。

    五、算法步骤详解

    5.1 步骤一:构建直接影响矩阵 A

    这是整个模型的唯一输入,也是最需要专业经验的一步。

    邀请多位安全管理领域专家,对12个因子之间的直接影响关系进行成对比较打分。评分标准如下:

    分值含义示例
    0 无影响 F12(监管不到位)→ F10(家庭因素),基本无直接关联
    1 影响较小 F4(人际沟通不良)→ F2(管理行为),有一定关联但不强
    2 影响中等 F5(安全文化不足)→ F1(胜任力不足),存在明显因果关系
    3 影响较大 F2(不良管理行为)→ F8(工作压力大),强因果关系

    综合处理后,得到一个12×12矩阵A。对角线元素全为0(因素对自身无直接影响)。

    以本文复现的示例数据为例,各行的总影响强度(行和)如下:

    因素行和含义
    F2 不良管理行为或态度 21 影响面最广,几乎对所有因子都有显著影响
    F12 安全监管不到位 17 第二大影响力来源
    F5 安全文化氛围不足 16 第三大影响力来源
    F1 岗位胜任力不足 2 影响力最弱,主要"被影响"

    📌 关键发现:仅从原始打分行和就能看出,F2、F5、F12这三个组织管理层面的因素是系统中最活跃的"施力者",而个人层面的因素影响力相对较小。

    5.2 步骤二:规范化处理

    直接影响矩阵A中各行的量纲不一致(不同专家的打分尺度可能略有差异),需要进行规范化。

    本文采用行和最大值法——这是DEMATEL方法中最经典的规范化策略:

    B=Amax⁡1≤i≤n∑j=1naij
    B = \\frac{A}{\\max\\limits_{1 \\leq i \\leq n} \\sum\\limits_{j=1}^{n} a_{ij}}
    B=1inmaxj=1naijA

    以示例数据为例,max(行和) = 21(F2的行和),因此:

    B = A / 21

    矩阵B中所有元素的值域被压缩到 [0, 1],且保持了原始矩阵中各行、各列之间的相对比例关系。

    💡 为什么用行和最大值法? 相比列和最大值法或全局最大值法,行和法保证了对每个"施力者"因素的公平约束,同时满足后续无穷级数收敛的数学条件。

    5.3 步骤三:计算综合影响矩阵 T

    这是DEMATEL算法中最关键的一步。规范化矩阵B只包含了直接影响。但在真实系统中,因素之间的影响是逐级传导的:

    F2 → F4 → F8 → 不安全情绪

    这种间接影响——即"影响的二阶效应、三阶效应……乃至无穷阶效应"——正是我们需要用综合影响矩阵T来捕捉的信息。

    数学上,T是B的所有正整数次幂的无穷级数之和:

    T=B+B2+B3+⋯+Bk+⋯=∑k=1∞Bk=B(I−B)−1
    \\begin{aligned}
    T &= B + B^2 + B^3 + \\cdots + B^k + \\cdots \\\\
    &= \\sum_{k=1}^{\\infty} B^k \\\\
    &= B(I – B)^{-1}
    \\end{aligned}
    T=B+B2+B3++Bk+=k=1Bk=B(IB)1

    为什么能收敛? 因为矩阵B的谱半径严格小于1(行和最大值归一化保证),所以lim⁡k→∞Bk=0\\lim_{k \\to \\infty} B^k = 0klimBk=0,无穷级数收敛到一个有限矩阵。

    在MATLAB中,这一步只需一行代码:

    T = B * inv(eye(n) B);

    🔑 通俗理解:T(i,j) 是因素i对因素j的"总影响力"——不仅包括"i直接作用于j"(一阶),还包括"i→k→j"(二阶)、“i→k→m→j”(三阶)等所有可能路径的叠加。

    5.4 步骤四:提取四维分析指标

    从综合影响矩阵T中,我们可以提取每个因素的四个关键特征:

    指标定义物理含义
    影响度 D T的第i行和 因素i对所有其他因素的总影响力——“它影响别人多少”
    被影响度 C T的第i列和 所有其他因素对因素i的总影响力——“别人影响它多少”
    中心度 M D + C 因素在系统中的综合重要程度——“它有多重要”
    原因度 R D – C 因素的因果属性——“它是原因还是结果”

    其中原因度R是最具洞察力的指标:

    • R > 0:该因素"给出"的影响 > "接收"的影响,属于原因因素(主动施力者)
    • R ≤ 0:该因素"接收"的影响 ≥ "给出"的影响,属于结果因素(被动受力者)

    以示例运行结果为例,12个因子的分类如下:

    类型因素原因度R解读
    🔴 强原因 F12 安全监管不到位 +0.861 最大的施力者,系统根源
    🔴 强原因 F5 安全文化氛围不足 +0.716 第二大施力者
    🔴 强原因 F2 不良管理行为或态度 +0.577 影响面最广的施力者
    🔵 强结果 F8 工作压力大 -1.744 最大的受力点,最被动的因素

    📌 核心发现:三个原因因素全部是组织管理层面的——这意味着如果不从管理制度和文化入手,任何"个人层面的辅导"都治标不治本。而**F8(工作压力大)**的原因度低至-1.744,是所有因素中最被动的——它像一面"镜子",反射出其他所有因素的负面效应。

    5.5 步骤五:权重计算

    以中心度M作为因素重要性的代理指标,进行归一化得到权重:

    wi=Mi∑j=1nMj
    w_i = \\frac{M_i}{\\sum_{j=1}^{n} M_j}
    wi=j=1nMjMi

    权重前三名:

    排名因素权重
    1 F2 不良管理行为或态度 17.05%
    2 F5 安全文化氛围不足 12.51%
    3 F12 安全监管不到位 12.16%

    F2以一己之力贡献了近五分之一的系统重要性,是毋庸置疑的"头号因子"。

    5.6 步骤六:构建整体影响矩阵 H

    进入ISM阶段。在DEMATEL中,T矩阵的对角线代表"因素对自身的影响"(通过间接路径绕回自身),这个值通常很小。但ISM需要考虑因素对自身的直接关系(即自反性),因此:

    H=T+I
    H = T + I
    H=T+I

    其中I为12×12单位矩阵。对角线上加了1,表示每个因素至少"可达自身"。

    5.7 步骤七:阈值λ与可达矩阵 K

    H矩阵中的值大多非常小(许多间接影响微乎其微)。我们需要一个阈值λ来筛除这些"噪声"关系,保留真正有意义的影响路径。

    本文采用最经典的均值+标准差法:

    λ=Tˉ+σT
    \\lambda = \\bar{T} + \\sigma_T
    λ=Tˉ+σT

    • Tˉ\\bar{T}Tˉ = 综合影响矩阵T中所有144个元素的均值 = 0.0521
    • σT\\sigma_TσT = 标准差 = 0.0563
    • λ\\lambdaλ = 0.0521 + 0.0563 = 0.1083

    然后对H进行二值化:

    kij={1,hij≥λ0,hij<λ
    k_{ij} = \\begin{cases} 1, & h_{ij} \\geq \\lambda \\\\ 0, & h_{ij} < \\lambda \\end{cases}
    kij={1,0,hijλhij<λ

    💡 为什么用均值+标准差而不是任意定值? 这是最客观的自动化阈值策略之一,避免了人为设置阈值带来的主观偏差。当然,研究者在实际应用中也可以尝试不同的阈值(如均值、均值+0.5×标准差等)进行灵敏度分析。

    5.8 步骤八:迭代层级划分

    这是ISM方法的灵魂。对可达矩阵K中的每个因素,定义两个集合:

    • 可达集 R(i):因素i可以到达的所有因素(包括自身)
    • 先行集 A(i):可以到达因素i的所有因素(包括自身)

    层级划分的核心判据:

    若 R(i) = R(i) ∩ A(i)(即可达集等于共同集),则因素i属于当前层。

    物理含义:处于"当前层"的因素,只能到达自己或同层因素,无法向下穿透到更深层级。

    然后迭代执行:抽取当前层 → 从剩余集合中移除 → 继续下一轮 → 直到全部因素划分完毕。

    运行结果:

    层级因素性质
    第1层(表层) F1, F3, F8, F10, F11 直接因子:直接作用于矿工不安全情绪
    第2层(中间层) F4, F6, F7, F9 过渡因子:承上启下,传导深层影响
    第3层(深层) F2, F5, F12 根源因子:整个因果系统的驱动源头

    🎯 双重验证:DEMATEL识别出的3个原因因素(F2, F5, F12),恰好也是ISM的3个深层根源因子——两种独立方法得出了完全一致的结论,极大增强了分析结果的可信度。

    5.9 步骤九:提取关键传导路径

    基于可达矩阵中的连接关系,可识别出三条核心传导路径:

    管理路径: F2(不良管理) → F4/F9 → F8(工作压力) → 不安全情绪
    文化路径: F5(文化不足) → F4/F9 → F8/F1/F11 → 不安全情绪
    监管路径: F12(监管缺位) → F4/F9/F7 → F8/F1 → 不安全情绪

    三条路径在此汇聚!

    F8(工作压力大)是三条路径的共同终点,印证了它是矿工不安全情绪的"最终触发枢纽"。

    六、公式原理总览

    为了让读者快速把握数学框架,以下是整个DEMATEL-ISM模型的核心公式体系:

    步骤公式说明
    规范化 B=A/max⁡(∑aij)B = A / \\max(\\sum a_{ij})B=A/max(aij) 行和最大值法,保证收敛
    综合影响矩阵 T=B(I−B)−1T = B(I – B)^{-1}T=B(IB)1 无穷级数的闭式解
    中心度 Mi=∑jtij+∑jtjiM_i = \\sum_j t_{ij} + \\sum_j t_{ji}Mi=jtij+jtji 因素重要性度量
    原因度 Ri=∑jtij−∑jtjiR_i = \\sum_j t_{ij} – \\sum_j t_{ji}Ri=jtijjtji 因果方向判定
    权重 wi=Mi/∑Mjw_i = M_i / \\sum M_jwi=Mi/Mj 中心度归一化
    整体影响矩阵 H=T+IH = T + IH=T+I 纳入自反性
    阈值 λ=Tˉ+σT\\lambda = \\bar{T} + \\sigma_Tλ=Tˉ+σT 均值+标准差法
    可达矩阵 kij=1(hij≥λ)k_{ij} = \\mathbb{1}(h_{ij} \\geq \\lambda)kij=1(hijλ) 二值化指示函数
    层级判据 R(i)=R(i)∩A(i)R(i) = R(i) \\cap A(i)R(i)=R(i)A(i) 迭代抽取条件

    七、参数设定与运行环境

    7.1 关键参数一览

    参数设定值说明
    因子数量 n 12 可扩展到任意n
    评分范围 0-3分制 标准DEMATEL成对比较量表
    规范化方法 行和最大值法 最常用的DEMATEL规范化策略
    阈值策略 均值+标准差 客观自动化阈值
    可达矩阵 二值化(0/1) 经典ISM布尔运算

    7.2 运行环境

    项目要求
    语言 MATLAB(.m脚本)
    版本 R2016b 及以上
    额外工具箱 无需任何工具箱(纯基础数学运算)
    运行方式 打开.m文件 → 按F5运行
    输出产物 控制台打印全部中间结果 + 9张可视化图表

    ✅ 全代码仅依赖MATLAB内置函数(inv、eye、sum、imagesc、scatter、pie等),无需安装额外工具包,保证零依赖复现。

    7.3 如何替换为自己的数据

    代码中唯一需要修改的地方是第30-43行的直接影响矩阵A:

    A = [
    0, 0, 1, ; % 第1个因素对1-n因素的影响评分
    2, 0, 2, ; % 第2个因素对1-n因素的影响评分

    ];

    三条规则:

  • 矩阵必须为 n×n 方阵
  • 对角线元素必须为 0(自影响不计)
  • 评分建议采用 0-3分制(也可自行调整,规范化步骤会自动处理量纲)
  • 八、运行结果速览

    将代码在MATLAB中运行后,控制台会依次输出以下中间结果:

    输出项说明
    直接影响矩阵 A (12×12) 原始专家打分数据
    规范直接影响矩阵 B 除以行和最大值21后的规范化矩阵
    综合影响矩阵 T DEMATEL核心输出,包含所有直接+间接影响
    DEMATEL计算结果表 D/C/D+C/D-C 四维指标表格
    原因因素 & 结果因素分类 R>0 和 R≤0 的分组
    因素重要度排序(按中心度降序) 12个因子的权重排名
    整体影响矩阵 H = T + I ISM入参
    阈值 λ 自动计算得出的二值化阈值
    可达矩阵 K 二值化后的布尔矩阵
    层级划分过程 逐层迭代抽取过程
    ISM层级结构汇总 最终三层级结果

    同时生成9张可视化图表:因果关系散点图、中心度与原因度双轴柱状图、综合影响矩阵T热力图、ISM多级递阶结构模型、因素影响关系网络图、因素权重饼图、直接影响矩阵热力图、可达矩阵ISM层级关系图、中心度-原因度气泡图。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    九、应用场景:这套方法的迁移价值

    DEMATEL-ISM集成模型不是煤矿安全的"专属工具",它的核心价值在于系统性地分析任何复杂因素体系的因果层级结构。

    以下是几个典型的可迁移场景:

    9.1 安全管理领域(本案例)

    • 矿工不安全行为影响因素分析
    • 建筑工地安全事故致因链提取
    • 化工企业风险因素层级建模
    • 交通安全事故成因网络分析

    9.2 企业管理与组织行为

    • 员工离职意向的影响因素层级分析
    • 团队协作效率的阻碍因子因果建模
    • 组织变革阻力的根源因素识别

    9.3 公共政策与社会治理

    • 城市交通拥堵的成因层级分析
    • 环境污染因素的因果网络建模
    • 公共卫生事件的传播链分析

    9.4 工程与技术管理

    • 软件开发项目延误的风险因素分析
    • 供应链中断风险的多级传导建模
    • 产品质量问题的根源追溯

    💡 通用原则:只要你能把研究对象分解为n个可打分的影响因子,并邀请专家完成成对比较,这套模型就能帮你从一堆"可能因素"中,精准锁定真正的"根源因子"。

    十、总结与核心结论

    本文基于MATLAB,完整复现了李广利等学者提出的DEMATEL-ISM集成模型,对矿工不安全情绪的12个形成因子进行了因果量化与层级解构。四项核心结论如下:

  • 组织管理因素是根源:F2(不良管理行为)、F5(安全文化不足)、F12(安全监管不到位)三个因素既是DEMATEL的强原因因素,又是ISM的深层根源因子——"双重验证"确立其核心地位;

  • 工作压力是关键枢纽:F8(工作压力大)的原因度低至-1.744,是系统中最被动的结果因素,同时也是三条传导路径的共同终点——它是干预的最佳"靶点";

  • 三层级传导机制清晰:表层7个因子(直接触发)→ 中间层4个因子(传导过渡)→ 深层3个因子(根源驱动),形成"深层→中间→表层"的清晰递阶;

  • 需要立体化干预:单一因子的改善效果可能被其他因素的负向作用抵消,必须采取"源头治理(深层)+ 中端阻断(中间)+ 终端缓解(表层)"的系统性方案。


  • 代码开源与交流

    本文涉及的完整MATLAB代码(含全部计算逻辑与可视化生成),已在实验报告中附上。如果你在自己的研究领域应用了这套方法,欢迎交流讨论——不同的行业、不同的因子体系、不同的专家打分,往往会产生截然不同的因果网络,这正是系统工程的魅力所在。


    赞(0)
    未经允许不得转载:171主机测评 » 我用MATLAB复现了一套DEMATEL-ISM模型,揭开了矿工不安全情绪背后的12个“隐形推手“
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址