柚子快报激活码778899分享:Matlab统计分析-相关系数

http://www.51969.com/

统计分析-相关系数

相关系数 (pearson与spearman)

皮尔逊 person相关系数和斯皮尔曼spearman等级相关系数,它们可用来衡量两个变量之间的**(线性)**相关性的大小,根据数据满足的不同条件,我们要选择不同的相关系数进行计算和分析。

基础概念

总体:所要考察对象的全部个体叫做总体. 我们总是希望得到总体数据的一些特征(例如均值方差等)样本:从总体中所抽取的一部分个体叫做总体的一个样本.统计量:计算这些抽取的样本的统计量来估计总体的统计量 例如使用样本均值、样本标准差来估计总体的均值(平均水平)和总体的标准差(偏离程度)相关关系刻画的是直线相关性

相关系数计算公式

易错点

总结

(1)如果两个变量本身就是线性的关系,那么皮尔逊相关系数绝对值大的就是相关性强,小的就是相关性弱; (2)在不确定两个变量是什么关系的情况下,即使算出皮尔逊相关系数,发现很大,也不能说明那两个变量线性相关,甚至不能说他们相关,我们一定要画出散点图来看才行。

相关系数大小

描述性统计量

对于数学分析类型的数据进行处理时间,都可以进行描述性统计量计算一波。

%描述性统计量的计算

MIN = min(Test); % 每一列的最小值

MAX = max(Test); % 每一列的最大值

MEAN = mean(Test); % 每一列的均值

MEDIAN = median(Test); %每一列的中位数

SKEWNESS = skewness(Test); %每一列的偏度

KURTOSIS = kurtosis(Test); %每一列的峰度

STD = std(Test); % 每一列的标准差

RESULT = [MIN;MAX;MEAN;MEDIAN;SKEWNESS;KURTOSIS;STD]

%将这些统计量放到一个矩阵中表示

matlab corrcoef函数

假设检验

P值判断法

%% 计算各列之间的相关系数以及p值

[R,P] = corrcoef(Test)

% 在EXCEL表格中给数据右上角标上显著性符号吧

P < 0.01 % 标记3颗星的位置

(P < 0.05) .* (P > 0.01) % 标记2颗星的位置

(P < 0.1) .* (P > 0.05) % 标记1颗星的位置

检验数据是否服从正态分布

使用normplot()对于数据进行简单拟合,观察数据分布情况。 (如果发现散点基本都可以在红色的直线附近,说明这组数据有很大的可能性符合正态分布,只能说可能性满足正态分布, 但是还是需要通过lillietest函数或jbtest函数进行正态分布的拟合优度测试去说明情况)

%% 正态分布检验

m=[1006.1,1014,1001.6,996.4,997.8,981.6,996.4,991.9,993.3,1000.6,987.3,1015.6,981.6,996.2,999.2,994.5,1005.9,1001.9,986.4,1007.6,1001.4,1014.6,1010.2,993.9,1001.4]

normplot(m)

[H,P,LSTAT,CV] = lillietest(m,0.05)

[h,p,jbstat,critval] = jbtest(m,0.05)

%{

lillietest

H = 0

P = 0.5000

LSTAT = 0.1028

CV = 0.1730

jbtest

h= 0

p = 0.5000

jbstat = 0.3112

critval = 4.1494

H=0说明接受假设,该组数据符合正态分布;P=0.5说明符合正态分布的概率很大;

LSTAT小于接受假设的临界值0.173,因此接受假设。

(如果LSTAT大于接受假设的临界值0.173,因此不能接受假设,拒绝假设。)

[h,p]=lillietest(X)

返回值h: 只有0和1两种情况,h=0假设符合正态分布,h=1假设不符合正态分布

返回值p: 方差概率,也可以说事情的发生概率,p<0.05(显著性水平通常取0.05,还有0.025和0.01三种情况)为不可能事件,拒绝;p>0.05,接受

参数X: 检测的数据

%}

%% 正态分布检验

% 正态分布的偏度和峰度

x = normrnd(2,3,100,1); % 生成100*1的随机向量,每个元素是均值为2,标准差为3的正态分布

skewness(x) %偏度 0.1387

kurtosis(x) %峰度 3.0816

qqplot(x)

%% 正态分布JB检验

%{

MATLAB中进行JB检验的语法:[h,p] = jbtest(x,alpha)

当输出h等于1时,表示拒绝原假设;h等于0则代表不能拒绝原假设。

alpha就是显著性水平,一般取0.05,此时置信水平为1‐0.05=0.95

x就是我们要检验的随机变量,注意这里的x只能是向量。

检验值p,判断是否满足条件

%}

%% 正态分布检验

% 检验第一列数据是否为正态分布

[h,p] = jbtest(Test(:,1),0.05)

% 用循环检验所有列的数据

n_c = size(Test,2); % number of column 数据的列数

H = zeros(1,6); %6组数据

P = zeros(1,6);

for i = 1:n_c

[h,p] = jbtest(Test(:,i),0.05);

H(i)=h;

P(i)=p;

end

disp(H)

disp(P)

斯皮尔曼系数

使用Matlab自带函数计算斯皮尔曼等级相关系数时,需要保证X、Y均为列向量;

%% 斯皮尔曼相关系数

X = [3 8 4 7 2]' % 一定要是列向量哦,一撇'表示求转置

Y = [5 10 9 10 6]'

% 第一种计算方法

1-6*(1+0.25+0.25+1)/5/24

% 第二种计算方法

coeff = corr(X , Y , 'type' , 'Spearman')

% 等价于:

RX = [2 5 3 4 1]

RY = [1 4.5 3 4.5 2]

R = corrcoef(RX,RY)

% 计算矩阵各列的斯皮尔曼相关系数

R = corr(Test, 'type' , 'Spearman') %通用计算公式

相关系数的适用范围

连续数据,正态分布,线性关系,使用pearson相关系数。上述条件不满足,就使用spearman相关系数。(spearman相关系数使用范围比较大)相关系数是描述变量之间的线性关系,系数大小,不一定能说明说明

柚子快报激活码778899分享:Matlab统计分析-相关系数

http://www.51969.com/

查看原文