4. 偏相关与距离相关
在环境数据分析中,两个变量呈现出显著相关,并不等于它们之间存在直接的因果或物理联系。最典型的例子是:某城市夏季的臭氧浓度与冰淇淋销量高度正相关,但真正驱动两者同步上升的是“气温”和“日照”这类共同因素。这类同时影响两个变量的第三方变量,就是混杂因素。偏相关(partial correlation)要回答的问题是:在扣除混杂因素影响之后,X 与 Y 之间还剩下多少关联?而距离相关(distance correlation)则进一步处理另一类难题——非线性、非单调的依赖关系,例如环境变量之间常见的阈值效应、U 形响应或周期性耦合。
一、偏相关的原理与计算路径
偏相关的核心思想是“先剔除、再相关”。以控制一个变量 Z 为例,标准做法分三步:用 X 对 Z 做线性回归,取残差 rX;用 Y 对 Z 做回归,取残差 rY;再计算 rX 与 rY 的皮尔逊相关系数,即为控制 Z 后 X 与 Y 的一阶偏相关。残差的含义是“X 中无法被 Z 解释的部分”,因此偏相关衡量的是两个变量各自独立于 Z 的波动之间的同步程度。
当需要同时控制多个混杂因素(如季节、温度、湿度、风速)时,把上述回归扩展为多元回归即可,得到的是高阶偏相关。偏相关系数的取值范围仍在 −1 到 1 之间,符号方向与普通相关一致;显著性检验的自由度需要扣除被控制变量的个数,即 df = n − k − 2(k 为控制变量数),这一点在样本量不大时尤其重要,否则容易高估显著性。
在 Python 中,pingouin 库提供了直接接口,无需手工做残差回归:
import pandas as pd
import pingouin as pg
# 假设 df 含列:o3(臭氧)、temp(气温)、season(季节编码)、humidity(湿度)
# 控制季节与湿度,计算臭氧与气温的偏相关
result = pg.partial_corr(
data=df,
x='o3',
y='temp',
covar=['season', 'humidity'],
method='pearson'
)
print(result)
# 输出包含 r(偏相关系数)、p-val、CI95%、n 等字段
解读结果时,应把偏相关与零阶相关放在一起对照。若零阶相关为 0.72,而控制季节和湿度后偏相关降到 0.18 且不显著,说明原先的强关联很大程度上由混杂因素“借道”产生;若偏相关仍保持在 0.6 以上,则说明该关联在控制条件下依然稳健。这种“前后对比”本身就是混杂效应强弱的直接证据,比单看一个系数更有信息量。
二、距离相关:捕捉非线性依赖
距离相关由 Székely 等人提出,其统计量 R 基于变量间的成对距离矩阵,而非协方差。它的关键优势是:R = 0 当且仅当两个变量统计独立,因此能识别皮尔逊相关系数为零但实际存在强依赖的情形。例如某污染物浓度随风速先升后降,线性相关可能接近 0,但距离相关会给出明显非零值。距离相关系数通常取 R 的平方根,范围在 0 到 1 之间,越接近 1 依赖越强,但它不区分正负方向,只反映依赖强度。
使用 pingouin 计算距离相关非常简洁:
# 计算臭氧与风速的距离相关(可捕捉非线性依赖)
dcor = pg.distance_corr(df['o3'], df['wind_speed'])
print(dcor) # 返回 0~1 之间的依赖强度
# 与线性相关对照
print(df[['o3', 'wind_speed']].corr(method='pearson'))
实践中建议把三种系数并列成一张对照表来判读:皮尔逊相关反映线性同步,偏相关反映控制混杂后的线性净关联,距离相关反映整体依赖强度(含非线性)。若距离相关明显高于皮尔逊相关的绝对值,往往提示存在非线性结构,值得进一步画散点图或分箱统计;若偏相关远低于零阶相关,则提示混杂因素贡献大。两者结合,才能避免“相关即因果”的误判。
三、把两种方法串成一条分析链
面对一份环境监测数据,建议按以下顺序推进,而不是一上来就套公式。第一步,明确研究问题中的 X 与 Y,并列出可能同时影响二者的候选混杂因素,这一步依赖领域知识而非统计工具。第二步,计算零阶相关,得到“表面关联”的基线。第三步,用 pg.partial_corr 控制混杂因素,观察系数变化幅度与显著性。第四步,用 pg.distance_corr 检查是否存在被线性方法漏掉的非线性依赖。第五步,对异常结果回到散点图或分箱均值图上做可视化确认,避免仅凭数字下结论。
需要提醒的是,偏相关只能控制已测量并纳入模型的混杂因素,未测量的混杂(如局地排放源、地形)无法被扣除,因此偏相关显著也不等于因果成立。距离相关虽然对非线性友好,但对样本量较敏感,小样本下 R 的估计波动较大,且它不提供方向信息。把两者作为互补的诊断工具,配合领域判断,才是环境数据分析中稳妥的做法。
最后给出一个可复用的判读口径:零阶相关高、偏相关低且不显著,优先怀疑混杂;零阶相关低、距离相关高,优先怀疑非线性;三者都高,关联较为稳健但仍需因果论证。把这张“系数对照表”固化到分析流程里,能显著减少环境数据相关性分析中的误读。