Python灰色关联度

设系统行为序列
X 0 = ( x 0 ( 1 ) , x 0 ( 2 ) , ⋯   , x 0 ( n ) ) X 1 = ( x 1 ( 1 ) , x 1 ( 2 ) , ⋯   , x 1 ( n ) ) ⋯ ⋯ X i = ( x i ( 1 ) , x i ( 2 ) , ⋯   , x i ( n ) ) ⋯ ⋯ X m = ( x m ( 1 ) , x m ( 2 ) , ⋯   , x m ( n ) ) X_0 = (x_0(1),x_0(2),\cdots,x_0(n))\\ X_1 = (x_1(1),x_1(2),\cdots,x_1(n))\\ \cdots \cdots \\ X_i = (x_i(1),x_i(2),\cdots,x_i(n))\\ \cdots \cdots \\ X_m = (x_m(1),x_m(2),\cdots,x_m(n))\\ X0=(x0(1),x0(2),,x0(n))X1=(x1(1),x1(2),,x1(n))Xi=(xi(1),xi(2),,xi(n))Xm=(xm(1),xm(2),,xm(n))
对于 ξ ∈ ( 0 , 1 ) \xi\in(0,1) ξ(0,1), 令
γ ( x 0 ( k ) , x i ( k ) ) = min ⁡ i max ⁡ k ∣ x 0 ( k ) − x i ( k ) ∣ + ξ min ⁡ i max ⁡ k ∣ x 0 ( k ) − x i ( k ) ∣ ∣ x 0 ( k ) − x i ( k ) ∣ + ξ min ⁡ i max ⁡ k ∣ x 0 ( k ) − x i ( k ) ∣ γ ( X 0 , X i ) = 1 n ∑ k = 1 n γ ( x 0 ( k ) , x i ( k ) ) \gamma(x_0(k),x_i(k))=\frac{\min_{i}\max_k|x_{0}(k)-x_i(k)|+\xi\min_{i}\max_k|x_{0}(k)-x_i(k)|}{|x_0(k)-x_i(k)|+\xi\min_{i}\max_k|x_{0}(k)-x_i(k)|} \\ \gamma(X_0,X_i)=\frac{1}{n}\sum_{k=1}^n\gamma(x_0(k),x_i(k)) γ(x0(k),xi(k))=x0(k)xi(k)+ξminimaxkx0(k)xi(k)minimaxkx0(k)xi(k)+ξminimaxkx0(k)xi(k)γ(X0,Xi)=n1k=1nγ(x0(k),xi(k))
γ ( X 0 , X i ) \gamma(X_0,X_i) γ(X0,Xi)满足灰色关联公理, 其中 ξ \xi ξ称为分辨系数. γ ( X 0 , X i ) \gamma(X_0,X_i) γ(X0,Xi)称为 X 0 X_0 X0 X i X_i Xi的灰色关联度(邓聚龙, 1985)
灰色关联度 γ ( X 0 , X i ) \gamma\left(X_{0}, X_{i}\right) γ(X0,Xi) 常简记为 γ 0 i , k \gamma_{0 i}, k γ0i,k 点关联系数 γ ( x 0 ( k ) , x i ( k ) ) \gamma\left(x_{0}(k), x_{i}(k)\right) γ(x0(k),xi(k)) 简记为 γ 0 i ( k ) . \gamma_{0 i}(k) . γ0i(k).
灰色关联度的计算步骤如下.
第一步: 求各序列的初值象 (或均值象). 令
X i ′ = X i x i ( 1 ) = ( x i ′ ( 1 ) , x i ′ ( 2 ) , ⋯   , x i ′ ( n ) ) , i = 0 , 1 , 2 , ⋯   , m X_{i}^{\prime}=\frac{X_{i}}{x_{i}(1)}=\left(x_{i}^{\prime}(1), x_{i}^{\prime}(2), \cdots, x_{i}^{\prime}(n)\right), \quad i=0,1,2, \cdots, m Xi=xi(1)Xi=(xi(1),xi(2),,xi(n)),i=0,1,2,,m
第二步: 求 X 0 X_{0} X0 X i X_{i} Xi 的初值象 ( ( ( 或均值象) 对应分量之差的绝对值序列. 记
Δ i ( k ) = ∣ x 0 ′ ( k ) − x i ′ ( k ) ∣ , Δ i = ( Δ i ( 1 ) , Δ i ( 2 ) , ⋯   , Δ i ( n ) ) , i = 1 , 2 , ⋯   , m \Delta_{i}(k)=\left|x_{0}^{\prime}(k)-x_{i}^{\prime}(k)\right|, \quad \Delta_{i}=\left(\Delta_{i}(1), \Delta_{i}(2), \cdots, \Delta_{i}(n)\right), \quad i=1,2, \cdots, m Δi(k)=x0(k)xi(k),Δi=(Δi(1),Δi(2),,Δi(n)),i=1,2,,m
第三步: 求 Δ i ( k ) = ∣ x 0 ′ ( k ) − x i ′ ( k ) ∣ , k = 1 , 2 , ⋯   , n ; i = 1 , 2 , ⋯   , m \Delta_{i}(k)=\left|x_{0}^{\prime}(k)-x_{i}^{\prime}(k)\right|, k=1,2, \cdots, n ; i=1,2, \cdots, m Δi(k)=x0(k)xi(k),k=1,2,,n;i=1,2,,m 的最大值与最小值.
记为
M = max ⁡ i max ⁡ k Δ i ( k ) , m = min ⁡ i min ⁡ k Δ i ( k ) M=\max _{i} \max _{k} \Delta_{i}(k), \quad m=\min _{i} \min _{k} \Delta_{i}(k) M=imaxkmaxΔi(k),m=iminkminΔi(k)
第四步: 计算关联系数
γ 0 i ( k ) = m + ξ M Δ i ( k ) + ξ M , ξ ∈ ( 0 , 1 ) , k = 1 , 2 , ⋯   , n ; i = 1 , 2 , ⋯   , m \gamma_{0 i}(k)=\frac{m+\xi M}{\Delta_{i}(k)+\xi M}, \quad \xi \in(0,1), \quad k=1,2, \cdots, n ; \quad i=1,2, \cdots, m γ0i(k)=Δi(k)+ξMm+ξM,ξ(0,1),k=1,2,,n;i=1,2,,m
第五步: 求出关联系数的平均值即所要的关联度
γ 0 i = 1 n ∑ k = 1 n γ 0 i ( k ) , i = 1 , 2 , ⋯   , m \gamma_{0 i}=\frac{1}{n} \sum_{k=1}^{n} \gamma_{0 i}(k), \quad i=1,2, \cdots, m γ0i=n1k=1nγ0i(k),i=1,2,,m

  • 举个例子
    2001 − 2005 2001-2005 20012005 年, 我国 G D P \mathrm{GDP} GDP 以及第一产业、第二产业、第三产业增加值数(单
    位: 千亿元) 分别如下:
    GDP 为
    X 1 = ( x 1 ( 1 ) , x 1 ( 2 ) , x 1 ( 3 ) , x 1 ( 4 ) , x 1 ( 5 ) ) = ( 109.7 , 120.3 , 135.8 , 159.9 , 183.1 ) X_{1}=\left(x_{1}(1), x_{1}(2), x_{1}(3), x_{1}(4), x_{1}(5)\right)=(109.7,120.3,135.8,159.9,183.1) X1=(x1(1),x1(2),x1(3),x1(4),x1(5))=(109.7,120.3,135.8,159.9,183.1)
    第一产业增加值为
    X 2 = ( x 2 ( 1 ) , x 2 ( 2 ) , x 2 ( 3 ) , x 2 ( 4 ) , x 2 ( 5 ) ) = ( 15.5 , 16.2 , 17.1 , 21.0 , 23.1 ) X_{2}=\left(x_{2}(1), x_{2}(2), x_{2}(3), x_{2}(4), x_{2}(5)\right)=(15.5,16.2,17.1,21.0,23.1) X2=(x2(1),x2(2),x2(3),x2(4),x2(5))=(15.5,16.2,17.1,21.0,23.1)
    第二产业增加值为
    X 3 = ( x 3 ( 1 ) , x 3 ( 2 ) , x 3 ( 3 ) , x 3 ( 4 ) , x 3 ( 5 ) ) = ( 49.5 , 53.9 , 62.4 , 73.9 , 87.0 ) X_{3}=\left(x_{3}(1), x_{3}(2), x_{3}(3), x_{3}(4), x_{3}(5)\right)=(49.5,53.9,62.4,73.9,87.0) X3=(x3(1),x3(2),x3(3),x3(4),x3(5))=(49.5,53.9,62.4,73.9,87.0)
    第三产业增加值为
    X 4 = ( x 4 ( 1 ) , x 4 ( 2 ) , x 4 ( 3 ) , x 4 ( 4 ) , x 4 ( 5 ) ) = ( 44.6 , 50.2 , 56.3 , 65.0 , 73.0 ) X_{4}=\left(x_{4}(1), x_{4}(2), x_{4}(3), x_{4}(4), x_{4}(5)\right)=(44.6,50.2,56.3,65.0,73.0) X4=(x4(1),x4(2),x4(3),x4(4),x4(5))=(44.6,50.2,56.3,65.0,73.0)
    资料来源: 2006 中国统计年鉴.
    G D P \mathrm{GDP} GDP 为系统行为特征序列, 计算 X 2 , X 3 , X 4 X_{2}, X_{3}, X_{4} X2,X3,X4 X 1 X_{1} X1 的灰色关联度. 解 以 X 1 X_{1} X1 为系统行为特征序列计算关联度.
    第一步: 求初值象. 由 X i ′ = X i x i ( 1 ) = ( x i ′ ( 1 ) , x i ′ ( 2 ) , x i ′ ( 3 ) , x i ′ ( 4 ) , x i ′ ( 5 ) ) , i = 1 , 2 , 3 , 4 , X_{i}^{\prime}=\frac{X_{i}}{x_{i}(1)}=\left(x_{i}^{\prime}(1), x_{i}^{\prime}(2), x_{i}^{\prime}(3), x_{i}^{\prime}(4), x_{i}^{\prime}(5)\right), i=1,2,3,4, Xi=xi(1)Xi=(xi(1),xi(2),xi(3),xi(4),xi(5)),i=1,2,3,4,
    X 1 ′ = ( 1 , 1.0966 , 1.2379 , 1.4576 , 1.6691 ) X 2 ′ = ( 1 , 1.0452 , 1.1032 , 1.3548 , 1.4903 ) X 3 ′ = ( 1 , 1.0889 , 1.2606 , 1.4929 , 1.7576 ) X 4 ′ = ( 1 , 1.1256 , 1.2623 , 1.4574 , 1.6368 ) \begin{aligned} X_{1}^{\prime} &=(1,1.0966,1.2379,1.4576,1.6691) \\ X_{2}^{\prime} &=(1,1.0452,1.1032,1.3548,1.4903) \\ X_{3}^{\prime} &=(1,1.0889,1.2606,1.4929,1.7576) \\ X_{4}^{\prime} &=(1,1.1256,1.2623,1.4574,1.6368) \end{aligned} X1X2X3X4=(1,1.0966,1.2379,1.4576,1.6691)=(1,1.0452,1.1032,1.3548,1.4903)=(1,1.0889,1.2606,1.4929,1.7576)=(1,1.1256,1.2623,1.4574,1.6368)
    第二步: x 2 , X 3 , X 4 x_{2}, X_{3}, X_{4} x2,X3,X4 X 1 X_{1} X1 初值象对应分量之差的绝对值序列. 由 Δ i ( k ) = \Delta_{i}(k)= Δi(k)= ∣ x 1 ′ ( k ) − x i ′ ( k ) ∣ , i = 2 , 3 , 4 , \left|x_{1}^{\prime}(k)-x_{i}^{\prime}(k)\right|, i=2,3,4, x1(k)xi(k),i=2,3,4,
    Δ 2 = ( 0 , 0.0515 , 0.1347 , 0.1028 , 0.1788 ) Δ 3 = ( 0 , 0.0077 , 0.0227 , 0.0353 , 0.0885 ) Δ 4 = ( 0 , 0.0289 , 0.0244 , 0.0002 , 0.0323 ) \begin{array}{l} \Delta_{2}=(0,0.0515,0.1347,0.1028,0.1788) \\ \Delta_{3}=(0,0.0077,0.0227,0.0353,0.0885) \\ \Delta_{4}=(0,0.0289,0.0244,0.0002,0.0323) \end{array} Δ2=(0,0.0515,0.1347,0.1028,0.1788)Δ3=(0,0.0077,0.0227,0.0353,0.0885)Δ4=(0,0.0289,0.0244,0.0002,0.0323)
    第三步: 求 Δ i ( k ) = ∣ x 1 ′ ( k ) − x i ′ ( k ) ∣ , i = 2 , 3 , 4 ; k = 1 , 2 , 3 , 4 , 5 \Delta_{i}(k)=\left|x_{1}^{\prime}(k)-x_{i}^{\prime}(k)\right|, i=2,3,4 ; k=1,2,3,4,5 Δi(k)=x1(k)xi(k),i=2,3,4;k=1,2,3,4,5 的最大值与最小值.
    M = max ⁡ i max ⁡ k Δ i ( k ) = 0.1788 m = min ⁡ i min ⁡ k Δ i ( k ) = 0 \begin{array}{c} M=\max _{i} \max _{k} \Delta_{i}(k)=0.1788 \\ m=\min _{i} \min _{k} \Delta_{i}(k)=0 \end{array} M=maximaxkΔi(k)=0.1788m=miniminkΔi(k)=0
    第四步: 求关联系数. 取 ξ = 0.5 , \xi=0.5, ξ=0.5,
    γ 1 i ( k ) = m + ξ M Δ i ( k ) + ξ M = 0.0894 Δ i ( k ) + 0.0894 , i = 2 , 3 , 4 ; k = 1 , 2 , 3 , 4 , 5 \gamma_{1 i}(k)=\frac{m+\xi M}{\Delta_{i}(k)+\xi M}=\frac{0.0894}{\Delta_{i}(k)+0.0894}, \quad i=2,3,4 ; \quad k=1,2,3,4,5 γ1i(k)=Δi(k)+ξMm+ξM=Δi(k)+0.08940.0894,i=2,3,4;k=1,2,3,4,5
    从而
    r 12 ( 1 ) = 1 , r 12 ( 2 ) = 0.6346 , r 12 ( 3 ) = 0.3989 , r 12 ( 4 ) = 0.4652 , r 12 ( 5 ) = 0.3333 r 13 ( 1 ) = 1 , r 13 ( 2 ) = 0.9203 , r 13 ( 3 ) = 0.7976 , r 13 ( 4 ) = 0.7168 , r 13 ( 5 ) = 0.5026 r 14 ( 1 ) = 1 , r 14 ( 2 ) = 0.7555 , r 14 ( 3 ) = 0.7855 , r 14 ( 4 ) = 0.9976 , r 14 ( 5 ) = 0.7344 \begin{array}{llll} r_{12}(1)=1, & r_{12}(2)=0.6346, & r_{12}(3)=0.3989, & r_{12}(4)=0.4652, & r_{12}(5)=0.3333 \\ r_{13}(1)=1, & r_{13}(2)=0.9203, & r_{13}(3)=0.7976, & r_{13}(4)=0.7168, & r_{13}(5)=0.5026 \\ r_{14}(1)=1, & r_{14}(2)=0.7555, & r_{14}(3)=0.7855, & r_{14}(4)=0.9976, & r_{14}(5)=0.7344 \end{array} r12(1)=1,r13(1)=1,r14(1)=1,r12(2)=0.6346,r13(2)=0.9203,r14(2)=0.7555,r12(3)=0.3989,r13(3)=0.7976,r14(3)=0.7855,r12(4)=0.4652,r13(4)=0.7168,r14(4)=0.9976,r12(5)=0.3333r13(5)=0.5026r14(5)=0.7344
    第五步: 计算灰色关联度
    γ 12 = 1 5 ∑ k = 1 5 γ 12 ( k ) = 0.5664 γ 13 = 1 5 ∑ k = 1 5 γ 13 ( k ) = 0.7875 γ 14 = 1 5 ∑ k = 1 5 γ 14 ( k ) = 0.8546 \begin{array}{l} \gamma_{12}=\frac{1}{5} \sum_{k=1}^{5} \gamma_{12}(k)=0.5664 \\ \gamma_{13}=\frac{1}{5} \sum_{k=1}^{5} \gamma_{13}(k)=0.7875 \\ \gamma_{14}=\frac{1}{5} \sum_{k=1}^{5} \gamma_{14}(k)=0.8546 \end{array} γ12=51k=15γ12(k)=0.5664γ13=51k=15γ13(k)=0.7875γ14=51k=15γ14(k)=0.8546
    因此, 第三产业与GDP关联度最大, 第二产业关联度次之, 第一产业关联度最小.
  • 代码实现
import numpy as np

X1 = [109.7, 120.3, 135.8, 159.9, 183.1]
X2 = [15.5, 16.2, 17.1, 21.0, 23.1]
X3 = [49.5, 53.9, 62.4, 73.9, 87.0]
X4 = [44.6, 50.2, 56.3 ,65.0, 73.0]

def initialize(x):
    d = []
    for i in range(len(x)):
        d.append(round(x[i]/x[0],4))
    return d

def minus(X,x):
    d = []
    for i in range(len(X)):
        d.append(round(abs(X[i]-x[i]),4))
    return d
    

X11 =  initialize(X1)
X22 =  initialize(X2)
delta2 = minus(X11,X22)
X33 =  initialize(X3)
delta3 = minus(X11,X33)
X44 =  initialize(X4)
delta4 = minus(X11,X44)

M = max(delta2 + delta3 + delta4)
m = min(delta2 + delta3 + delta4)

ksi = 0.5
gamma2 = (m + ksi*M)/(np.array(delta2) + ksi*M)
gamma3 = (m + ksi*M)/(np.array(delta3) + ksi*M)
gamma4 = (m + ksi*M)/(np.array(delta4) + ksi*M)

np.mean(gamma2)
>>> 0.5664692086702057
np.mean(gamma3)
>>> 0.787530531907082
np.mean(gamma4)
>>> 0.8546034878054456

代码结果与手动计算结果一致

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Infinity343

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值