Mann-Kendall趋势检验
这个方法是做什么的
用非参数的方式回答“这条序列在观测期内有没有单调的上升或下降”。做法是把所有 i<j 的观测对拿出来数符号:后面比前面大记 +1、小记 −1,加总得到统计量 S,再标准化成 Z 求 p 值。因为只用大小关系不用具体数值,它对异常值稳健,也不要求正态或等方差。
除了有没有趋势,报告还给出趋势有多大。Sen's 斜率是所有成对斜率的中位数,含义是“每单位时间平均变化多少”,并按 Gilbert 次序统计量法给 95% 置信区间;效应量是 Kendall's tau-b,与 p 值同源但不随样本量放大。卡④ 还附了两项事后分析:把序列对半切开各做一次 MK,看趋势在全期内稳不稳定;以及 Pettitt 变点检验,因为一次阶跃式的水平跳变同样会被 MK 判成“显著趋势”。读这份报告的着眼点在于三个数分工不同——p 说有没有、Sen 斜率说多大、tau 说强不强,把它们混着讲是最常见的表述错误。
需要准备什么数据
- 放入[定量]观测序列:不限
- 放入[可选]时间标签(可选):不限
数据要求
- 数据表至少 10 行。
- 单列缺失率不超过 20%。
- 不接受取值全都一样的列(零方差列没有可分析的变异)。
以上条目由系统从该方法的校验规则直接生成,与上传数据时的实际拦截规则一致。
什么时候用它
- 环境、水文、气象这类不服从正态且常有异常值的长期监测数据
- 想给出一个“每年平均上升多少”的稳健速率,而不只是显著不显著
- 数据有截尾观测或量纲不规整,参数方法不好用
- 需要一个不依赖分布假定、审稿人普遍接受的趋势检验
前提是观测等间隔并且按时间先后排列。这个模块不替你排序:拖入的“时间标签”列只用于标注,卡① 的“时间跨度”行按首行到末行显示,行序乱了会出现终点早于起点的字样——把演示数据打乱后,那一行就变成了“2021-08 → 2019-06”,同时 Z 从 9.978 掉到 −1.236。行数下限 10 行,9 行会被直接拦下;卡① 用的正态近似经验下限则是 8。
什么时候不要用它
- 序列先升后降或呈 U 形:MK 检验的是单调趋势,非单调变化它不敏感,应改看「季节分解模型」拆出趋势项,或用「突变点检测(Pettitt)」定位拐点。
- 你要的是未来的预测值:MK 只描述已发生的趋势、不外推,用「时间序列分析(ARIMA)」或「指数平滑模型」。
- 数据本身满足正态且你要的是可解释的斜率与置信带:用「线性回归 (最小二乘法)」,它给完整的诊断与预测区间。
- 想比较的是两组或多组之间的差异而不是随时间的变化:用「多独立样本Kruskal-Wallis检验」。
- 关心的其实是序列平不平稳、要不要差分:用「单位根检验(ADF)」。
- 只想看看有没有随机性以外的排列规律:用「游程检验」。
容易误读的地方
- 序列自相关会让 p 值偏小,Z 有可能虚高一个量级。 MK 的方差公式假定观测相互独立,时间序列几乎总是违反这一条。演示数据的秩序列 lag-1 自相关 r₁=0.7524,远超 ±0.1789 的显著界;按 Hamed-Rao (1998) 修正方差后,Z 从 9.978 降到 3.8903。这次两者结论一致,但证据强度差得很远。卡① 一旦报出自相关显著,应当以修正后的 Z 和 p 为准,并在论文里写明做过这项修正。
- 一次阶跃也会被判成“显著趋势”。 MK 只看成对符号,一段低水平后面接一段高水平,符号统计上与缓慢爬升没有区别。演示里 MK 给出极显著的上升,同一批数据的 Pettitt 检验又在第 72 期检出显著水平突变(变点前后中位数分别是 32.5495 与 47.0230)。这种情况下报一个全期 Sen 斜率是有误导性的,应当分段建模,或改以突变的幅度作为主要结论。
- Sen 斜率的单位是“每单位时间”,等间隔被破坏它就不成立。 斜率的分母是两个观测的序号之差,不是真实时间差。如果中间缺了几期而你按行剔除了,剩下的观测在时间轴上不再等距,同一个“1 个单位”有时是一个月、有时是半年,斜率与它的置信区间都会失真。
- 斜率不为零不等于存在趋势。 成对斜率的中位数几乎不会正好是 0,方向也总是有的。判定“有没有趋势”只能看 p 值或 Sen 斜率的置信区间是否含 0,报告卡② 的结论文案专门写了这一句。把一个 p=0.4 的正斜率说成“呈上升态势”是这个模块最容易出的表述问题。
- 分段 MK 是探索性的,两段不一致不要当成结论。 卡④ 的表注写明这两次检验没有做多重比较校正。前后半段方向不同或显著性差很多时,它的正确用法是提示“趋势可能不稳定、值得进一步查”,而不是直接宣布“前期无趋势、后期有趋势”。
报告里有什么
- 输出结果一:数据概览与前提检验
- 输出结果二:Mann-Kendall 趋势检验主结果
- 输出结果三:序列走势与 Sen 趋势线
- 输出结果四:效应量与事后分析
- 输出结果五:结论与学术表述
折线为原始观测序列,红色虚线为 Sen's 斜率趋势线;可切换为表格查看逐期观测值、趋势拟合值与偏离量。