皮尔逊相关系数
要先确定有线性关系,才能反应相关的大小
首先要画散点图目的是为了看是否具有线性关系
选择矩阵散点图
然后把所有的变量移进去
既可得到任意两个变量之间的线性关系
通过散点图来简略判断是否具有线性关系
为什么要首先看是否具有相关性呢?
上面四个图的皮尔逊相关系数都是0.816,但是显然只有图一具有线性关系,所以只有先确定有线性关系,才能用皮尔逊相关系数
描述性统计
求最小值,最大值,中位数,众数,偏度,峰度,标准差,方差等等
用spss做数据分析
jb检验(样本数>30)
正态分布检验
% 正态检验的偏度和峰度
x = normrnd(2,3,1000,1)
skewness(x)%偏度
kurtosis(x)%峰度
% 检验第一列数据是否为正态分布
[h,p] = jbtest(x,0.05)
Shapiro-wilk检验(小样本)
用spss
QQ图可以近视估算是不是正态分布
斯皮尔曼spearman相关系数
斯皮尔曼相关系数和皮尔逊相关系数的选择
1.连续数据,正态分布,线性关系,用pearson相关系数是最恰当,当然用
spearman相关系数也可以,就是效率没有pearson相关系数高。
2.上述任一条件不满足,就用spearman相关系数,不能用pearson相关系数。
3.两个定序数据之间也用spearman相关系数,不能用pearson相关系数。
一般情况下都能使用斯皮尔曼相关系数
求解斯皮尔曼相关系数的代码
RX = [3 8 4 7 2]'
RY = [5 10 9 10 6]'
R = corr(RX,RY,'type','Spearman') %R就是斯皮尔曼相关系数
课后作业
1)写一篇文章,分析男生体测数据各指标之间的相关性,并与女生的数据得到的结论进行对比。
解题:
1)首先用散点图判断是否具有线性关系
2)对数据进行描述性统计
身高 | 体重 | 肺活量 | 50米跑 | 立定跳远 | 坐位体前屈 | |
---|---|---|---|---|---|---|
最大值 | 106 | 39 | 1506 | 7.2 | 65 | 2 |
最小值 | 199 | 73 | 6156 | 10.1 | 230 | 15.3 |
均值 | 163.4890411 | 55.8260274 | 2770.354795 | 8.724383562 | 179.0657534 | 8.890684932 |
中位数 | 163 | 56 | 2598 | 8.7 | 178 | 8.7 |
偏度 | -0.581914515 | -0.25623746 | 1.272678829 | -0.138356097 | -0.78428115 | 0.154426354 |
峰度 | 8.864413336 | 2.773010806 | 5.258007238 | 2.137192142 | 9.040856718 | 3.631126281 |
3)通过jb检验得到H和P的数据分别为
身高 | 体重 | 肺活量 | 50米跑 | 立定跳远 | 坐位体前屈 | |
---|---|---|---|---|---|---|
H | 1 | 1 | 1 | 1 | 1 | 1 |
P | 0.001 | 0.01286687 | 0.001 | 0.001 | 0.001 | 0.002915572 |
任何一个数据都不符合正态分布,因此应该选择斯皮尔曼相关系数
4)斯皮尔曼相关系数求解
身高 | 体重 | 肺活量 | 50米跑 | 立定跳远 | 坐位体前屈 | |
---|---|---|---|---|---|---|
身高 | 1 | 0.034897309 | 0.110434976 | 0.021501513 | -0.066543697 | -0.107545854 |
体重 | 0.034897309 | 1 | 0.060311651 | 0.019496405 | 0.119963853 | 0.060343423 |
肺活量 | 0.110434976 | 0.060311651 | 1 | -0.027296159 | -0.045852341 | -0.034276317 |
50米跑 | 0.021501513 | 0.019496405 | -0.027296159 | 1 | 0.030126713 | -0.047279415 |
立定跳远 | -0.066543697 | 0.119963853 | -0.045852341 | 0.030126713 | 1 | 0.005488434 |
做立体前屈 | -0.107545854 | 0.060343423 | -0.034276317 | -0.047279415 | 0.005488434 | 1 |
5)相关系数矩阵可视化
4 |
| 做立体前屈 | -0.107545854 | 0.060343423 | -0.034276317 | -0.047279415 | 0.005488434 | 1 |
5)相关系数矩阵可视化
6)进行假设检验
设H0:相关系数r = 0
设H1:相关系数r 不等于 0
然后进行假设检验
得到假设检验结果P值:
身高 | 体重 | 肺活量 | 50米跑 | 立定跳远 | 坐位体前屈 | |
---|---|---|---|---|---|---|
身高 | 1 | 0.346425962 | 0.00280976 | 0.561907597 | 0.072363795 | 0.003623654 |
体重 | 0.346425962 | 1 | 0.103478036 | 0.598949948 | 0.001164544 | 0.103296023 |
肺活量 | 0.00280976 | 0.103478036 | 1 | 0.461502531 | 0.215942374 | 0.355080463 |
50米跑 | 0.561907597 | 0.598949948 | 0.461502531 | 1 | 0.416350765 | 0.201975334 |
立定跳远 | 0.072363795 | 0.001164544 | 0.215942374 | 0.416350765 | 1 | 0.882314116 |
坐位体前屈 | 0.003623654 | 0.103296023 | 0.355080463 | 0.201975334 | 0.882314116 | 1 |
P大于0.05就代表具有相关性
全部代码:
正态分布检验
% 正态检验的偏度和峰度
x = normrnd(2,3,100,1)
skewness(x)%偏度
kurtosis(x)%峰度
qqplot(x)
% 检验第一列数据是否为正态分布
[h,p] = jbtest(x,0.05)% h = 0代表可以接受原假设
求解皮尔逊相关系数
RX = [3 8 4 7 2]'
RY = [5 10 9 10 6]'
R = corr(RX,RY,'type','Spearman')
课后作业
% 首先加载数据
load classwork.mat
% 对数据进行描述性统计
MIN = min(data)
MAX = max(data)
MEAN = mean(data)
MEDIAN = median(data)
SKEWNESS = skewness(data)% 偏度
KURTOSIS = kurtosis(data)% 峰度
R = [MIN;MAX;MEAN;MEDIAN;SKEWNESS;KURTOSIS]
% 判断变量之间是否具有正态关系
n = size(data,2)
H = zeros(1,6); % 初始化节省时间和消耗
P = zeros(1,6);
for i = 1:n
[h,p] = jbtest(data(:,i),0.05);
H(i)=h;
P(i)=p;
end
% 斯皮尔曼相关系数求解
ans = zeros(6,6)
for i = 1:6
for j = 1:6
r = corr(data(:,i),data(:,j),'type','Spearman')
ans(i,j) = r
end
end
% 进行假设检验
r = zeros(6,6)
for i = 1:6
for j = 1:6
z = ans(i,j) * sqrt(size(data,1) - 1)
r(i,j) = (1 - normcdf(z)) * 2
end
end
[R,P] = corr(data,'type','Spearman')% R是斯皮尔曼相关系数,P是假设检验得到的P值