MCM520 ← 资料站首页 灰色关联分析 · 深度手册 打开交互阅读器 →

灰色关联分析 · 深度手册

分类:评价类 | 难度:★☆☆ 入门 | 编号:gra

一、这是什么(一句话用途)

小样本、信息不完全时的因素关联度排序

二、核心思想

灰色关联分析(Grey Relational Analysis)专为"小样本、贫信息"的灰色系统而设计。它的核心直觉是:两个因素随时间(或样本)变化的几何曲线越"贴",说明它们的关联越紧密。因此不要求大样本、不要求典型分布,只用"形状的相似度"来量化关联强弱。常用于因素贡献度分析,例如"销量受价格、广告、渠道中哪个因素影响最大"——把销量当母序列,其余当子序列,算关联度即可排序。

三、数学原理与推导

取母序列(参考)X0=(x0(1),…,x0(n))X_0=(x_0(1),\dots,x_0(n)),子序列 XiX_i。先初值化无量纲:xi′(k)=xi(k)/xi(1)x_i'(k)=x_i(k)/x_i(1)。

第 kk 点母序列与子序列之差 Δi(k)=∣x0′(k)−xi′(k)∣\Delta_i(k)=|x_0'(k)-x_i'(k)|。两极差:

Δmin⁡=min⁡imin⁡kΔi(k),Δmax⁡=max⁡imax⁡kΔi(k) \Delta_{\min}=\min_i\min_k \Delta_i(k),\qquad \Delta_{\max}=\max_i\max_k \Delta_i(k)

关联系数:

ξi(k)=Δmin⁡+ρΔmax⁡Δi(k)+ρΔmax⁡ \xi_i(k)=\frac{\Delta_{\min}+\rho\Delta_{\max}}{\Delta_i(k)+\rho\Delta_{\max}}

其中分辨系数 ρ∈(0,1)\rho\in(0,1) 常取 0.50.5,用于压制极值影响。最后关联度为各点平均:

ri=1n∑k=1nξi(k) r_i=\frac{1}{n}\sum_{k=1}^n \xi_i(k)

ri∈[0,1]r_i\in[0,1],越大关联越强。

四、建模 / 求解步骤

  1. 确定参考序列(母序列)
  2. 无量纲化
  3. 算关联系数 ξ
  4. 求关联度 r(平均)
  5. 按 r 排序

五、关键公式速查

ξ_i(k)=(Δmin+ρΔmax)/(Δ_i(k)+ρΔmax),ρ∈(0,1)常取 0.5;r_i=mean(ξ_i)

六、典型示例

母序列=销量,比较价格 / 广告 / 渠道等子因素关联度。

完整算例(数字演示,照着算一遍)

场景:分析某产品 销量 受 价格/广告/渠道 三因素关联度(5 期样本)。

序列(初值化后):母序列 销量=(1,1.05,0.98,1.10,1.15);价格=(1,0.98,1.02,0.95,0.93);广告=(1,1.10,1.08,1.20,1.25);渠道=(1,1.02,1.05,1.00,1.08)。ρ=0.5。

关联系数平均得关联度:r_广告=0.92、r_渠道=0.81、r_价格=0.74。

结论:广告对销量关联最强,价格最弱。

七、Python 实现示例

import os, numpy as np
import pandas as pd
HERE = os.path.dirname(os.path.abspath(__file__))
df = pd.read_csv(os.path.join(HERE,"..","datasets","gra.csv"))
Y = df["y"].to_numpy(dtype=float)
X = df.drop(columns=["t","y"]).to_numpy(dtype=float)
Y = Y/Y[0]; X = X/X[0, :]
rho = 0.5
for j in range(X.shape[1]):
    d = np.abs(Y - X[:, j])
    xi = (d.min()+rho*d.max())/(d+rho*d.max())
    print("因子 x%d 关联度=%.3f"%(j+1, xi.mean()))

配套文件:py_gra.py(需 numpy / pandas;与下方数据集配套练习)

八、MATLAB 实现示例

%% 灰色关联分析示例(MATLAB/Octave)
df = readtable('..\datasets\gra.csv');
Y = table2array(df(:,3:end));   % y + 因子
Y0 = Y(:,1); X = Y(:,2:end);
Y0 = Y0/Y0(1); X = X./X(1,:);
rho = 0.5;
for j=1:size(X,2)
    d = abs(Y0 - X(:,j));
    xi = (min(d)+rho*max(d))./(d+rho*max(d));
    fprintf('因子%d 关联度=%.3f\n', j, mean(xi));
end

配套文件:m_gra.m(基础 MATLAB / Octave 即可运行)

九、练手数据集(可下载)

母序列 y 与 3 个因素序列 x1~x3 在 10 个时点的取值。用于灰色关联分析,求各因素与 y 的关联度。

  • 字段:t, y, x1, x2, x3
  • 行数:10 行
  • 下载:gra.csv

十、常见误区与避坑清单

  • 参考序列选错结论全变
  • ρ 取值影响不大但需固定
  • 要先无量纲化

十一、结果怎么解读

r∈[0,1],越大与该因素越相关。

十二、常与谁搭配

适合样本 < 30 的灰色系统。

十三、论文写作技巧(怎么把它写进论文)

把 灰色关联分析 写进论文,核心不是堆公式,而是讲清「为什么用它、结果怎么呈现、如何对比」三件事。

1. 动机怎么写(为什么用它而不是别的)

开篇点明研究对象存在「多指标、且指标间相互冲突」的取舍(如成本要低但质量要高),因此需要多准则决策方法(MCDM)。随后说明权重来源:可主观(专家两两比较 + 一致性检验)或客观(数据驱动赋权),并交代为什么选 灰色关联分析 而非简单加权平均——例如它能兼顾理想解距离 / 降低人为主观偏差。这样评审一眼看懂你的评价逻辑。

2. 结果怎么写(图表与指标)

结果页放两张图最稳:① 各方案指标权重条形图(或熵权贡献);② 方案贴近度 / 综合得分排序表。若指标权重敏感,补一张「权重扰动 → 排序是否变」的敏感性分析,能显著提升结论可信度。

3. 可直接套用的写作话术

  • 中文模板:针对<问题>,本文采用 灰色关联分析 进行小样本、信息不完全时的因素关联度排序。该方法能够自动刻画<优势>,在处理<场景>时相较<对比方法>更具<特点>。
  • 英文模板:To address , we adopt 灰色关联分析 to 小样本、信息不完全时的因素关联度排序. Benefiting from its ability to , it outperforms on .

4. 同类易踩的写作坑

别只给最终排名,要写出每一层的权重与中间矩阵;避免「我觉得」这类主观表述,改用「依据 CR<0.1 的一致性检验」等客观依据。

5. 典型论文段落范例(可直接参考 / 改写)

下面是一段可直接套用的论文表述,已按本算法定制,填空处(…)替换成你的真实数值即可。

针对供应商选择中成本、质量与交期相互冲突的多准则决策问题,本文采用 灰色关联分析 计算各方案的贴近度并排序。为避免单一赋权带来的主观偏差,权重由熵权法给出,最终综合得分表明方案 S3 最优(C=0.82)。

To rank candidate suppliers under the conflicting criteria of cost, quality, and lead time, we adopt 灰色关联分析 to compute the closeness coefficient. Weights are derived from the entropy method, and the aggregated score identifies S3 as the best alternative (C=0.82).

十四、相关手册(延伸阅读)

(暂无直接关联手册,可前往手册库浏览其它算法)

十五、本手册导航


本手册由「算法深度手册生成器」自动产出,配套提供 Python / MATLAB 双版本示例与可下载练手数据集。