备战数学建模16 您所在的位置:网站首页 相关性分析数学模型有哪些 备战数学建模16

备战数学建模16

2024-07-07 21:27| 来源: 网络整理| 查看: 265

目录

一、变量类型与相关性分析

1-变量类型及分析

2-两变量的相关性分析

二、相关性检验实例

1-卡方检验

2-Eta检验

3-Pearson检验

4-Speraman与kendall检验

三、偏相关分析

1-偏相关分析基本概念

2-偏相关分析的案例

一、变量类型与相关性分析 1-变量类型及分析

 

2-两变量的相关性分析

Peaeson系数法需要通过t检验,通过则说明结果不具有偶然性。

 pearson系数法需要是定距或者定比变量。

 

 

二、相关性检验实例 1-卡方检验

对于定类和定类的变量,我们采用卡方检验,具体如下所示:

 我们使用SPSS进行相关性分析,具体步骤如下:

首先导入数据,如下所示:

 点击分析->描述统计->交叉表->统计->勾选卡方检验,检验结果可以发现,显著性0.079,大于0.05,我们认为性别和吸烟存在偶然性,不存在很强的相关性。

我们修改一下数据,尽量让数据一致,也就是尽量让性别和吸烟有关,数据如下:

卡方检验结构如下,很明显,显著性小于0.05,说明抽烟和性别具有很强的相关性。

 

如果题目给出的数据类型是带频数的数据,如下所示,我们看一下:

在spss中点击数据->个案加权->勾选个案加权系数后。

此时再通过分析去作卡方检验就可以了。由下图可知显著性检验的值为0.00,则说明吸烟和性别由明显的相关关系。

2-Eta检验

Eta检验除了不适用于作定距和定距变量的相关性检验,其它的基本都适用。

一般是:行作为自变量,列作为因变量。我们将数据导入SPSS,然后点击分析->描述统计->交叉表->导入变量-> 在统计中勾选相关性即可。

从检验结果中发现,检验值为0.91,大于0.5,说明显著相关。 

3-Pearson检验

Pearson检验可以用于定距和定比变量的相关性检验。

 在SPSS中导入数据,依次点击分析->相关->双变量->勾选皮尔逊,点击确定即可。

得到的检验结果如下所示,相关性的绝对值为0.95,说明销售额和价格极高相关,即相关性显著。

 

 

上述Pearson相关性检验可以使用如下MATLAB函数,具体如下:  

function coeff = myPearson(X , Y) % 本函数实现了皮尔逊相关系数的计算操作 % 皮尔逊相关系数计算公式(P18)及无偏相关系数矫正公式(P19)参见《现代气候统计诊断与预测技术》-魏凤英 % % 输入: % X:输入的数值序列 % Y:输入的数值序列 % % 输出: % coeff:两个输入数值序列X,Y的相关系数 % if length(X) ~= length(Y) error('两个数值数列的维数不相等'); return; end fenzi = sum((X-sum(X)/length(X)).*(Y-sum(Y)/length(Y))); fenmu = sqrt(sum((X-sum(X)/length(X)).^2))*sqrt(sum((Y-sum(Y)/length(Y)).^2)); coef = fenzi / fenmu; if length(X)>30 coeff = coef; elseif length(X)>4 && length(X) tnorm ttest = Z; else ttest = NaN; end elseif Z == 3 tnorm = 3.18; if tvalue > tnorm ttest = Z; else ttest = NaN; end elseif Z == 4 tnorm = 2.78; if tvalue > tnorm ttest = Z; else ttest = NaN; end elseif Z == 5 tnorm = 2.57; if tvalue > tnorm ttest = Z; else ttest = NaN; end elseif Z == 6 tnorm = 2.45; if tvalue > tnorm ttest = Z; else ttest = NaN; end elseif Z == 7 tnorm = 2.37; if tvalue > tnorm ttest = Z; else ttest = NaN; end elseif Z == 8 tnorm = 2.31; if tvalue > tnorm ttest = X; else ttest = NaN; end elseif Z == 9 tnorm = 2.26; if tvalue > tnorm ttest = Z; else ttest = NaN; end elseif Z == 10 tnorm = 2.23; if tvalue > tnorm ttest = Z; else ttest = NaN; end elseif Z == 11 tnorm = 2.20; if tvalue > tnorm ttest = Z; else ttest = NaN; end elseif Z == 12 tnorm = 2.18; if tvalue > tnorm ttest = Z; else ttest = NaN; end elseif Z == 13 tnorm = 2.16; if tvalue > tnorm ttest = Z; else ttest = NaN; end elseif Z == 14 tnorm = 2.15; if tvalue > tnorm ttest = Z; else ttest = NaN; end elseif Z == 15 tnorm = 2.13; if tvalue > tnorm ttest = Z; else ttest = NaN; end elseif Z == 16 tnorm = 2.12; if tvalue > tnorm ttest = Z; else ttest = NaN; end elseif Z == 17 tnorm = 2.11; if tvalue > tnorm ttest = Z; else ttest = NaN; end elseif Z == 18 tnorm = 2.10; if tvalue > tnorm ttest = Z; else ttest = NaN; end elseif Z == 19 tnorm = 2.09; if tvalue > tnorm ttest = Z; else ttest = NaN; end elseif Z == 20 tnorm = 2.09; if tvalue > tnorm ttest = Z; else ttest = NaN; end elseif Z == 21 tnorm = 2.08; if tvalue > tnorm ttest = Z; else ttest = NaN; end elseif Z == 22 tnorm = 2.07; if tvalue > tnorm ttest = Z; else ttest = NaN; end elseif Z == 23 tnorm = 2.07; if tvalue > tnorm ttest = Z; else ttest = NaN; end elseif Z == 24 tnorm = 2.06; if tvalue > tnorm ttest = Z; else ttest = NaN; end elseif Z == 25 tnorm = 2.06; if tvalue > tnorm ttest = Z; else ttest = NaN; end elseif Z == 26 tnorm = 2.06; if tvalue > tnorm ttest = Z; else ttest = NaN; end elseif Z == 27 tnorm = 2.05; if tvalue > tnorm ttest = Z; else ttest = NaN; end elseif Z == 28 tnorm = 2.05; if tvalue > tnorm ttest = Z; else ttest = NaN; end elseif Z == 29 tnorm = 2.04; if tvalue > tnorm ttest = Z; else ttest = NaN; end elseif Z == 30 tnorm = 2.04; if tvalue > tnorm ttest = Z; else ttest = NaN; end else tnorm = 1.96; if tvalue > tnorm ttest = X; else ttest = NaN; end end if ttest ~=NaN disp('通过t检验!!!') ; else disp('未通过t检验!!!') ; end %函数myttest005结束

在命令窗口调用t检验函数,具体如下:

myttest005(x,y) ;

输出结果:

 

4-Speraman与kendall检验

 使用SPSS,分析->相关->勾选斯皮尔曼,确定即可。可以看出结果-0.986,有极高相关性。

当然也可以使用MATLAB编程,进行斯皮尔曼检验,函数如下:

function coeff = mySpearman(X , Y) % 本函数用于实现斯皮尔曼等级相关系数的计算操作 % % 输入: % X:输入的数值序列 % Y:输入的数值序列 % % 输出: % coeff:两个输入数值序列X,Y的相关系数 if length(X) ~= length(Y) error('两个数值数列的维数不相等'); return; end N = length(X); %得到序列的长度 Xrank = zeros(1 , N); %存储X中各元素的排行 Yrank = zeros(1 , N); %存储Y中各元素的排行 %计算Xrank中的各个值 for i = 1 : N cont1 = 1; %记录大于特定元素的元素个数 cont2 = -1; %记录与特定元素相同的元素个数 for j = 1 : N if X(i) < X(j) cont1 = cont1 + 1; elseif X(i) == X(j) cont2 = cont2 + 1; end end Xrank(i) = cont1 + mean([0 : cont2]); end %计算Yrank中的各个值 for i = 1 : N cont1 = 1; %记录大于特定元素的元素个数 cont2 = -1; %记录与特定元素相同的元素个数 for j = 1 : N if Y(i) < Y(j) cont1 = cont1 + 1; elseif Y(i) == Y(j) cont2 = cont2 + 1; end end Yrank(i) = cont1 + mean([0 : cont2]); end %利用差分等级(或排行)序列计算斯皮尔曼等级相关系数 fenzi = 6 * sum((Xrank - Yrank).^2); fenmu = N * (N^2 - 1); coeff = 1 - fenzi / fenmu; end %函数mySpearman结束

在命令窗口输入数据,进行斯皮尔曼检验,具体如下:

x = [20 15 40 30 42 60 65 70 53 78; 25 18 60 45 62 88 92 99 75 98]; x = x'; mySpearman(x(:,1),x(:,2)) myttest005(x(:,1),x(:,2));

得到的结果:0.9879,通过t检验!!

三、偏相关分析 1-偏相关分析基本概念

 

 

2-偏相关分析的案例

在spss中导入数据,点击分析->相关->偏相关,将评价的变量和控制的变量导入,点击去确定即可。

检验结果如下所示,从相关性表中可以发现,控制降雨量的情况下,降雨强度和土壤侵蚀量的相关性系数是0.754,如果不控制,则是0.612,说明降雨量的存在,降低了降雨强度和土壤侵蚀量的相关性。

 

当有变革变量的时候,两个变量分析相关性,需要控制其余变量,才能保证相关性检验更准确。

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有