ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Python机器学习实战:绘制多面板方差分解维恩图

Python机器学习实战:绘制多面板方差分解维恩图 在科研论文的配图中经常需要表达这样一层含义一个连续型响应变量比如土壤有机碳含量究竟是被气候、土壤化学性质这类环境变量解释得多还是被样点之间经度、纬度、多尺度位置关系这类空间信息解释得多。把空间变量与环境变量的解释率贡献做成多面板方差分解韦恩图是当前地理、生态、土壤和遥感领域里很常见的表达方式。它并不复杂核心是先计算出环境组和空间组各自模型以及合并模型的解释率再按唯一解释率、共享解释率和未解释率的公式换算最后用韦恩图把结果画成期刊可用的高质量图。这篇文章使用的技术栈是 Python 机器学习与 Python 科研绘图。文章会从方差分解的数学关系讲起给出一套可复现的样本数据展示如何在 sklearn 中用交叉验证得到稳定的 R²再通过 matplotlib 与 matplotlib-venn 绘制多面板维恩图最后补充期刊配图常见的参数、保存格式和排查路径。你可以把这套代码直接套用到自己的连续型响应变量上只要把输入列替换成实际的环境变量、空间坐标和目标变量即可。1. 方差分解维恩图一张图如何讲清两组变量的解释率1.1 从一个响应变量到三个回归模型方差分解的基本思路并不难。假设你有一个响应变量Y例如某个格网取样点的土壤有机碳含量。解释变量分成两组一组是环境变量E另一组是空间变量S。如果想量化两组变量对Y的解释能力一般会运行三个回归模型只使用环境变量E得到模型解释率R²(E)只使用空间变量S得到模型解释率R²(S)同时使用环境变量与空间变量ES得到全模型解释率R²(ES)。有了这三个 R² 之后可以拆成四个部分韦恩图组成部分计算公式含义环境唯一贡献R²(ES) - R²(S)去掉空间信息后环境变量仍然单独贡献的部分空间唯一贡献R²(ES) - R²(E)去掉环境信息后空间结构仍然单独贡献的部分共享贡献R²(E) R²(S) - R²(ES)环境变量与空间变量都能解释的重复部分未解释部分1 - R²(ES)当前模型没有解释掉的方差比例在韦恩图中左边圆代表环境变量右边圆代表空间变量。左边圆独有区域写环境唯一贡献右边圆独有区域写空间唯一贡献中间重叠区域写共享贡献。未解释部分不属于任何一个圆通常写在两圆外侧或图注里。这里要特别说明一点共享贡献高不等于环境变量对空间变量有因果作用也不等于空间变量对环境变量有因果作用。它更多反映两套变量之间存在相关性可能由一个共同的地理梯度造成。例如温度随纬度呈梯度变化那么既可以用空间坐标解释也可以用温度数据解释这部分方差就会落到韦恩图的共享区域。1.2 空间组和环境组的分工不能随便定很多人拿到数据后第一个问题是我到底该把哪些列放进环境组把哪些列放进空间组。这个拆分会影响整张图的含义所以落笔前应该在方法部分写清楚变量组的定义。环境组一般指可测量的、带有生态或物理意义的样本属性典型列包括年均温、年降水量、季节温差土壤 pH、有机质、黏粒含量、阳离子交换量坡度、坡向、海拔、地形湿度指数氮磷钾等养分含量。空间组一般用来表达样点之间的“位置结构”。最朴素的做法是直接把经度和纬度放进去但这只能表达与坐标近似线性相关的趋势无法覆盖多尺度空间结构。提升空间表达能力时可以把坐标扩展到多项式特征也可以使用基于距离矩阵的主坐标邻体矩阵特征也就是生态学中常见的 PCNM 或 MEM 特征。对于普通机器学习配图场景先用经纬度及它们的二次多项式作为空间特征基本能表达一次趋势加部分弯曲结构如果期刊分析方法要求严格则需要补充空间特征构建说明。空间组的常见表达方式可以按复杂度对比如下方法表达能力实现成本适用场景原始经纬度只表达线性趋势最低快速预览变量较少时经纬度加多项式能表达一次与二次趋势、交互趋势低常规论文示例可读性好距离矩阵后再做主坐标分析能表达多尺度空间结构高生态学和土壤学常见需要交代截断距离空间基函数表达不同尺度连续变化高地理加权或空间回归的前置分析实际项目中建议先用简单的坐标多项式完成流程验证确认 R² 没有异常后再切换到更复杂的空间特征。不要一开始就生成上百个空间特征否则小样本下非常容易把噪声也拟合进去R² 看着很高但拆出来的唯一贡献和共享贡献完全不可靠。1.3 多面板布局适合比较多个响应变量单张韦恩图只能表达一个响应变量。比如你想回答土壤有机碳、全氮、微生物量碳、植被指数分别受环境和空间影响的程度就需要每个响应变量画一个小图最后拼成一个 2x2 或 1x3 的多面板图。多面板布局的优势在于读者能迅速比较不同响应变量之间的差异如果第一个面板的共享区域很大说明环境变量和空间信息高度重叠如果第二个面板的空间唯一贡献占主导说明响应变量可能受空间连续过程控制如果第三个面板的环境唯一贡献明显说明去掉空间结构后样点环境差异仍然重要如果四张图的未解释率都很高则要考虑是否缺少关键预测变量或者响应变量本身随机性较强。期刊审稿人关心的往往不是图有多漂亮而是你有没有正确解释这些重叠区域。因此多面板图要配合图注说明每个分图代表的响应变量、样本量、模型方法和分解规则。2. 建图前的数据准备与三变量分解计算2.1 环境准备和依赖安装本流程主要依赖以下 Python 包numpy和pandas数据生成和表格计算scikit-learn模型建立、交叉验证与 R² 计算matplotlib底图画布与保存图片matplotlib-venn绘制双集合维恩图pillow导出 TIF 图片时可选。安装命令可以直接使用 pippip install numpy pandas scikit-learn matplotlib matplotlib-venn pillow安装完成后可以运行一段验证代码确认所有包都已经正确导入python
返回列表