相关性分析(7):热力图怎么读?一眼看懂多个变量之间的关系

统计

当数据集里只有两三个变量时,做相关分析很轻松。但如果数据里有 8 个、10 个甚至二三十个变量,仅仅看“相关系数表”往往会让人眼花缭乱:

  • 哪些变量关系强?
  • 哪些变量可能重复?
  • 因变量最可能被哪些变量影响?
  • 是否存在多重共线性风险?

这时,一张热力图(Heatmap)就能让你瞬间抓住整体结构。热力图正在成为学术论文、商业分析和数据科学中最常用的可视化方法之一。

但很多读者其实并不了解:

热力图远不只是“颜色好看”,它更是一个强大的变量结构洞察工具。

这一篇,我们通过一个真实案例,系统讲清楚:

  • 热力图是什么
  • 颜色代表什么
  • 如何从热力图看出变量结构
  • 如何用热力图判断共线性
  • 如何在论文中解释热力图
  • 热力图最常见的误区

【一】什么是热力图?为什么我们需要它?

热力图是一种用颜色深浅表示数值大小的可视化工具。在相关分析中,每个格子的颜色代表一个相关系数:

  • 深红色:强正相关
  • 深蓝色:强负相关
  • 白色或浅色:弱相关或没有明显关系

与纯数字表格相比,热力图的最大优势是:

它能让你一眼看到“整体结构”,而不仅是某一个数字。

例如,在城市创新、数字经济、企业绩效、消费者行为等分析中,热力图能快速告诉你:

  • 哪些变量属于同一组结构
  • 哪些变量可能冗余
  • 哪些变量值得加入回归
  • 哪些变量可能带来多重共线性

【二】通过案例认识热力图:广告点击行为数据

以下案例,是一个经典的广告点击行为分析:

“案例为包含多个变量的数据集,时间范围从2016年到2017年,记录了用户的广告点击行为。数据集包括了多个变量,例如,用户的年龄、收入、每日上网时间、互联网使用时长、性别、城市、国家等。研究的主要目标是分析这些变量如何综合影响广告点击行为(是否点击广告)。请借助AI工具,画出这些变量的热力图,并进行简单分析;如果有些变量不能直接画出热力图,应当如何处理?”

数据包含以下变量:

  • DailyTimeSpentOnSite:每日在网站停留时间
  • Age:年龄
  • AreaIncome:用户所在地区的平均收入
  • DailyInternetUsage:每日互联网使用时长
  • Male:性别(0/1)
  • ClickedOnAd:是否点击广告(0/1)

研究目的很简单:

是什么影响了用户是否点击广告?

我们先用热力图做整体探索。下面的分析使用两张图:

图 1:包含性别变量的热力图

图片

图 2:去掉性别后的热力图

图片

【三】 如何解读热力图?以上述案例为例

(1)哪些变量最影响“是否点击广告”?

从热力图中可以看到:

① DailyTimeSpentOnSite → 与 ClickedOnAd 强负相关(深蓝)

说明:

  • 停留时间越长的用户越不愿意点广告
  • 老练用户看到广告更免疫

② DailyInternetUsage → 与 ClickedOnAd 负相关(蓝色)

  • 每天上网越久的用户越不爱点广告
  • 互联网“重度用户”更挑剔,这是广告数据中最常见的规律之一

③ Age → 与 ClickedOnAd 正相关(浅红)

  • 年龄越大越可能点广告
  • 年长用户更容易对广告产生兴趣

④ 白色或浅色代表什么?

在这个案例中,你也会看到一些“浅色或白色”的格子,例如:

  • AreaIncome 与 DailyTimeSpentOnSite
  • AreaIncome 与 DailyInternetUsage

这些浅色部分意味着:

两个变量之间的相关性很弱(|r| 接近 0),几乎不存在线性关系。

换句话说:

高收入地区的用户,并不会因为收入水平改变他们的上网时间或是否点击广告。

在后续建模中,这类变量的贡献通常较小,但可以作为控制变量保留。

👉 一句话小结:

重度网民不喜欢点广告,而年龄稍大的人反而更容易点击。
白色区域表示变量之间“几乎没有关系”,无需过度解读。

(2)变量之间是否存在明显“成组结构”?

热力图显示:

  • DailyTimeSpentOnSite 与 DailyInternetUsage → 显著正相关(红色)

说明:

  • 上网时间多 → 在网站上停留时间长
  • 两者反映用户的“互联网活跃度”结构

在回归模型中,这两个变量可能含义重复(冗余),需要谨慎同时放入。

(3)是否存在多重共线性风险?

  • 热力图中没有出现大面积深红(|r| > 0.8)的区域
  • 说明:当前变量之间的多重共线性不严重

这意味着后续进行:

  • 逻辑回归
  • 线性回归
  • 树模型解释

都比较安全,不会因为共线性导致系数异常或 t 值失真。

【四】热力图能提供的三大洞察(非常实用!)

用途 1:发现“成组变量结构”

例如:

  • 用户活跃度类变量——上网时长、停留时间
  • 区域经济变量——收入、消费水平
  • 社会经济类指标——教育、GDP(你城市创新案例中常见)

成组结构意味着:

  • 变量可能冗余
  • 可以只选其中一个
  • 或做主成分分析、因子分析

用途 2:提前判断多重共线性(在回归之前)

热力图比 VIF 更直观:

  • 如果两个变量深红(r>0.8),基本就是严重共线性
  • 如果是一片连续深红区域,就是“共线性片区”

你可以提前决定:

  • 哪些不一起放
  • 哪些应该合成指标
  • 哪些必须标准化或降维

用途 3:筛选变量,提高模型效率

热力图能告诉你:

  • 和因变量关系最强的(重点变量)
  • 和其他变量高度重合的(冗余变量)
  • 完全无关的(可删)

它非常适合放在论文、课堂作业、企业分析中使用。

【五】 如何正确阅读热力图?(三步判断法)

第一步:看整体结构

有没有“大片区域”颜色相似?
可能是一组结构(如教育-GDP-人口密度)。

第二步:看因变量对应那一列

“哪个格子最红或最蓝”?
那就是关键解释变量。

第三步:注意深红与深红

深红连成片 → 共线性
深蓝也要注意 → 强负相关结构

图片

【六】热力图常见误区

❌ 误区 1:把深红当成因果

深红只是“同步变化”。
并不是“前者导致后者”。

❌ 误区 2:热力图只识别线性关系

非线性关系(U 型、倒 U、分段)
都会被热力图显示为“浅色”。

❌ 误区 3:深红 ≠ 好,有时代表冗余

特别是在回归中:

  • 深红意味着重复信息
  • 会导致 VIF 高、系数不显著

【七】论文/报告中如何解释热力图?

下面是可以写入论文里的标准表达:

图 X 展示了核心变量之间的相关结构。可以看到,网站停留时间(DailyTimeSpentOnSite)与广告点击行为(ClickedOnAd)呈显著负相关(r < 0),说明停留时间越久的用户越不倾向于点击广告。每日互联网使用时长与点击行为也呈负相关,这与互联网“重度用户对广告更加免疫”的规律一致。此外,用户年龄与点击行为呈正相关,表明年龄较大的用户更容易被广告吸引。值得注意的是,变量之间未出现 |r|>0.8 的强相关,因此后续回归分析中的多重共线性风险较低。相关结构仅反映共变关系,不构成因果推断依据。

【八】不能直接画热力图的变量怎么办?

在本文的案例(广告点击行为数据)中,除了数值变量外,还有一些不能直接画热力图的字段,例如:

  • City(城市)
  • Country(国家)
  • Gender(如 Male / Female 字符型)
  • 设备类型、浏览器类型、广告来源渠道等分类变量

这些变量都是“非数值型”,而皮尔逊相关(Pearson r)本质上要求变量为 连续数值型,因此无法直接参与相关矩阵。

下面是处理方法(按应用频率排序)👇

方法 1:转换为虚拟变量(One-Hot Encoding)——最常用的方法

如果想把 City、Country、Gender 纳入热力图,可以将其转换为多个虚拟变量。

例如:

  • City_London(0/1)
  • City_Paris(0/1)
  • City_Shanghai(0/1)
  • City_Tokyo(0/1)

这样,每个虚拟变量都变成了二元数值,即可与其他变量计算 Pearson 相关。

在广告点击案例中:

  • 如果Gender存储为“Male/Female”,需要先转成二元变量(如 Male=1,Female=0)
  • City、Country 若类别太多,不建议全部one-hot(否则变量会爆炸)

👉 适用场景:变量类别不多、且与你的因变量可能有逻辑关系。

方法 2:使用“分类 ↔ 数值” 专用相关系数(不转换也能分析)

如果你的目的是理解“性别是否影响广告点击”,而不是画热力图,那么其实 不需要one-hot。

可以直接使用更合适的相关系数,例如:

  • 点双列相关(Point-Biserial):二分类 × 数值
  • Eta 系数(η):多分类 × 数值
  • Cramér’s V:分类 × 分类

这些方法可以分析关系,但无法放进同一张热力图。

👉 适用场景:只想知道变量之间是否有关联,而不是画整体结构图。

方法 3:对文本类变量进行预处理(更适用于推荐系统与画像分析)

例如:

  • 用户兴趣标签(例如 “sports, travel, game”)
  • 搜索关键词
  • 浏览页面类别

这些不能直接转换,需要先进行:

  • 文本清洗
  • 分词、词频统计
  • TF-IDF
  • 或 embedding(如 word2vec)

再将向量形式变量纳入模型或分析。

👉 热力图一般用于结构化变量,文本变量处理后不建议强行与结构化变量放在同一张热力图里。

方法 4:在某些情况下,不处理也可以——这点常被忽略

在许多论文情境中:

  • City、Country 类别很多(>20)
  • 类别本身没有研究意义
  • 类别之间没有固定顺序
  • 加入模型会造成干扰(高维稀疏)

这种情况下:

分类变量本身就不适合用于相关分析,也不适合纳入热力图。

例如广告点击案例中:

  • Country 类别很多且无序
  • 城市名称本身不会直接影响点击意愿
  • 在热力图中加入城市变量反而会模糊重点

👉 正确做法是:

作为控制变量在回归模型中加入,不用放进热力图。

可以在论文中这样写:

在数据集中,City和Country属于多类别的非数值变量,无法直接计算 Pearson相关,因此未纳入热力图。性别变量(Male)若以“Male/Female”字符存储,则需先转换为二元虚拟变量后才能参与相关分析。需要注意的是,多类别变量在相关结构中通常难以提供稳定信息,因此本研究主要对核心数值变量绘制热力图,以便更清晰地展示变量之间的线性关系结构。

【九】小结:热力图是进入回归之前最重要的工具之一

热力图的价值在于:

  • 看颜色,不看单个数字
  • 读结构,而不是读某一个 r
  • 快速筛选变量
  • 发现成组结构
  • 判断共线性
  • 帮助构建更稳健的模型

但要记住:

热力图帮你发现“关系”,不是判断“因果”。