1. 程式人生 > >數學建模常用模型13 :相關性分析

數學建模常用模型13 :相關性分析

相關分析研究的是兩個變數的相關性,但你研究的兩個變數必須是有關聯的,如果你把歷年人口總量和你歷年的身高做相關性分析,分析結果會呈現顯著地相關,但它沒有實際的意義,因為人口總量和你的身高都是逐步增加的,從資料上來說是有一致性,但他們沒有現實意義。

相關性分析和聚類分析一樣,比較簡單,數學建模中經常用,但是每次都只用一小步,或者只是對資料進行一下分析,根據分析的結果確定使用的方法,所以這些方法不要掌握的特別深,能會用SPSS實現就行。相關性分析可以是簡單的理解為各個變數之間的相關程度。

相關性分析的SPSS操作不在演示,比較簡單,大家可以參考下面連結操作一下。

一般這樣認為:

0.8-1.0

極強相關

0.6-0.8 強相關

0.4-0.6 中等程度相關

0.2-0.4 弱相關

0.0-0.2 極弱相關或無相關

Sperman或kendall等級相關分析

Person相關(樣本點的個數比較多)//一般常用皮爾遜相關

Copula相關(比較難,金融數學,概率密度)

典型相關分析(因變數組Y1234,自變數組X1234,各自變數組相關性比較強,問哪一個因變數與哪一個自變數關係比較緊密?)

下面是一個典型相關性分析的MATLAB的程式,想看的可以看一下

例 滿意度典型相關分析

某調查公司從一個大型零售公司隨機調查了 784 人,測量了 5 個職業特性指標和 7個職業滿意變數,有關的變數見表 1討論兩組指標之間是否相聯絡。

表1 指標變量表

X組

X1—使用者反饋,X2—任務重要性,X3—任務多樣性,X4—任務特殊性

X5—自主性

Y組

Y1—主管滿意度,Y2—事業前景滿意度,Y3—財政滿意度,Y4—工作強度滿意度,Y5—公司地位滿意度, Y6—工作滿意度,Y7—總體滿意度

相關係數矩陣資料見表 2

表2 相關係數矩陣資料

X1

X2

X3

X4

X5

Y1

Y2

Y3

Y4

Y5

Y6

Y7

X1

1.00

0.49

0.53

0.49

0.51

0.33

0.32

0.20

0.19

0.30

0.37

0.21

X2

0.49

1.00

0.57

0.46

0.53

0.30

0.21

0.16

0.08

0.27

0.35

0.20

X3

0.53

0.57

1.00

0.48

0.57

0.31

0.23

0.14

0.07

0.24

0.37

0.18

X4

0.49

0.46

0.48

1.00

0.57

0.24

0.22

0.12

0.19

0.21

0.29

0.16

X5

0.51

0.53

0.57

0.57

1.00

0.38

0.32

0.17

0.23

0.32

0.36

0.27

Y1

0.33

0.30

0.31

0.24

0.38

1.00

0.43

0.27

0.24

0.34

0.37

0.40

Y2

0.32

0.21

0.23

0.22

0.32

0.43

1.00

0.33

0.26

0.54

0.32

0.58

Y3

0.20

0.16

0.14

0.12

0.17

0.27

0.33

1.00

0.25

0.46

0.29

0.45

Y4

0.19

0.08

0.07

0.19

0.23

0.24

0.26

0.25

1.00

0.28

0.30

0.27

Y5

0.30

0.27

0.24

0.21

0.32

0.34

0.54

0.46

0.28

1.00

0.35

0.59

Y6

0.37

0.35

0.37

0.29

0.36

0.37

0.32

0.29

0.30

0.35

1.00

0.31

Y7

0.21

0.20

0.18

0.16

0.27

0.40

0.58

0.45

0.27

0.59

0.31

1.00

一些計算結果的資料見下面的表格。

表3 的典型變數

u1

u2

u3

u4

u5

X1

0.421704

-0.34285

0.857665

-0.78841

0.030843

X2

0.195106

0.668299

-0.44343

-0.26913

0.983229

X3

0.167613

0.853156

0.259213

0.468757

-0.91414

X4

-0.02289

-0.35607

0.423106

1.042324

0.524367

X5

0.459656

-0.72872

-0.97991

-0.16817

-0.43924

表 4原始變數與本組典型變數之間的相關係數

u1

u2

u3

u4

u5

X1

0.829349

-0.10934

0.48534

-0.24687

0.061056

X2

0.730368

0.436584

-0.20014

0.002084

0.485692

X3

0.753343

0.466088

0.105568

0.301958

-0.33603

X4

0.615952

-0.22251

0.205263

0.661353

0.302609

X5

0.860623

-0.26604

-0.38859

0.148424

-0.12457

V1

V2

V3

V4

V5

Y1

0.756411

0.044607

0.339474

0.129367

-0.33702

Y2

0.643884

0.358163

-0.17172

0.352983

-0.33353

Y3

0.387242

0.037277

-0.17673

0.53477

0.414847

Y4

0.377162

0.791935

-0.00536

-0.28865

0.334077

Y5

0.653234

0.108391

0.209182

0.437648

0.434613

Y6

0.803986

-0.2416

-0.23477

-0.40522

0.196419

Y7

0.502422

0.162848

0.4933

0.188958

0.067761

表 5原始變數與對應組典型變數之間的相關係數

V1

V2

V3

V4

V5

X1

0.459216

0.025848

-0.05785

0.017831

0.003497

X2

0.404409

-0.10321

0.023854

-0.00015

0.027816

X3

0.417131

-0.11019

-0.01258

-0.02181

-0.01924

X4

0.341056

0.052602

-0.02446

-0.04777

0.01733

X5

0.476532

0.062893

0.046315

-0.01072

-0.00713

u1

u2

u3

u4

u5

Y1

0.41883

-0.01055

-0.04046

-0.00934

-0.0193

Y2

0.356523

-0.08467

0.020466

-0.0255

-0.0191

Y3

0.214418

-0.00881

0.021064

-0.03863

0.023758

Y4

0.208837

-0.18722

0.000639

0.020849

0.019133

Y5

0.3617

-0.02562

-0.02493

-0.03161

0.02489

Y6

0.445172

0.057116

0.027981

0.029268

0.011249

Y7

0.278194

-0.0385

-0.05879

-0.01365

0.003881

表6 典型相關係數

1

2

3

4

5

0.5537

0.2364

0.1192

0.0722

0.0573

MATLAB原始碼:

clc,clear
load r.txt %原始的相關係數矩陣儲存在純文字檔案r.txt中
n1=5;n2=7;num=min(n1,n2);
s1=r(1:n1,1:n1); %提出X與X的相關係數
s12=r(1:n1,n1+1:end); %提出X與Y的相關係數
s21=s12'; %提出Y與X的相關係數
s2=r(n1+1:end,n1+1:end); %提出Y與Y的相關係數
m1=inv(s1)*s12*inv(s2)*s21; %計算矩陣M1
m2=inv(s2)*s21*inv(s1)*s12; %計算矩陣M2
[vec1,val1]=eig(m1); %求M1的特徵向量和特徵值
for i=1:n1
    vec1(:,i)=vec1(:,i)/sqrt(vec1(:,i)'*s1*vec1(:,i)); %特徵向量歸一化,滿足a's1a=1
    vec1(:,i)=vec1(:,i)/sign(sum(vec1(:,i))); %特徵向量乘以1或-1,保證所有分量和為正
end
val1=sqrt(diag(val1)); %計算特徵值的平方根
[val1,ind1]=sort(val1,'descend'); %按照從大到小排列
a=vec1(:,ind1(1:num)) %取出X組的係數陣
dcoef1=val1(1:num) %提出典型相關係數
[vec2,val2]=eig(m2);
for i=1:n2
    vec2(:,i)=vec2(:,i)/sqrt(vec2(:,i)'*s2*vec2(:,i)); %特徵向量歸一化,滿足b's2b=1
    vec2(:,i)=vec2(:,i)/sign(sum(vec2(:,i))); %特徵向量乘以1或-1,保證所有分量和為正
end
val2=sqrt(diag(val2)); %計算特徵值的平方根
[val2,ind2]=sort(val2,'descend'); %按照從大到小排列
b=vec2(:,ind2(1:num)) %取出Y組的係數陣
dcoef2=val2(1:num) %提出典型相關係數
x_u_r=s1*a %x,u的相關係數
y_v_r=s2*b %y,v的相關係數
x_v_r=s12*b %x,v的相關係數
y_u_r=s21*a %y,u的相關係數
mu=sum(x_u_r.^2)/n1 %x組原始變數被u_i解釋的方差比例
mv=sum(x_v_r.^2)/n1 %x組原始變數被v_i解釋的方差比例
nu=sum(y_u_r.^2)/n2 %y組原始變數被u_i解釋的方差比例
nv=sum(y_v_r.^2)/n2 %y組原始變數被v_i解釋的方差比例
fprintf('X組的原始變數被u1~u%d解釋的比例為%f\n',num,sum(mu));
fprintf('Y組的原始變數被v1~v%d解釋的比例為%f\n',num,sum(nv));

可以看出,所有五個表示職業特性的變數與有大致相同的相關係數,視為形容職業特性的指標。第一對典型變數的第二個成員V1與Y1,Y2,Y5,Y6有較大的相關係數,說明V1主要代表了主管滿意度,事業前景滿意度,公司地位滿意度和工種滿意度。而U1和V1之間的相關係數0.5537。

u1和v1解釋的本組原始變數的比率:

{m_{{u_1}}} = 0.5818 ,{n_{{v_1}}} = 0.3721

X組的原始變數被到解釋了100%, Y 組的原始變數被到解釋了80.3%。