相关性分析怎么计算,相关性分析具体步骤

首页 > 教育 > 作者:YD1662024-05-08 20:48:34

正如一个 Python 函数:

def magnitude(x): x_sq = [i ** 2 for i in x] return math.sqrt(sum(x_sq))

我们通过将点积除以两个向量大小的乘积的方法得到 cos(ϴ)。

相关性分析怎么计算,相关性分析具体步骤(9)

def cosTheta(x,y): mag_x = magnitude(x) mag_y = magnitude(y) return dotProduct(x,y) / (mag_x * mag_y)

现在,如果你对三角学有一定了解,你可能会记得,余弦函数产生一个在 1 和 -1 之间震荡的图形。

相关性分析怎么计算,相关性分析具体步骤(10)

cos(ϴ) 的值将根据两个箭头向量之间的角度而发生变化。

这可能看起来很熟悉——一个介于 1 和 -1 之间的衡量标准似乎描述了两个向量之间的关系?那不是 Pearson’s r 吗?

那么——这正是它的解释!通过将数据视为高维空间中的箭头向量,我们可以用它们之间的角度 ϴ 作为相似度的衡量。

相关性分析怎么计算,相关性分析具体步骤(11)

A) 正相关向量;B) 负相关向量;C) 不相关向量

该角度 ϴ 的余弦在数学上与皮尔逊相关系数相等。当被视为高维箭头时,正相关向量将指向一个相似的方向。负相关向量将指向相反的方向。而不相关向量将指向直角。

就我个人而言,我认为这是一个理解相关性的非常直观的方法。

统计显著性?

正如频率统计一样,重要的是询问从给定样本计算的检验统计量实际上有多重要。Pearson's r 也不例外。

不幸的是,PCC 估计的置信区间不是完全直接的。

这是因为 Pearson's r 被限制在 -1 和 1 之间,因此不是正态分布的。而估计 PCC,例如 0.95 之上只有很少的容错空间,但在其之下有大量的容错空间。

幸运的是,有一个解决方案——用一个被称为 Fisher 的 Z 变换的技巧:

  1. 像平常一样计算 Pearson's r 的估计值。
  2. 用 Fisher 的 Z 变换将 r→z,用公式 z = arctanh(r) 完成。
  3. 现在计算 z 的标准差。幸运的是,这很容易计算,由 SDz = 1/sqrt(n-3) 给出,其中 n 是样本大小。
  4. 选择显著性阈值,alpha,并检查与此对应的平均值有多少标准差。如果取 alpha = 0.95,用 1.96。
  5. 通过计算 z (1.96 × SDz) 找到上限,通过计算 z - (1.96 × SDz) 找到下限。
  6. 用 r = tanh(z) 将这些转换回 r。
  7. 如果上限和下限都在零的同一侧,则有统计显著性!

这里是在 Python 中的实现:

r = Pearsons(x,y) z = math.atanh(r) SD_z = 1 / math.sqrt(len(x) - 3) z_upper = z 1.96 * SD_z z_lower = z - 1.96 * SD_z r_upper = math.tanh(z_upper) r_lower = math.tanh(z_lower)

当然,当给定一个包含许多潜在相关变量的大数据集时,检查每对的相关性可能很吸引人。这通常被称为「数据疏浚」——在数据集中查找变量之间的任何明显关系。

如果确实采用这种多重比较方法,则应该用适当的更严格的显著性阈值来降低发现错误相关性的风险(即找到纯粹偶然相关的无关变量)。

一种方法是使用 Bonferroni correction。

小结

到现在为止还好。我们已经看到 Pearson's r 如何用来计算两个变量之间的相关系数,以及如何评估结果的统计显著性。给定一组未知的数据,用于开始挖掘变量之间的重要关系是很有可能的。

但是,有一个重要的陷阱——Pearson's r 只适用于线性数据。

看下面的图。它们清楚地展示了一种看似非随机的关系,但是 Pearson's r 非常接近于零。

相关性分析怎么计算,相关性分析具体步骤(12)

上一页12345下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.