Matlab實現關聯分析和優勢分析

1、關聯分析

現實中事物的聯系很復雜,我們往往就需要對系統分析,哪些因素對他影響較大,那些較小,所以就會用到關聯性分析。
Matlab實現關聯分析和優勢分析的圖1

以下面一個例子來介紹怎么做

x1 = [45.8 43.4 42.3 41.9];
x2 = [39.1 41.6 43.9 44.9];
x3 = [3.4 3.3 3.5 3.5];
x4 = [6.7 6.8 5.4 4.7];

求x2,x3,x4與x1的關聯性,并確定誰與x1的關聯性最強

x = [x1;x2;x3;x4];%將數據組成數據矩陣

首先就是標準化數據也叫初值化數據即xi(k)/xi(1);

for i = 1:4
x(i,:) = x(i,:)/x(i,1);
end
data = x; %標準化之后的數據

上面每一個數據有4個觀測時刻

n = size(data,2);

這樣就求出了觀測時刻的個數。

接下來就是求各比較數據與參考數據的關系

ck = data(1,:);%提出參考列
bj = data(2:end,:);%提出比較列
m2 = size(bj,1);%求比較數列的個數,即行數
t = zeros(size(bj));
for j = 1:m2
t(j,:) = bj(j,:) - ck;%相當于x0(t)-xs(t)
end

然后就是求關聯系數了

mn = min(min(abs(t')));%求最小差
mx = max(max(abs(t')));%求最大差
rho = 0.5;%分辨系數設置
ksi = (mn+rho*mx)./(abs(t)+rho*mx);%求關聯系數

最后就是求關聯度和進行關聯度排名了

r = sum(ksi,2)/n;%求關聯度
[rs,rind] = sort(r,'descend')%對關聯度進行排序

運行結果為:

Matlab實現關聯分析和優勢分析的圖2

rs代表關聯度從大到小排序,rind代表對應的x的序號。可以看出x2以x1的關聯性是最大的。

代碼為

Matlab實現關聯分析和優勢分析的圖3

2、優勢分析

優勢分析就是當目標數列不止一個,與目標數列相關的因素也不止一個時,為了判斷那個因素的影響較大,就會進行優勢分析。假如有m個目標,記為y1,y2,...,ym。再假設有l個因素,記為x1,x2,…,xl。顯然每一個目標對l個因素就有l個關聯度。設rij表示相關因素xj對目標yi的關聯度,可構造關聯(度)矩陣R=(rij)mxl

下面以一個例子來說明

下面為目標數列

y1 = [170 174 197 216.4 235.8];
y2 = [57.55 71.74 76.8 80.7 89.85];
y3 = [68.56 70 85.38 99.83 103.4];

下面為因素數列

x1 = [308.58 310 295 346 367];
x2 = [195.4 189.9 189.2 205 222.7];
x3 = [24.6 21 12.2 15.1 14.57];
x4 = [20 25.6 23.3 29.2 30];
x5 = [18.98 19 22.3 23.5 27.66];

通過分析得到關聯度矩陣R為

Matlab實現關聯分析和優勢分析的圖4

可以看出最大的數為0.9468,說明x2對y1的影響較大。

具體代碼為

Matlab實現關聯分析和優勢分析的圖5

優勢分析代碼中求關聯度的函數為根據上述求關聯度代碼改編成關聯度函數。


文章來源:matlab分享

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

1
1