本文介绍皮尔逊相关性的五个假设前提,并对每个假设前提进行详细说明。
皮尔逊相关系数(也称为"积矩相关系数")是衡量两个变量之间的线性关联。它的取值范围在[-1,1]之间:
- -1 表示完全负相关
- 0 表示完全不相关
- 1 表示完全正相关
但我们在计算皮尔逊相关性时,要了解它要符合5个假设:
-
变量类型:两个变量要属于区间或比例变量
-
线性关系:两个变量之间存在一定线性关系
-
正太分布:两个变量应该大致符合正太分布
-
数据配对:数据集中每个观测数据包括成对数据
-
无异常值:数据集中不应包括极端异常值数据
下面我们对每个假设进行说明。
假设1:变量类型
两个变量应该是区间或比例尺度变量。下图提供了四种类型变量的简要说明。
区间尺度变量包括:
- 温度:按照摄氏度进行衡量
- 信用评分:分值在300~850范围
比例尺度变量包括:
- 高度:按照厘米、米等进行测量
- 重量:按照公斤、吨等策略
如果变量属于有效变量,应该实用斯皮尔曼相关系数计算。
假设2:线性关系
计算皮尔逊相关性,两个变量之间需要存在线性关系。通过创建简单的散点图即可检查该假设。如果数据点近似为直线,则线性关系存在。
x <- 1:10
y <- (x*2 + sample(20:25, 10, replace=TRUE))
plot(x, y)
如果数据点随机分布或呈现为其他类型关系(如二次函数),那么两个变量之间没有线性关系:
x <- 1:70
y <- 10 - x^2 + 71*x
plot(x, y)
这种情况皮尔逊相关系数不适合计算这些变量的相关性。
假设3:正太性
皮尔逊相关系数也假设两个变量大致符合正太分布。我们可以通过直方图或QQ图检查每个变量的分布。
- 直方图
如果数据集的直方图大致如钟形,那么则可能为正太分布。
# set.seed(11)
x <- rnorm(1000, 69, 10)
hist(x, prob = TRUE)
lines(density(x))
# lines(density(x, adjust=1))
- QQ图
QQPlot图是用于直观验证一组数据是否符合某个分布,或者验证某两组数据是否来自同一(族)分布。通常应用检验数据是否属于正态分布。x轴显示理论分位数,y轴数据表示实际位于何处。
set.seed(11)
x <- rnorm(60, 69, 2)
qqnorm(x)
qqline(x)
如果数据近似为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
,一个异常值影响了相关性的衡量。这是可以考虑删除异常值进行计算。