灰色關聯分析是什麼
灰色關聯分析同層次分析法和TOPSIS法一樣,可以用來進行系統分析的方法。但與其他方法不同的是灰色關聯分析對樣本數量要求不高,計算量較小,且不會出現量化結果與定性分析結果不符的情況。
灰色關聯分析的基本思想是根據序列曲線集合形狀的相似程度來判斷其聯系是否緊密。曲線越接近,相應序列之間的關聯度就越大,反之則越小。
灰色關聯分析怎麼用
應用1 進行系統分析
第一步:畫統計圖
根據統計圖可得以下結論:
- 四個變量均呈上升趨勢
- 第二産業的增幅較為明顯
- 第二産業和第三産業的差距在後三年相差更大
第二步:确定分析序列
将這四個序列分為一個母序列和多個子序列。
母序列(參考序列)是能反映系統行為特征的序列。類似于因變量,此處記為 x 0 x_0 x0。
子序列(比較序列)是影響系統行為的因素組成的序列。類似于自變量,此處記為 ( x 1 , x 2 , x 3 , . . . x n ) (x_1,x_2,x_3,...x_n) (x1,x2,x3,...xn)。
在本例中,國内生産總值是母序列,第一二三産業是子序列。
第三步:對變量進行預處理
預處理有兩個目的:
- 去量綱
- 縮小變量範圍來簡化計算
預處理的方法:先求出每個名額的均值,再用該名額中的每個元素都除以其均值。
第四步:計算子序列中各個名額與母序列的關聯系數
設子序列的個數為 m m m,每個序列有 n n n個樣本,則我們的資料可以表示為:
x 0 = ( x 0 ( 1 ) , x 0 ( 2 ) , . . . , x 0 ( n ) ) T x_0=(x_0(1),x_0(2),...,x_0(n))^T x0=(x0(1),x0(2),...,x0(n))T
x 1 = ( x 1 ( 1 ) , x 1 ( 2 ) , . . . , x 1 ( n ) ) T x_1=(x_1(1),x_1(2),...,x_1(n))^T x1=(x1(1),x1(2),...,x1(n))T
x m = ( x m ( 1 ) , x m ( 2 ) , . . . , x m ( n ) ) T x_m=(x_m(1),x_m(2),...,x_m(n))^T xm=(xm(1),xm(2),...,xm(n))T
設 a a a為兩極最小差, b b b為兩極最大差
a = m i n ( i ) m i n ( k ) ∣ x 0 ( k ) − x i ( k ) ∣ a=min(i)min(k)|x_0(k)-x_i(k)| a=min(i)min(k)∣x0(k)−xi(k)∣
b = m a x ( i ) m a x ( k ) ∣ x 0 ( k ) − x i ( k ) ∣ b=max(i)max(k)|x_0(k)-x_i(k)| b=max(i)max(k)∣x0(k)−xi(k)∣
如圖
關聯系數 y y y(Gamma值)的公式為:
y ( x 0 ( k ) , x i ( k ) ) = a + ρ b ∣ x 0 ( k ) , x i ( k ) ∣ + ρ b y(x_0(k), x_i(k))=\frac{a+\rho b}{|x_0(k), x_i(k)|+\rho b} y(x0(k),xi(k))=∣x0(k),xi(k)∣+ρba+ρb
其中 ρ \rho ρ為分辨系數,一般取0.5
本例中每個樣本的關聯系數如圖:
第五步:計算各個子序列的灰色關聯度
設灰色關聯度為 y ( x 0 , x i ) y(x_0,x_i) y(x0,xi),則
y ( x 0 , x i ) = 1 n ∑ k = 1 n y ( x 0 ( k ) , x i ( k ) ) y(x_0,x_i)=\frac{1}{n}\sum_{k=1}^{n}y(x_0(k),x_i(k)) y(x0,xi)=n1k=1∑ny(x0(k),xi(k))
(其實就是每個子序列的關聯系數取平均值)
本例:
第一産業灰色關聯度為0.5084
第二産業灰色關聯度為0.6243
第三産業灰色關聯度為0.7573
最後得到結論:灰色關聯度最大的子序列即為對系統影響最大的因素
本例第三産業對國内生産總值影響最大
matlab代碼示例:
%灰色關聯分析
clear;clc
%加載資料,每個序列為一列,母序列在第一列
load gdp.mat
%畫圖
[n ,m]= size(gdp);
for i = 1:m
plot(gdp(:,i), 'x-');
hold on
end
hold off
xlabel('年份')
ylabel('百萬元')
legend({'國内生産總值','第一産業','第二産業','第三産業'})
%對變量進行預處理
y = gdp(:,1);
x = gdp(:,2:end);
x_norm = zeros(n ,m);
x_sum = 0;
for i = 1:m
x_sum = sum(gdp(:,i));
for j = 1:n
x_norm(j, i) = gdp(j, i) / x_sum * n;
end
x_sum = 0;
end
%計算子序列中各個名額與母序列的關聯系數
x_concect = zeros(size(x));
for i = 1: length(x_concect(1,:))
x_concect(:,i) = abs(x_norm(:, 1) - x_norm(:,i+1));
end
a = min(min(x_concect));
b = max(max(x_concect));
%計算灰色關聯度(gamma)
rho = 0.5;
gamma = zeros(n, m-1);
for i = 1:m-1
for j = 1:n
gamma(j, i) = (a + rho * b)/(x_concect(j,i) + rho * b);
end
end
ans = mean(gamma);
disp('最終得到的灰色關聯度分别是:')
disp(ans)
% % 注意:代碼檔案僅供參考,一定不要直接用于自己的數模論文中
% % 國賽對于論文的查重要求非常嚴格,代碼雷同也算作抄襲
學習資源和部分圖檔來自“清風數學模組化”