3、测风数据质量控制:野点剔除、缺测数据插补、数据完整性检查、数据合理性检验

各位同行,咱们今天聊聊测风数据质量控制。说实话,我见过太多项目因为数据质量不过关,最后算出来的发电量偏差大得离谱。你想想看,基础数据都不靠谱,后面再花哨的订正方法也是白搭。

测风数据质量控制,说白了就是给原始数据“洗澡”。把脏东西洗掉,把缺的补上,最后检查洗干净没有。我个人的习惯是,拿到数据后先不急着做长期订正,而是花至少半天时间做质量控制。这一步省不得。

核心原则:数据质量控制不是可选项,而是必选项。宁可多花时间在数据清洗上,也不要后期返工。

3.1 野点剔除:把“疯子”数据揪出来

野点是什么?就是那些明显不符合物理规律的数据点。比如风速突然从5m/s跳到50m/s,然后又瞬间掉回来。我在项目中遇到过,某测风塔的10分钟数据里,风速最大值竟然标到了99.9m/s——这明显是传感器故障或者传输错误。

野点剔除通常分两步走:

  1. 阈值法:设定合理的上下限。比如风速0~60m/s,风向0~360°,温度-40~60℃。超出这个范围的,直接标记为无效。
  2. 变化率法:检查相邻数据点的变化幅度。比如10分钟内风速变化超过20m/s,基本可以判定为野点。

我的小技巧:阈值不要设得太死。比如高海拔地区风速可能达到40m/s以上,这时候用0~60m/s的阈值就比0~40m/s更合理。我曾经在青藏高原的项目中,把风速上限调到了70m/s,结果发现确实有几次强风记录是真实的。

下面是我常用的野点剔除代码片段:

# 野点剔除示例(Python伪代码)
def remove_outliers(df, col='ws', lower=0, upper=60, max_change=20):
    # 阈值法
    mask = (df[col] >= lower) & (df[col] <= upper)
    # 变化率法
    df['change'] = df[col].diff().abs()
    mask &= (df['change'] <= max_change)
    df.loc[~mask, col] = np.nan
    return df

3.2 缺测数据插补:别让数据断档

测风数据难免会有缺失。可能是设备故障、通讯中断、或者维护期间的数据空白。缺测数据怎么补?这里有几个常用方法:

插补方法 适用场景 注意事项
线性插值 短时间缺失(<2小时) 不适合风速剧烈变化时段
相邻塔相关法 有邻近测风塔数据 需要验证相关性(R²>0.8)
季节平均法 长期缺失(>1天) 会平滑掉极端事件
机器学习法 复杂地形、多变量 需要足够训练数据

我个人最常用的是相邻塔相关法。为什么?因为风是有空间相关性的。如果附近有另一个测风塔,而且两个塔的数据相关性很好,那用这个方法来补数据是最靠谱的。

避坑指南:我曾经犯过一个错误——用线性插值补了6个小时的缺测数据。结果那6小时正好是一次强风过程,插值出来的风速比实际低了将近40%。后来我学乖了:缺测超过2小时,坚决不用线性插值。

3.3 数据完整性检查:看看数据够不够“完整”

完整性检查,说白了就是看看你的数据到底有多少是有效的。行业里有个不成文的规定:有效数据率至少要达到90%以上,才能用于后续分析。

完整性检查主要看三个指标:

  • 时间覆盖率:实际采集数据的时间占总时间的比例。比如一年8760小时,你采集了8000小时,覆盖率就是91.3%
  • 数据有效率:剔除野点和无效数据后,有效数据占总数据的比例
  • 季节分布:检查数据是否覆盖了所有季节。如果只采集了夏季的数据,那冬季的风况就完全不知道了

我的经验:完整性检查最好按月来做。如果某个月的有效数据率低于80%,这个月的数据基本就不能用了。我一般会把这个月整体标记为“低质量”,在后续分析中给予较低的权重。

3.4 数据合理性检验:用常识判断数据是否“合理”

合理性检验是最后一道关。有些数据虽然通过了前面的检查,但仔细一看还是有问题。比如:

  • 风速和风向的对应关系是否合理?比如北风时风速应该偏大,南风时偏小(这要看具体地形)
  • 风速的日变化规律是否正常?白天风速大、晚上风速小,这是大多数地区的规律
  • 风速和温度的关系是否合理?通常温度梯度大时风速也大

我常用的合理性检验方法:

  1. 风速-风向玫瑰图对比:把实测数据和长期参考数据(比如ERA5)的风玫瑰图放在一起对比。如果形状差异太大,说明数据可能有问题
  2. 风速概率分布检查:风速通常服从Weibull分布。如果实测数据的分布形状明显偏离Weibull分布,就要警惕了
  3. 极端事件验证:如果数据里出现了极端风速(比如50年一遇的),需要去查一下当时有没有对应的天气系统

一个小技巧:我每次做完合理性检验,都会把数据画成时间序列图,肉眼扫一遍。虽然听起来很原始,但确实能发现一些算法发现不了的问题。比如有一次我注意到某个月的风速曲线特别“平”,后来发现是传感器被冰覆盖了。

知识体系框架

下面这张图概括了测风数据质量控制的完整流程:

测风数据质量控制流程 原始测风数据 第一步:野点剔除 阈值法 + 变化率法 第二步:缺测数据插补 线性插值 / 相关法 / 季节平均 第三步:数据完整性检查 时间覆盖率 / 数据有效率 / 季节分布 第四步:数据合理性检验 风玫瑰对比 / 概率分布 / 极端事件验证

嗯,以上就是测风数据质量控制的完整内容。记住,数据质量决定了你后续所有分析的可靠性。我见过太多项目因为这一步没做好,最后算出来的发电量偏差超过10%。所以,别嫌麻烦,把这一步做扎实了。