本文介绍皮尔逊相关性的五个假设前提,并对每个假设前提进行详细说明。

皮尔逊相关系数(也称为"积矩相关系数")是衡量两个变量之间的线性关联。它的取值范围在[-1,1]之间:

  • -1 表示完全负相关
  • 0 表示完全不相关
  • 1 表示完全正相关

但我们在计算皮尔逊相关性时,要了解它要符合5个假设:

  1. 变量类型:两个变量要属于区间或比例变量
  2. 线性关系:两个变量之间存在一定线性关系
  3. 正太分布:两个变量应该大致符合正太分布
  4. 数据配对:数据集中每个观测数据包括成对数据
  5. 无异常值:数据集中不应包括极端异常值数据

下面我们对每个假设进行说明。

假设1:变量类型

两个变量应该是区间或比例尺度变量。下图提供了四种类型变量的简要说明。

区间尺度变量包括:

  • 温度:按照摄氏度进行衡量
  • 信用评分:分值在300~850范围

比例尺度变量包括:

  • 高度:按照厘米、米等进行测量
  • 重量:按照公斤、吨等策略

如果变量属于有效变量,应该实用斯皮尔曼相关系数计算。

假设2:线性关系

计算皮尔逊相关性,两个变量之间需要存在线性关系。通过创建简单的散点图即可检查该假设。如果数据点近似为直线,则线性关系存在。

x <- 1:10
y <- (x*2 + sample(20:25, 10, replace=TRUE))
plot(x, y)

python皮尔逊相关性分析 皮尔逊相关性分析条件_相关性

如果数据点随机分布或呈现为其他类型关系(如二次函数),那么两个变量之间没有线性关系:

x <- 1:70
y <- 10 - x^2 + 71*x 

plot(x, y)

python皮尔逊相关性分析 皮尔逊相关性分析条件_相关性_02

这种情况皮尔逊相关系数不适合计算这些变量的相关性。

假设3:正太性

皮尔逊相关系数也假设两个变量大致符合正太分布。我们可以通过直方图或QQ图检查每个变量的分布。

  1. 直方图

如果数据集的直方图大致如钟形,那么则可能为正太分布。

# set.seed(11)
x <- rnorm(1000, 69, 10)
hist(x, prob = TRUE)
lines(density(x))
# lines(density(x, adjust=1))

python皮尔逊相关性分析 皮尔逊相关性分析条件_皮尔逊_03

  1. QQ图

QQPlot图是用于直观验证一组数据是否符合某个分布,或者验证某两组数据是否来自同一(族)分布。通常应用检验数据是否属于正态分布。x轴显示理论分位数,y轴数据表示实际位于何处。

set.seed(11)
x <- rnorm(60, 69, 2)

qqnorm(x)
qqline(x)

python皮尔逊相关性分析 皮尔逊相关性分析条件_皮尔逊_04

如果数据近似为45度直线,那么数据可假设为正太分布。

也可以通过统计测试检验变量是否为正太分布,如果测试 p-value 小于显著性水平(假设为 0.05) ,那么有足够证据说数据不为正太分布。

常用检测方法有:Jarque-Bera、Shapiro-Wilk 以及 Kolmogorov-Smirnov 检测。

假设4:配对数据

皮尔逊相关系数也假设数据集种的每个观测数据应该为一对值。该假设很容易检测,例如你要计算体重和身高的相关性,可以简单严重每个观测数据是否包括体重和身高。

假设5:没有异常值

皮尔逊相关系数也假设数据集种没有异常值,异常值严重影响相关性计算。

举例说明:

x <- c(6,	7,	7,	8,	9,	12,	13,	13,	14,	15,	17,	19,	13,	14,	19)
y <- c(10, 15,	18,	17,	18,	20,	25,	28,	30,	36,	34,	37,	30,	26,	36)

r <- cor(x,y)
r
# 0.949352

我们看到相关系数为 0.949352

下面我们修改一个数据:

x <- c(6,	7,	7,	8,	9,	12,	13,	13,	14,	15,	17,	19,	13,	14,	19)
y <- c(10, 15,	18,	17,	18,	20,	25,	28,	30,	36,	34,	37,	30,	26,	105)

r <- cor(x,y)
r
# 0.711006

现在相关系数变为0.711 ,一个异常值影响了相关性的衡量。这是可以考虑删除异常值进行计算。