✍️ 周茂 , 陈箫翰 • 📅 2026-01-13

# trend2d

官方文档:

  trend2d

简介:

  将多项式拟合到 xyz[w] 数据，得到 z = f(x,y)

trend2d 从输入数据的前三列或前四列读取 x, y, z [及 w] 值，并利用加权最小二乘法 [Menke, 1989] 拟合回归模型 z = f(x,y) + e 。 该拟合可通过对数据进行迭代重新加权来实现稳健拟合。还可以查找 f(x,y) 中能显著减小 z 方差的项数。 n_model 的取值范围为 [1,10]，用于拟合如下形式的模型（类似于 grdtrend ）：

\[z(x,y) = m_1 + m_{2}x + m_{3}y + m_{4}xy + m_{5}x^2 + m_{6}y^2 + m_{7}x^3 + m_{8}x^{2}y + m_{9}xy^2 + m_{10}y^3.\]

必须指定 `-N` n_model ，即所使用的模型参数数量。 `-N`4 拟合双线性趋势， `-N`6 拟合二次曲面，以此类推。 追加 +r 以进行稳健拟合。在这种情况下，程序将基于稳健尺度估计迭代地对数据重新加权，以收敛到对异常值不敏感的解。 当从具有非零均值的“残差”中分离出“区域”场时（例如区域表面上的局部山丘），这可能会非常有用。

## 语法

gmt trend2d [ table ] `-F` xyzmrw|p `-N` n_model[+r] [ `-C` condition_number ] [ `-I`[confidence_level] ] [ `-V`[level] ] [ `-W`[+s|w] ] [ `-bi` binary ] [ `-bo` binary ] [ `-d` nodata[+c col] ] [ `-e` regexp ] [ `-f` flags ] [ `-h` headers ] [ `-i` flags ] [ `-q` flags ] [ `-s` flags ] [ `-w` flags ] [ `-:`[i|o] ] [ --PAR=value ]

## 输入数据

table

  一个或多个ASCII或二进制表数据。若不提供表数据，则会从标准输入中读取。

## 必须选项

-F

-F xyzmrw|p

  从集合 {x y z m r w} 中按任意顺序选择最多六个字母，以创建 ASCII [或二进制] 输出列。 x = x, y = y, z = z, m = 模型 f(x,y), r = 残差 z - m, w = 拟合所用的权重。

  使用 -Fp 仅报告模型参数。

-N

-N n_model[+r]

  指定模型中的项数 n_model 。追加 +r 以进行稳健拟合。例如，稳健的双线性模型为 -N 4+r。

## 可选选项

-C

-C condition_number

  设置矩阵解的最大允许条件数。 trend2d 拟合一个阻尼最小二乘模型，仅保留部分特征值谱，使得最大特征值与最小特征值的比值为 condition_number 。 [默认值：condition_number = 1.0e06]。

-I

-I[confidence_level]

  从 1 开始迭代增加模型参数的数量，直到达到 n_model，或者模型的方差减小在 confidence_level 置信水平下不显著。 可以仅设置本选项而不附加数字。在这种情况下，拟合将迭代进行，默认置信水平为 0.51。 或者在 0 到 1 之间设置 confidence_level 。请参阅备注部分。

-V

-V[level]

  设置 verbose 等级 [w]。 (参数详细介绍)

-W

-W[+s|w]

  从输入数据第 4 列读取权重，进行加权最小二乘拟合，或在进行迭代稳健拟合时以这些权重开始。 追加 +s 则把读取的数据当作一倍 sigma 的不确定度，并将权重设为 1/sigma2 。 +w 则为直接使用读到的权重。

-bi

-bi[ncols][type][w][+l|b]

  控制二进制文件的输入格式。 (参数详细介绍)

> 默认值为 3 列，如果设置了 `-W` 则为 4 列。

-bo

-bo[ncols][type][w][+l|b]

  控制二进制文件的输出格式。 (参数详细介绍)

> 默认值为 `-F` 指定的 1-6 列。

-d

-d[i|o]nodata

  将某些特定值当作 NaN。 (参数详细介绍)

-e

-e[~]"pattern" | -e[~]/regexp/[i]

  筛选或剔除匹配指定模式的数据记录。 (参数详细介绍)

-f

-f[i|o]colinfo

  显式指定当前输入或输出数据中每一列的数据类型。 (参数详细介绍)

-h

-h[i|o][n][+c][+d][+m segheader][+r remark][+t title]

  在读/写数据时跳过文件开头的若干个记录。 (参数详细介绍)

-i

-i cols[+l][+s scale][+o offset][,...][,t[word]]

  对输入的数据进行列选择以及简单的代数运算。 (参数详细介绍)

-q

-q[i|o][~]rows[+c col][+a|f|s]

  对输入或输出的行进行筛选，该选项在一定程度上可以代替 gawk 的某些功能。 (参数详细介绍)

-s

-s[cols][+a|+r]

  设置 NaN 记录的处理方式。 (参数详细介绍)

-w

-wy|a|w|d|h|m|s|c period[/phase][+c col]

  将输入坐标转换为循环坐标。 (参数详细介绍)

-:

-:[i|o]

  交换输入或输出数据的前两列。 (参数详细介绍)

-^ 或 -

  显示简短的帮助信息，包括模块简介和基本语法信息（Windows下只能使用 -）

-+ 或 +

  显示帮助信息，包括模块简介、基本语法以及模块特有选项的说明

-? 或无参数

  显示完整的帮助信息，包括模块简介、基本语法以及所有选项的说明

--PAR=value

  临时修改GMT参数的值，可重复多次使用。参数列表见 配置参数

## 注意事项

x 和 y 的定义域将被平移并缩放至 [-1, 1]，基函数由切比雪夫（Chebyshev）多项式构建。 在待求逆矩阵的形式上，这些函数具有数值优势，能够得到更精确的解。 在 trend2d 的许多应用场景中，用户的数据在 x-y 平面上大致沿一条与 x 轴有夹角的直线分布（例如沿公路或船迹采集的数据）。 在这种情况下，通过旋转 x-y 轴可以提高精度。 trend2d 不会寻找此类旋转；相反，它可能会发现矩阵问题存在秩亏（deficient rank）。 然而，解是利用广义逆（generalized inverse）计算的，结果应该仍然没问题。如果 trend2d 显示秩亏，用户应通过图形方式检查结果。 注意：使用 `-V` 列出的模型参数是切比雪夫系数；它们在数值上并不等同于上述等式中的 m 系数。 上述描述是为了让用户能够将 `-N` 与多项式曲面的阶数相匹配。有关切比雪夫多项式的求值，请参阅 grdmath。

-N n_model+r （稳健）和 `-I` （迭代）选项通过 F 检验来评估模型失拟卡方值（Chi-Squared）改善的显著性。 默认置信限制设置为 0.51，可以通过 `-I` 选项进行修改。 用户可能会惊讶地发现，在大多数情况下，通过增加模型项数所实现的方差减小在极高置信度下并不显著。 例如，在 120 个自由度下，卡方值必须降低 26% 或更多，才能在 95% 置信水平下具有显著性。 如果只要卡方值在减小就想继续迭代，请将 confidence_level 设置为 0。

为了使稳健（robust）方法生效，需要一个较低的置信限制（例如默认值 0.51）。该方法通过迭代地对数据重新加权来减小异常值的影响。 权重基于中位数绝对偏差（Median Absolute Deviation）和 Huber [1964] 提出的公式，当模型残差符合无异常值的正态分布时，其效率为 95%。 这意味着在每次迭代中，异常值的影响仅略微减小。因此，卡方值的减小并不十分显著。 如果该过程需要多次迭代才能成功减弱它们的影响，则 F 检验的显著性水平必须保持在较低水平。

## ASCII 格式精度

ASCII 格式输出数据通过 gmt.conf 配置文件控制。控制经纬度格式的参数为 FORMAT_GEO_OUT ；控制绝对时间的的参数包括 FORMAT_DATE_OUT 和 FORMAT_CLOCK_OUT ；普通浮点数通过参数 FORMAT_FLOAT_OUT 控制。上述格式控制可能会导致精度损失，这会在下游计算中导致一些问题。 如果用户需要保证数据精度，则应考虑将数据写为二进制文件，或者使用 FORMAT_FLOAT_OUT 指定更多的有效数字。

## 示例

通过普通最小二乘法从 data.xyz 中移除平面趋势:

    gmt trend2d data.xyz -Fxyr -N3 > detrended_data.xyz

若仅报告这三个系数:

    gmt trend2d data.xyz -Fp -N3 > parameters.txt

若要使上述平面趋势对异常值具有稳健性:

    gmt trend2d data.xzy -Fxyr -N3+r > detrended_data.xyz

若要找出拟合 data.xyz 时，稳健插值模型中（最多 10 项）有多少项是显著的:

    gmt trend2d data.xyz -N10+r -I -V

## 参考文献

Huber, P. J., 1964, Robust estimation of a location parameter, Ann. Math. Stat., 35, 73-101.

Menke, W., 1989, Geophysical Data Analysis: Discrete Inverse Theory, Revised Edition, Academic Press, San Diego.

## 相关模块

grdmath, grdtrend, trend1d