目录
选择哪个相关系数
总步骤
皮尔逊相关系数、假设检验
总体皮尔逊Pearson相关系数
样本皮尔逊Pearson相关系数
皮尔逊相关系数注意点
对相关系数大小的解释
皮尔逊相关系数假设检验的条件
对数据进行正态分布检验:正态分布JB检验(大样本 n>30)
对数据进行正态分布检验:Shapiro-wilk夏皮洛‐威尔克检验(小样本3≤n≤50)
对数据进行正态分布检验:Q-Q图(大样本)(不推荐)
对皮尔逊相关系数进行假设检验
更好的方法:p值判断法
matlab计算相关系数及p值、得到显著性标记
SPSS显著性检验
Matlab计算描述性统计
Excel计算描述性统计
SPSS计算描述性统计
斯皮尔曼spearman相关系数
MATLAB中计算斯皮尔曼相关系数
斯皮尔曼相关系数的假设检验
小样本 n<=30 检验斯皮尔曼相关系数的显著性:查表
大样本检验斯皮尔曼相关系数的显著性
目的:得到变量的相关系数、相关性
结论:协方差绝对值越接近 1 ,相关性越强;接近 0 ,相关性越弱
与总体相关系数相比,是 n-1
偏度和峰度:
matlab计算偏度和峰度:
x = normrnd(2,3,100,1); % 生成100*1的随机向量,每个元素是均值为2,标准差为3的正态分布
skewness(x) %偏度
kurtosis(x) %峰度
步骤:
matlab将上述步骤封装到 jbtest 中:
%% 正态分布检验
% 检验第一列数据是否为正态分布
[h,p] = jbtest(Test(:,1),0.05)
% 当输出h等于1时,表示拒绝原假设;h等于0则代表不能拒绝原假设
% p是p值,p < 置信水平0.05 就不是正态分布
% alpha就是显著性水平,一般取0.05,此时置信水平为1‐0.05=0.95
% x就是我们要检验的随机变量,注意这里的x只能是向量
% 只能一列列数据检验
% 用循环检验所有列的数据
n_c = size(Test,2); % 数据的列数
H = zeros(1,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没有实现这个,用SPSS:
得到的结果只要看最后一列显著性,这就是p值:小于置信水平0.05就不服从正态分布
原理:
matlab函数:qqplot
假设检验皮尔逊相关系数是否显著接近于0
原假设:r = 0 皮尔逊系数与0没有显著差异,相关性并不强
x = -4:0.1:4;
y = tpdf(x,28); % 服从t分布的概率密度曲线
plot(x,y,'-')
grid on % 在画出的图上加上网格线
根据检验值(把待检验的皮尔逊系数 r 带入到检验统计量后得到的值)得到该检验值对应的 p 值,该 p 值再与置信水平比较检验,p > 显著性水平,说明 p 落在接受域,接受假设
matlab代码:
disp((1-tcdf(3.055,28))*2)
% tcdf(3.055,28):x=3.055处,自由度为28的累积分布函数
% x处累积分布函数:-∞到x区间对应的概率
% 双侧检验的p值要乘以2
matlab 计算的是双侧检验的 p 值,单侧就手动除以2
%% 计算各列之间的相关系数以及双侧检验的p值,单侧就手动除以2
[R,P] = corrcoef(Test)
% 下面的运算得到01矩阵,1的位置就是显著性标志的位置
% 在EXCEL表格中手动加上显著性标记 *
P < 0.01 % 标记3颗星的位置
(P < 0.05) .* (P > 0.01) % 标记2颗星的位置
(P < 0.1) .* (P > 0.05) % 标记1颗星的位置
SPSS进行显著性标记:“双变量”选项
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]
%将这些统计量放到一个矩阵中表示
corrcoef函数: correlation coefficient相关系数
R = corrcoef(A)
返回 A 的相关系数的矩阵,其中 A 的列表示随机变量(指标),行表示观测值(样本)。
R = corrcoef(A,B)
返回两个随机变量 A 和 B (两个向量)之间的系数。
美化表:
斯皮尔曼相关系数 定义1:下面的公式
斯皮尔曼相关系数 定义2:斯皮尔曼 求的是这两列等级之间的 皮尔逊相关系数
p 值 大于 显著性水平,接受假设,相关系数与0没有显著性差别
Matlab:
% 直接给出相关系数和p值
[R,P]=corr(Test, 'type' , 'Spearman')
SPSS:
下表只需要相关系数那一行贴到论文中,因为包括了计算出的相关系数及显著性标志 * ;下面的双尾显著性水平就是 p 值,属于计算过程不需要贴入论文;第三行是样本个数