ZL1023

V1

2023/02/15阅读:23主题:全栈蓝

R语言:相关

一、前言

世间万事万物绝不是独立发展的,世间万事万物是相互联系的。这种联系不是说世间万事万物只存在一种联系,不是说只用一种联系就可以将世间万事万物统一起来。世间万事万物存在数不清的联系。有些事物之间存在联系,有些事物之间不存在联系。有些事物之间存在直接联系,有些事物之间存在间接联系。有些事物之间存在的联系比较强,有些事物之间存在的联系比较弱。我们的目的是找到哪些事物存在联系?并作出判断,判断这种联系是相关关系呢?还是因果关系呢?这里我们主要关注的是相关关系。如果事物之间存在相关关系,那么,这种相关关系是直接关系呢?还是间接关系呢?这种相关关系是强相关关系呢?还是弱相关关系呢?这种相关关系有没有统计学显著性呢?

什么是相关分析?

相关分析的目的是研究事件之间是否存在某种相关关系?如果事件之间确实存在某种相关关系,那么,需要进一步定量计算相关的方向和相关的强度。

这里需要注意的是:相关关系不是因果关系,相关关系中的事件之间没有先后顺序。例如,在一个系统内,我们观察到了A事件和B事件,发现A事件和B事件同时变化,这就说明A事件和B事件之间可能存在相关关系。在相关关系的基础上进一步深入研究,如果我们能说清楚是A事件导致了B事件,还是B事件导致了A事件,我们就得到了A事件和B事件之间的因果关系。

前面相关分析的定义已经说了,相关分析就是寻找相关关系,那么,什么是相关关系?相关关系有哪些呢?

相关关系有哪些?

事件之间的相关关系可以分为两类:函数关系和统计关系。那么,什么是函数关系呢?什么是统计关系呢?

什么是函数关系?

函数关系是指两个事件之间的取值能用数学函数来唯一描述,即两个事件之间的取值是一一对应关系。例如,我们要卖衣服,卖衣服的销售总额与销售量之间就是函数关系。销售总额等于销售量乘以销售单价。函数关系不是我们关注的重点,我们重点关注的是统计关系。

什么是统计关系?

统计关系是指两个事件之间的取值不能用数学函数来唯一描述,即两个事件之间的取值不是一一对应关系,但是两个事件之间的取值按照某种规律在一定范围内变化。例如,子女身高与父母身高,子女身高和父母身高不能用一个函数关系一一对应,但是子女身高和父母身高确实存在一定规律,多数情况下,父母身高越高,子女身高就越高。这种具有一定规律的关系,就是统计关系。统计关系按照统计相关的表现形式,也可以分成三个不同的统计相关类型,分别是简单相关关系、偏相关关系、距离相关关系。这里我们重点关注简单相关关系。那么,什么是简单相关关系呢?

什么是简单相关关系?

简单相关关系可以分为三种,分别是线性相关关系、曲线相关关系、不相关。这里我们重点关注的是线性相关关系,那么,什么是线性相关关系呢?

什么是线性相关关系?

线性相关关系就是直线相关关系。其实我们平时常说的相关关系,基本上都是指的线性相关关系,这种线性相关关系有方向,也有强度。那么,怎么表征线性相关关系的方向呢?怎么表征线性相关关系的强度呢?

怎么表征线性相关关系的方向?

线性相关关系的方向无非两种,分别是正向相关、负向相关。表征线性相关关系方向的方法有三种,分别是散点图、相关系数、线性回归。第一种方式是散点图,一个事件的取值随着另一个事件的取值的增加而增加,这种线性相关关系就是正向相关,一个事件的取值随着另一个事件的取值的增加而减少,这种线性相关关系就是负向相关。第二种方式是相关系数,相关系数是正值就是正向相关,相关系数是负值就是负向相关。第三种方式是线性回归,回归系数是正值就是正向相关,回归系数是负值就是负向相关。

怎么表征线性相关关系的强度?

表征线性相关关系强度的方法有一种,就是相关系数。相关系数有三种,分别是pearson相关系数、spearman相关系数、kendall相关系数。每种相关系数都有其特殊的使用条件,那么,三种相关系数的使用条件分别是什么呢?

什么是pearson相关系数?

pearson相关系数是最常使用的相关系数,pearson相关系数等于XY的协方差除以X的标准差和Y的标准差。

计算pearson相关系数,需要满足五个条件:

  1. 两个变量都是连续型变量;(自己判断)
  2. 两个变量是配对的,来自于同一个个体;(自己判断)
  3. 两个变量之间存在线性关系;(散点图/散点图矩阵判断)
  4. 两个变量没有明显的异常值,因为异常值对pearson相关性分析的结果影响很大;(箱线图判断)
  5. 两个变量呈双变量正态分布或近似正态分布。(Q-Q图判断、Shapiro-Wilk检验判断)

这里需要注意第5个条件,两个变量呈双变量正态分布,这里说的双变量正态分布不是两个变量都是正态分布的意思,双变量正态分布是另一个统计学概念。通俗地说,如果两个变量呈双变量正态分布,那么这两个变量一定都是正态分布。如果两个变量都是正态分布,然而这两个变量不一定呈双变量正态分布。一般情况下,我们都用“两个变量都是正态分布”这个条件代替“两个变量呈双变量正态分布”这个条件,这样的替代条件,我们目前还是可以接受的。

pearson相关系数的取值范围是[-1, 1] 。在实际应用过程中,我们往往会将pearson相关系数的取值划分为4个区间,

相关系数 相关程度
0.0≤ r
0.3≤ r
0.5≤ r
0.8≤ r

什么是spearman相关系数呢?

计算spearman相关系数,需要满足两个条件:

  1. 两个包含等级变量、或变量不服从正态分布、或分布类型未知;
  2. 两个变量之间存在单调关系。

什么是kendall相关系数呢?

计算kendall相关系数,需要满足两个条件:

  1. 两个变量都是连续型变量,或两个变量都是有序分类变量,或者一个变量是有序分类变量,另一个变量是连续型变量;
  2. 两个变量是配对的,来自于同一个个体。

总结

相关分析的步骤是什么?

  1. 检验数据条件;
  2. 根据数据条件选择相关系数种类;
  3. 计算相关系数;
  4. 进行显著性检验;
  5. 分析判断相关关系。

相关关系是好的?还是坏的?

相关关系是好的,也是坏的。我们有时候想要得到这种相关关系,就说这种相关关系是好的。比如说,做源解析的时候,具有相关关系的变量可能来自于同一个源。做单因素线性回归分析的时候,原因变量和结果变量存在相关关系,说明原因变量对结果变量有影响。但是,我们有时候不想要得到这种相关关系,就说这种相关关系是坏的。比如说,做多因素线性回归分析的时候,各个原因变量之间应该是独立的,不应该存在相关关系,如果存在相关关系,就造成了多重共线性问题,多重共线性是个坏东西,他会干扰多因素回归分析的结果,他可能会改变回归系数的大小和符号,甚至会让本身显著的原因变量变的不显著。

二、R包

本期使用的R包主要有3个:

  • tidyverse包:万金油包;
  • gWQS包:提供演示数据;
  • Hmisc包:计算相关系数,显著性检验p值。
library(tidyverse)
library(gWQS)
library(Hmisc)

三、演示数据

示例数据集简介gWQS包中有一个内置数据集,内置数据集的名称叫wqs_data,wqs_data数据集有34种多环芳烃暴露数据、25种邻苯二甲酸酯暴露数据和其他类型数据。

本期仅使用wqs_data数据集中前10种多环芳烃暴露数据

# get data
PCBs <- wqs_data[1:10]
# view data
head(PCBs)

四、R语言实现

4.1 数据分布类型

做完实验之后,我们会得到大量的实验数据。一些同学拿到实验数据后就直接进行各种数据分析,包括T检验、方差分析、线性回归等等。然而,这样的分析结果可能是错的,为什么呢?

原因是一些数据分析方法对数据的分布类型是有要求的,我们经常使用的T检验方差分析均要求数据呈正态分布

因此,进行数据分析之前,我们要养成查看数据分布类型的习惯,数据分布类型对于数据分析来说非常重要。

# normal distribution test
PCBs_distribution <- apply(X=PCBs, MARGIN=2, FUN=shapiro.test)
# transform data
PCBs_distribution <- as.data.frame(unlist(PCBs_distribution))
# get p value
PCBs_p_value <- PCBs_distribution[c(grep(pattern="p.value", x=rownames(PCBs_distribution))), ]
# transform variable type
PCBs_p_value <- as.numeric(PCBs_p_value)
# 给上述提取的p值赋予对应的多环芳烃名称
names(PCBs_p_value) <- rownames(PCBs_distribution)[c(grep(pattern="p.value", x=rownames(PCBs_distribution)))]
# 筛选p值小于0.05的多环芳烃,
## p值小于0.05的多环芳烃,不是正态分布
PCBs_p_value[PCBs_p_value<0.05]

输出结果:named numeric(0)

4.2 选择相关系数计算方法

Shapiro-Wilk检验结果表明10种多环芳烃都是正态分布,因此,下文计算10种多环芳烃的相关系数时,选择Pearson相关系数

4.3 计算相关系数和p值

# calculate pearson relationship coefficient and p-value
rcorr(as.matrix(PCBs),type="pearson") %>%
 # output list result
 capture.output(file="相关系数.csv")

五、结果解读

本期关注的10种多环芳烃,两两之间相关系数的绝对值均小于0.3,且p值均大于0.05,表明10种多环芳烃之间不存在相关关系。

分类:

数学

标签:

数学编程

作者介绍

ZL1023
V1