相关性分析脚本

49 2
User_Lee 发表于 2026-6-29 10:06:23 | 查看全部 阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
  1. <b>有任何使用问题可以联系我!!!!</b>
复制代码
9 k9 M/ m$ W$ k2 A, y' F
correlation_analysis.py 使用说明2 a# S7 }4 J9 }7 z4 g! L+ j
! Z' k: N. _5 j4 K# N* o9 K2 c& w6 U
功能简介
# B- `+ U: K1 _0 P7 h) _+ v- |6 q  H# @# d7 ]. l+ d3 [: Z* v
本脚本用于对 Excel/CSV 数据进行相关性分析,支持:
  • 计算 Pearson / Spearman / Kendall 相关矩阵及 P 值
  • 滞后相关性分析(目标变量对影响因素存在时间滞后)
  • 最优滞后期自动搜索
  • 结果导出为 Excel(多 sheet)
  • 自动生成热力图和滞后搜索折线图

    # j. `, G* T- ?0 ?


" q0 a! L0 t& k环境依赖" x+ A/ O* a. ~1 d- r7 K

6 }# e( V# X" _. h& Apandas >= 1.54 x3 D/ e; K3 n
numpy >= 1.24
" G; H3 z- Q, u" w) Rscipy >= 1.10
6 f& Q+ n( Q/ k/ h# ]  \matplotlib >= 3.7
/ S' Y) o) O* g0 P1 Hseaborn >= 0.131 g4 @& @  y# r# m4 s9 v
openpyxl >= 3.1
安装:
pip install pandas numpy scipy matplotlib seaborn openpyxl

1 i' S+ T9 t) u0 P' G. c% {使用方法
3 X  p: y- c5 }3 ~* m9 K, v! M  F. O  K# Z' }9 E
基本语法/ q" t& r0 n* S5 w' }7 y

; i' ?) o4 {/ I5 ]1 z0 j# ]python correlation_analysis.py <数据文件> [参数]示例4 n% x3 R% K7 P$ i) R
8 d+ L: J9 |0 g5 _! C3 C1 u
# 1. 基础相关性分析(自动选择所有数值列)
% m# x2 y! s$ J; Dpython correlation_analysis.py data.xlsx9 y/ {; N5 r% ~
. {, W6 ?: q2 |$ {' ?
# 2. 指定列和方法
; k2 r# m% t+ q2 b  M# xpython correlation_analysis.py data.xlsx --columns 温度 压力 产量 --method spearman
9 s! p7 @0 |+ T3 c# {; ^$ _& s7 `, b
  {- c8 E: `; |1 T; d% b# 3. 滞后相关性(目标列滞后3期)
, V3 T" F; K% y% ~  Xpython correlation_analysis.py data.xlsx --columns 温度 压力 产量 --target 产量 --lag 3
9 ^8 ]) Q# {% b7 v2 b  y3 i4 s, A7 T/ P. s) P3 n
# 4. 最优滞后搜索(搜索范围 0~10 期)5 K" m2 b/ {6 c% |( t5 G7 F
python correlation_analysis.py data.xlsx --columns 温度 压力 --target 产量 --sweep 0 106 f: Q3 g1 S4 v$ w$ ^+ n. j

% `, B0 O$ ~# l, H/ W3 s3 V# 5. 同时使用固定滞后和搜索- {/ x) j) B/ z: E
python correlation_analysis.py data.xlsx --columns 温度 压力 --target 产量 --lag 3 --sweep 0 10
3 V% T. g& L0 H2 I) X: o
6 k+ c# K) I- w3 ]4 {2 t5 x# 6. 指定输出文件名,不生成图片2 h! i$ b& J- {4 H
python correlation_analysis.py data.xlsx --target 产量 --lag 3 -o my_result.xlsx --no-plot
6 W5 h. G' b1 r: @
参数详解# |, r4 I7 R4 G3 [
$ c3 q; n  R( Q' G, c; R$ M
[td]
参数
必填
默认值
说明
file-输入数据文件路径(支持 .xlsx / .xls / .csv)
--columns所有数值列参与分析的列名,空格分隔
--methodpearson相关性方法:pearson / spearman / kendall
--target-目标列名(滞后变量),不指定则不做滞后分析
--lag0滞后期数,需配合 --target 使用
--sweep START END-最优滞后搜索范围,如 --sweep 0 10
--output / -ocorrelation_result.xlsx输出 Excel 文件路径
--no-plotFalse添加此参数则不生成图片
注意事项:
  • --target 指定的列如果不在 --columns 中,脚本会自动将其加入
  • 列名包含空格时需要用引号包裹,如 "相对价格 指数铜+mean"
  • --lag 和 --sweep 可以同时使用
    3 M8 y" L2 z' L" c


: s( t) T5 k! d输出说明
5 A1 A1 E/ U6 b" I6 `& v: x( @8 N* W" {+ L. S$ w
Excel 文件(多 sheet)2 \& |' O; {1 l+ x* `" d& K

4 }1 A* q7 |; t1 _! R/ s( D- N$ Z. P[td]
Sheet 名称
生成条件
内容
相关矩阵始终生成N×N 相关系数矩阵
P值矩阵始终生成N×N 显著性 P 值矩阵
滞后数据--target + --lag > 0滞后处理后的原始数据(已对齐、已去除 NaN 行)
最优滞后--target + --sweep每个因素的最优滞后期、最强相关系数、各期相关系数
图片文件  H0 L& w- @1 N9 j3 r; a' A' [
( ~5 j8 P1 k# _# f. \+ Q' L# s
[td]
文件名
生成条件
内容
{output_stem}_heatmap.png默认生成相关性热力图(下三角,带显著性星号标注)
{output_stem}_lag_sweep.png--target + --sweep滞后搜索折线图(红圈标记最优点)
显著性标注规则:
  • *** : P < 0.001
  • ** : P < 0.01
  • * : P < 0.05
    ; h9 w) y) g- y2 X& w, a

3 u6 a% Z! h9 Q* a1 T; M
滞后相关性原理
1 ?5 u) V, D) m$ ]. C. ?0 j" \; {7 O2 j
什么是滞后相关性$ H' ^- Y. b& x0 P5 A9 `' b

& J- n; j7 W* i) E! l& ~
当因素 X 在时刻 t 发生变化,目标 Y 在时刻 t+k 才体现效果时,直接计算 X 和 Y 的相关性会低估真实关联。
滞后相关性通过将目标列 Y 向前平移 k 期(即计算 corr(X_t, Y_{t+k})),使因果对齐后再计算相关系数。
固定滞后模式
  s( w- O5 L$ H' N
* F5 s% M- ~0 S$ L; W; T5 `
指定一个滞后期数 k,将目标列平移后计算完整的相关矩阵。
原始:  X = [x1, x2, x3, x4, x5, x6], K8 r. `2 H: b0 k+ \3 }
       Y = [y1, y2, y3, y4, y5, y6]
5 K; I- A, v$ |# ~! j' H5 X3 `7 ]2 n7 f+ v: _9 o: \8 H
lag=2: X = [x1, x2, x3, x4]+ ~; ^, z! Q; {; H3 X
       Y = [y3, y4, y5, y6]   (Y 向前平移2期,末尾截断)最优滞后搜索模式
; m  t* R7 K! ]
; R. l. {  }, B" w3 ?6 V: q
对每个因素列,遍历指定范围内的所有滞后期数,找出使相关系数绝对值最大的滞后期。


, J* E% E& u1 _8 l常见问题
3 E8 J, N2 z: n# Q0 u% R$ W' H: l0 n8 B5 G$ m) S
Q: 列名包含空格怎么办?( O: ?, z3 a0 i" p4 n0 U

8 R8 v% q& R0 J7 |- ^
用引号包裹:
--columns "XXX XXX" "SSS SSS"Q: 提示 "目标列不存在"?- ?0 ]' T8 e+ b# N! x' z

$ q' \7 I8 c- }5 m; v3 H- ^
检查列名是否完全匹配(包括空格、加号等特殊字符)。可以先不指定 --columns 运行一次,脚本会打印所有可用列名。
Q: 滞后后数据不足?
+ ]% f% A5 n0 A$ w9 H' n7 A8 ]+ T$ O8 i6 w. N
数据行数必须大于滞后期数 + 3。例如 32 行数据最多支持 lag=29(但实际有意义的滞后期通常远小于数据长度的一半)。
Q: 图片中文显示为方块?- ^4 C* a2 p2 _- T$ ]
; t. b& L2 \3 p0 S. f, j+ E
确保系统安装了中文字体(Windows 默认有微软雅黑,Linux 需安装 fonts-wqy-zenhei)。
Q: 如何只看某几列与目标的关系?$ S" ~* ?- ^6 H# \% }
* Y- I0 Z0 S8 M6 Q
python correlation_analysis.py data.xlsx --columns 因素A 因素B --target 目标Y --sweep 0 10
脚本会自动将目标列加入分析。

# T8 n' m* x3 [- e( R3 X- p$ L6 L
  1. <font size="5"><b>sample_data运行示例</b></font>
    # Y9 T3 z+ G: \  k4 e) Q

  2. 1 A" j0 N! |4 x! J0 N
  3. python correlation_analysis.py "sample_data.xlsx"
    . ~0 V6 s6 f! U$ o4 Y0 R
  4. 读取文件: sample_data.xlsx​4 `; e4 X- x, c9 m% ~" ], Y
  5. 数据维度: 50 行 x 6 列​  I4 g% Z8 g" B' u
  6. 自动选择数值列: ['Temperature', 'Pressure', 'Humidity', 'Yield', 'Raw_Material_Price']​' Z: a' ^; K3 k# B) Y( h( X" U
  7. 计算相关矩阵: 方法=pearson​' \' j$ L( b; ]( a2 W
  8.   相关矩阵 (5x5) 已计算$ S& v% I% L6 d! A

  9. 7 c& B3 h# j8 f
  10. 结果已导出到: correlation_result.xlsx
    0 H* O7 ^8 P' V6 e
  11. 热力图已保存: correlation_result_heatmap.png- Q9 a7 N! M% ?) e% ?4 f
  12.   . M4 z+ W" e& P1 v* v
  13. python correlation_analysis.py "sample_data.xlsx" --columns Temperature Pressure --target Yield --sweep 0 10
    ! E- b7 t- F; X4 S
  14. 读取文件: sample_data.xlsx" H; X* S. j; P; W. k7 Q
  15. 数据维度: 50 行 x 6 列( c2 \% W/ S: y8 G3 B5 [% z+ m
  16. 已自动将目标列 'Yield' 加入分析列
    ( q, }, W! q* E6 r
  17. 计算相关矩阵: 方法=pearson7 a: h. ^! c: d' M6 b
  18.   相关矩阵 (3x3) 已计算
    . I! I% Z0 Z5 H; g9 Z
  19. 最优滞后搜索: 目标列=Yield, 范围=[0, 10]
    ! z+ U; U5 G9 D6 N3 p  ~
  20.   最优滞后结果:; A% m" _+ r$ `& c' Y
  21.     Temperature: 最优滞后=9期, 相关系数=-0.8022( u5 m% [0 D4 _" [# J
  22.     Pressure: 最优滞后=0期, 相关系数=0.7648) g5 _; v/ j2 D% i1 ^: ?

  23. , q, p5 d/ k# z' w
  24. 结果已导出到: correlation_result.xlsx0 a/ K" b. S5 l2 O1 b' X. M
  25.   热力图已保存: correlation_result_heatmap.png
    ; {: j% a8 Z1 |3 _
  26.   滞后搜索图已保存: correlation_result_lag_sweep.png
复制代码
1 z+ F' C& @( P: V. E

资源下载.zip

12.38 KB

售价: 2 金币  [记录]  [购买]

回复 转播

使用道具 举报

回复|共 2 个

Boom Lv.3老师认证 发表于 2026-7-31 22:45:04 | 查看全部
已收藏,下周正好要做时序相关性分析,拿来直接用
回复 支持 反对

使用道具 举报

User_Lee 楼主Lv.3 发表于 2026-8-12 16:22:12 | 查看全部
Boom 发表于 2026-7-31 22:45
5 z  G$ B! z, [已收藏,下周正好要做时序相关性分析,拿来直接用
3 `5 E0 y0 [% f
OK 有什么问题 可以沟通 共同学习
回复 支持 反对

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

学研领航向全体高校师生打造的一站式综合交流与资源服务平台,集知识学习、经验分享、资源下载、互动问答、职场成长、兼职实践于一体,覆盖校园生活、专业学习、求职就业、兴趣发展等全场景需求。

快捷导航

小黑屋
Copyright © 2026 学研领航 版权所有 陕ICP备2025077879号-1
关灯 在本版发帖 返回顶部
快速回复 返回顶部 返回列表