Matlab统计分析-相关系数

统计分析-相关系数

相关系数 (pearson与spearman)

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

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



易错点

总结

(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颗星的位置

检验数据是否服从正态分布
  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') %通用计算公式

相关系数的适用范围

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

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
乘风的头像乘风管理团队
上一篇 2023年12月13日
下一篇 2023年12月13日

相关推荐