4. 产量曲线误差判读的指标体系
历史拟合中“曲线看起来差不多”不能作为验收依据。要把拟合好坏说清楚,必须把观测产量与模拟产量之间的差异压缩成一组可比较、可复现的数值指标。本节围绕绝对误差、相对误差、平均误差与均方根误差四类基础指标展开,并给出在 Eclipse 输出数据上直接计算的方法与判读阈值。
一、先约定符号与参照方向
设某口井或某个区块在时间步 i(i = 1…N)上的实测产量为 qobs,i,Eclipse 模拟产量为 qsim,i。全文统一采用“模拟减实测”作为误差方向:
ei = qsim,i − qobs,i
因此 ei > 0 表示模拟偏高(模型产得太多),ei < 0 表示模拟偏低。这一符号约定在后续所有指标、图表和判读中保持一致,切换参照系时必须显式说明。油、气、水三相分别独立计算,不混算。
二、四类基础指标的定义
绝对误差是最原始的单点差异,即上面的 ei,单位与产量相同(如 m³/d 或 10⁴m³/d)。它直观但不可跨井、跨相横向比较,因为不同井的产量基数差异很大。
相对误差把绝对误差归一化到实测值上:
REi = (qsim,i − qobs,i) / qobs,i × 100%
相对误差解决了量纲与基数问题,但有两个陷阱:一是实测值接近零(如关井、见水初期)时分母极小,相对误差会爆炸;二是正负误差在求和时会相互抵消。因此工程上通常对分母做保护,例如 qobs,i 低于该井历史最大产量的 5% 时,该点不参与相对误差统计,只保留绝对误差。
平均误差(也称偏差,Bias)反映系统性偏高或偏低:
ME = (1/N) · Σ ei
ME 的绝对值小,说明模型整体上没有系统性偏移;但 ME 接近零并不代表拟合好,因为正负误差可能大幅抵消。所以 ME 必须与均方根误差配对使用。
均方根误差(RMSE)衡量误差的整体离散程度,对大误差更敏感:
RMSE = √[ (1/N) · Σ ei² ]
RMSE 恒为非负,单位与产量相同。它惩罚大偏差,因此能捕捉“大部分点贴合、少数点严重偏离”的情形,这正是历史拟合中最需要警惕的问题。
此外,工程上常补充平均绝对相对误差 MAPE = (1/N)·Σ|REi|,用于跨井横向比较;以及决定系数 R²,用于判断模拟曲线对实测趋势的解释能力。R² 对趋势敏感但对幅值偏差不敏感,不能单独作为验收指标。
三、在 Eclipse 输出数据上直接计算
Eclipse 的 Summary 文件按时间步输出 WOPR、WGPR、WWPR 等向量,实测数据通常来自生产日报或试井解释。计算前必须做两件事:一是把两者对齐到同一时间轴(建议统一为月步,避免日数据噪声放大 RMSE);二是剔除关井、修井、停产等非模型可控时段,否则这些点的相对误差没有物理意义。
下面是一段可直接复用的 Python 计算示例,输入为两个等长的产量序列(示例数据为教学假设,非实测结果):
import numpy as np
# q_obs: 实测月产量, q_sim: Eclipse 模拟月产量, 单位 m3/d
q_obs = np.array([120.0, 118.0, 115.0, 110.0, 104.0, 98.0])
q_sim = np.array([126.0, 121.0, 119.0, 112.0, 108.0, 103.0])
e = q_sim - q_obs # 绝对误差, 正=模拟偏高
mask = q_obs >= 0.05 * q_obs.max() # 剔除低产点的相对误差
re = np.where(mask, e / q_obs * 100, np.nan)
ME = e.mean()
RMSE = np.sqrt((e ** 2).mean())
MAPE = np.nanmean(np.abs(re))
R2 = 1 - (e ** 2).sum() / ((q_obs - q_obs.mean()) ** 2).sum()
print(f"ME={ME:.2f} RMSE={RMSE:.2f} MAPE={MAPE:.2f}% R2={R2:.3f}")
以上示例数据代入后,ME ≈ +4.17 m³/d,RMSE ≈ 4.36 m³/d,MAPE ≈ 3.7%,R² ≈ 0.94。这组结果的含义是:模型整体系统性偏高约 4 m³/d,离散度与偏差量级相当,说明偏差以系统性为主而非随机波动,应优先检查压力水平或采液指数,而不是逐点调参。
四、建立量化判读标准
指标算出来只是数字,必须落到阈值上才能判读。阈值不能一刀切,应按“单井—井组—区块”三级分别设定,并区分油、气、水三相。下表给出一套可直接套用的参考标准(适用于中高含水期常规砂岩油藏,示例性质,实际项目应结合资料丰度调整):
| 层级 | 指标 | 优秀 | 合格 | 需重拟合 |
|---|---|---|---|---|
| 单井 | MAPE | ≤5% | 5%–10% | >10% |
| |ME| / 平均产量 | ≤3% | 3%–8% | >8% | |
| R² | ≥0.95 | 0.85–0.95 | <0.85 | |
| 井组 | RMSE / 平均产量 | ≤5% | 5%–12% | >12% |
| MAPE | ≤8% | 8%–15% | >15% | |
| 区块 | RMSE / 平均产量 | ≤5% | 5%–10% | >10% |
| R² | ≥0.90 | 0.80–0.90 | <0.80 |
使用这张表时有三个关键约定。第一,归一化:RMSE 和 ME 必须除以该对象历史平均产量,否则高产井的绝对误差天然偏大,无法横向比较。第二,分相判读:油相拟合好不代表水相拟合好,含水率上升阶段的 WWPR 往往是拟合难点,必须单独设阈值。第三,分段判读:把历史期切成投产初期、稳产期、递减期三段分别计算指标,因为整体 RMSE 合格可能掩盖某一阶段的严重偏离。
五、从指标到行动
指标体系的最终价值是驱动拟合动作。建议按以下顺序使用:先用 RMSE 和 ME 判断偏差性质,再用 MAPE 定位最差的井,最后用 R² 确认趋势形态是否被破坏。若某口井 MAPE 超标但 R² 很高,通常是幅值问题(如采液指数偏大);若 R² 低而 MAPE 尚可,则多为趋势或见水时间问题,应回到相渗曲线和含水饱和度场。所有指标应随拟合迭代记录成表,形成可追溯的收敛过程,而不是只在最终报告里给一个数字。