相关性分析与伪相关检测Skill corr-insight

计算变量间的 Pearson/Spearman 相关矩阵、偏相关分析,自动识别因混淆变量导致的伪相关,适用于数据科学、量化金融等领域,帮助研究者剔除虚假关联。关键词:相关性分析、Pearson、Spearman、偏相关、伪相关、混淆变量、相关系数、统计分析。

数据分析 0 次安装 6 次浏览 更新于 7/8/2026

name: 相关性分析与伪相关检测 description: “计算变量间的Pearson或Spearman相关矩阵、偏相关分析,并自动识别因混淆变量导致的伪相关。当用户需要检查数据相关性、计算相关系数、进行偏相关分析,或提及伪相关、spurious correlation、混淆变量等关键词时触发。” license: MIT

correlation-explorer

相关性分析工具 —— 对表格数据计算 Pearson/Spearman 相关矩阵、偏相关矩阵,并自动识别疑似伪相关(由混淆变量导致的虚假关联)。

能力概览

功能 说明
Pearson 相关矩阵 线性相关系数 + p 值,适用于连续且近似正态的变量
Spearman 相关矩阵 秩相关系数 + p 值,适用于非线性单调关系或有序变量
偏相关矩阵 控制所有其他变量后的净相关(精度矩阵法),揭示变量间的直接关联
伪相关识别 自动对比简单相关与偏相关,标记因混淆变量导致的虚假显著相关
通俗解读 用中文对每对变量的相关强度、显著性、偏相关变化给出说明

快速开始

# 分析所有数值列的相关性
python3 scripts/correlation_explorer.py data.csv

# 只分析指定列
python3 scripts/correlation_explorer.py data.csv -f "age,income,spending,score"

# 只算 Pearson
python3 scripts/correlation_explorer.py data.csv -m pearson

# 保存结果到 JSON
python3 scripts/correlation_explorer.py data.csv -o result.json

详细用法

基本调用

python3 scripts/correlation_explorer.py <数据文件> [选项]

选择相关系数类型

# 同时计算 Pearson 和 Spearman(默认)
python3 scripts/correlation_explorer.py data.csv -m all

# 只计算 Pearson
python3 scripts/correlation_explorer.py data.csv -m pearson

# 只计算 Spearman
python3 scripts/correlation_explorer.py data.csv -m spearman

调整伪相关检测灵敏度

# 更严格:相关系数下降 30% 即报警
python3 scripts/correlation_explorer.py data.csv -d 0.3

# 更宽松:下降 70% 才报警
python3 scripts/correlation_explorer.py data.csv -d 0.7

# 使用 0.01 显著性水平
python3 scripts/correlation_explorer.py data.csv -a 0.01

参数说明

参数 缩写 必填 默认值 说明
input 输入文件路径(CSV/TSV/Excel/JSON)
--features -f 全部数值列 要分析的列名,逗号分隔
--method -m all 相关系数类型:all / pearson / spearman
--alpha -a 0.05 显著性水平
--drop-threshold -d 0.5 伪相关判定的下降阈值(0~1,默认 50%)
--output -o 标准输出 结果 JSON 保存路径

输出结构(JSON)

{
  "n_observations": 200,
  "n_variables": 4,
  "features": ["age", "income", "spending", "score"],
  "pearson": {
    "columns": ["age", "income", "spending", "score"],
    "correlation": [[1.0, 0.72, ...], ...],
    "p_values": [[0.0, 0.0001, ...], ...]
  },
  "spearman": { "..." : "同 pearson 结构" },
  "partial_correlation": {
    "columns": ["age", "income", "spending", "score"],
    "partial_correlation": [[1.0, 0.15, ...], ...],
    "p_values": [[0.0, 0.32, ...], ...],
    "df": 196
  },
  "spurious_correlations": [
    {
      "var_x": "age",
      "var_y": "spending",
      "pearson_r": 0.65,
      "partial_r": 0.08,
      "drop_pct": 87.7,
      "reasons": ["偏相关不显著", "相关系数下降 87.7%"]
    }
  ],
  "interpretation": {
    "概览": ["分析了 4 个变量的相关性..."],
    "最强相关对": ["income <-> spending:r = 0.82(很强正相关)"],
    "偏相关洞察": ["age <-> spending:控制其他变量后减弱了 87.7%"],
    "伪相关检测": ["发现 1 对疑似伪相关..."]
  }
}

核心概念

偏相关 vs 简单相关

  • 简单相关(Pearson/Spearman):两变量之间的总体关联,可能混入第三方变量的影响
  • 偏相关:控制了所有其他变量后,两变量之间的"净"关联
  • 如果偏相关远小于简单相关,说明两变量的关联很大程度上是由其他变量"中介"或"混淆"的

伪相关(Spurious Correlation)

当两个变量看似相关,但实际上是因为它们都受到第三方混淆变量的影响。本工具通过对比简单相关和偏相关来自动识别这类情况。

依赖

  • Python 3.8+
  • pandas
  • numpy
  • scipy
pip install pandas numpy scipy