相关系数R-判定系数R方的matlab实现

相关系数-判定系数

相关系数是最早由统计学家卡尔·皮尔逊设计的统计指标,是研究变量之间线性相关程度的量,一般用字母 r
表示。由于研究对象的不同,相关系数有多种定义方式,较为常用的是皮尔逊相关系数。
相关表和相关图可反映两个变量之间的相互关系及其相关方向,但无法确切地表明两个变量之间相关的程度。相关系数是用以反映变量之间相关关系密切程度的统计指标。相关系数是按积差方法计算,同样以两变量与各自平均值的离差为基础,通过两个离差相乘来反映两变量之间相关程度;着重研究线性的单相关系数。
需要说明的是,皮尔逊相关系数并不是唯一的相关系数,但是最常见的相关系数,以下解释都是针对皮尔逊相关系数。
依据相关现象之间的不同特征,其统计指标的名称有所不同。如将反映两变量间线性相关关系的统计指标称为相关系数(相关系数的平方称为判定系数);将反映两变量间曲线相关关系的统计指标称为非线性相关系数、非线性判定系数;将反映多元线性相关关系的统计指标称为复相关系数、复判定系数等。

matlab编程实现

这里用的是三个实际风速和三个模拟风速,平均值分别为8m/s,12m/s,18m/s。通过技术相关系数,获得模拟风速与实际风速的符合程度。

首先读取excel表中的数据:

clc
clear
DATA = xlsread('T81218');
y8 = DATA(:,2);
s8 = DATA(:,4);
y12 = DATA(:,6);
s12 = DATA(:,8);
y18 = DATA(:,10);
s18 = DATA(:,12);

这里标号y代表实际值,s代表模拟值。
采用corrcoef函数,计算y和s的相关系数,得到的结果是一个2*2矩阵,其中对角线上的元素分别表示y和s的自相关(通常为1),非对角线上的元素分别表示y与s的相关系数和s与y的相关系数(这是我们想要的)。

R8 = corrcoef(y8,s8);

结果比较坑爹R8为

NaN NaN
NaN 1

查找原因,发现源数据出现了问题,y8的有效值只有12001个,而s8有30002个。
相关系数R-判定系数R方的matlab实现_第1张图片
相关系数R-判定系数R方的matlab实现_第2张图片
源数据的总时间长度是一样的,那就是采样时间间隔不一样,打开源数据表,果然,一个是0.05s,一个是0.02s。这种情况有两种解决方案:(1)重新计算,更新源数据,使数据间隔一致;(2)对数据进一步处理,比如先求0.1s的平均值,让数据统一维度。
这里就重新计算一遍吧。
相关系数R-判定系数R方的matlab实现_第3张图片
注意:计算R2时候,我们需要的结果是矩阵里每个元素的平方,特别留意公式中的下标.点
数据修正后的计算结果如下:

R8 R82 R12 R122 R18 R182
0.8252 0.6864 0.9523 0.9069 0.9008 0.8114

相关系数大小对两列数据相关度的判断,目前没有统一定论,可以结合自己的专业情况制定标准,下表采用判定系数,仅供参考。

判定系数R2 相关度
0~0.1 弱相关
0.1~0.6 一般相关
0.6~1 强相关

你可能感兴趣的:(相关系数R-判定系数R方的matlab实现)